Arduino Micro Elektronisk Bubble Level: 5 trin (med billeder)

Arduino Micro Elektronisk Bubble Level: 5 trin (med billeder)

Indholdsfortegnelse:

Anonim

Et år eller så tilbage byggede jeg en kamera pole niveau indikator, der brugte L.E.Ds til at angive vinklen af ​​tårnet som et visuelt hjælpemiddel. Det fungerede godt for det, jeg havde tænkt mig, men jeg har altid troet, at det kunne blive "jazzed up" lidt.

Efter at have hentet en lille Nokia 5110 LCD-skærm, besluttede jeg at genoptage mit elektroniske projekt.

Dette enkle projekt er resultatet. Jeg håber at nogen finder det nyttigt!

forsyninger:

Trin 1: Dele, der er nødvendige

til dette projekt skal du have følgende ….

1. En Arduino. (Jeg brugte en nano, men enhver arduino skulle fungere)

2. A Tilt sensor. (Jeg gik tilbage til Memsic 2125. Hovedsageligt fordi jeg havde noget praktisk.)

3. En Nokia 5110 LCD-skærm (billig og nem at finde!)

4. Ledninger. (Mange farverige WIRES!)

5. Brødbræt eller paraply.

Trin 2: Forsamlingen er enkel!

Montering er super let, fordi det hele er meningen at pege. Ingen separate komponenter som modstande, kondensatorer og så videre.

Jeg inkluderede en simpel pinout til Memsic 2125 Tilt sensor.

Nokia 5110 skærmenheder har pin-beskrivelserne silke screenet på dem.

Her er en pin til pin notering for hver del til Arduino (nano) i mit tilfælde …..

--------------------------------------

Arduino <------> Nokia LCD

GND ------------------- GND

5V -------------------- VCC

D4 --------------------- Lys

D5 --------------------- CLK

D6 --------------------- DIN

D7 --------------------- DC

D8 --------------------- CE

D9 --------------------- RST

Til Memsic 2125

GND ------------------ GND

5V ------------------ VCC

A4 ------------------ XOut

A5 ------------------- YOut

Trin 3: Hvordan virker det?

Hvad får det til at gå?

det korte svar er varme. Hældningssensoren er faktisk et lille kammer med 4 super små termometre rundt om det. som du vipper sensoren, stiger varmen, og termometrene måler temperaturforskellen. det er så simpelt! Elektronikken i chippen konverterer temperaturforskellene til en X- og Y-måling og sender dataene ud af X- og Y-stifterne.

Trin 4: Koden til at gøre det gå!

Koden for dette lille projekt er også ret simpelt.

Siden sensorudgangene er det signaler som X og Y værdier. Alt, hvad vi virkelig skal gøre, er at læse værdierne og konvertere dem til noget "rigtige verden", som vi kan vise på vores 5110 LCD.

Koden indstiller 5110-skærmen. Tegner et lille oksenøje og begynder derefter at læse x, y data fra memsic.

det gør et par mappings til at konvertere 3000 til 6000 (ish) output til 2 værdier.

Trin 1 kortlægger memsic-udgangen til en skala for displayet i både x og y (0-48) og (0-84), så vi kan vise og animere boblen omkring skærmen.

Der er også en seriel output, der sender de rå data til usb. du behøver ikke bruge den. men det er der hvis det er nødvendigt.

Den anden fase kortlægning skaler derefter displayskalaerne til -90 til 90 for X-ad Y-tekstetiketter på displayet for vinkler. (dette er en omtrentlig vinkeldisplay), vi bekymrer os ikke om nøjagtighed uden niveau. vi vil bare have en generel ide!

Her er koden ……

#omfatte // arduino micro led visuel niveau #include # include Adafruit_PCD8544 display = Adafruit_PCD8544 (5, 6, 7, 8, 9); // pin 2 - Seriel ur ud (SCLK) 5 // pin 3 - Serial data out (DIN) 6 // pin 4 - Valg af data / kommando (D / C) 7 // pin 12 - LCD chip select (CS) 8 // pin 11 - LCD reset (RST) 9 const int X = A4; // X-pin på m2125 const int Y = A5; // Y-pin på m2125 int i = 0; int dist, inv = 0; boolean stan = 0; void setup () {// opsæt seriel Serial.begin (9600); pinMode (X, INPUT); pinMode (Y, INPUT); display.begin (); display.setContrast (50); display.clearDisplay (); } tomrumssløjfe () {// læses i pulsdataene int pulseX, pulseY; int angleX, angleY; int accelerationX, accelerationY; pulseX = pulsIn (X, HIGH); pulseY = pulseIn (Y, HIGH); // kort data for nokia display accelerationX = map (pulseX, 3740, 6286, 48, 0); accelerationY = map (pulseY, 3740, 6370, 84, 0); // kortdata til rå vinkler angleX = map (accelerationX, 48,0, -90,90); angleY ​​= map (accelerationY, 0,84, -90,90); display.drawRect (0,0,84,48, SORT); display.drawLine (42, 0, 42, 48, BLACK); display.drawLine (0, 24, 84, 24, BLACK); display.drawCircle (42,24,10, SORT); // display bubble display.fillCircle (accelerationY, (accelerationX), 4, BLACK); display.setCursor (4,4); display.println ("X:" + String (angleX)); display.setCursor (4,38); display.println ("Y:" + String (angleY)); display.display (); display.clearDisplay (); // Send dataene til serienummeret, hvis vi gerne vil se, hvad der bliver rapporteret og / / mulig pc-brug senere Serial.print ("X"); Serial.print (pulseX); Serial.print ("Y"); Serial.print (pulseY); Serial.println (""); // forsinke datafeltet til at vi ikke overskrider den serielle forsinkelse (90); }

Trin 5: Lad os se, om det virker som vi forventer?

Efter alt vores hårde arbejde. Lad os se om det gør hvad vi forventer?

Det ser ud som om det virker!

Når den er installeret i batteridrevne tilfælde, er den klar til handling!