Arduino Micro Electronic Bubble Level: 5 kroków (ze zdjęciami)

Arduino Micro Electronic Bubble Level: 5 kroków (ze zdjęciami)

Spisu treści:

Anonim

Mniej więcej rok temu zbudowałem wskaźnik poziomu bieguna kamery, który używał liter L.E.D do wskazania kąta wieży jako pomocy wizualnej. To działało dobrze w tym, co zamierzałem, ale zawsze uważałem, że może być nieco „zafascynowany”.

Po podniesieniu małego wyświetlacza LCD Nokia 5110 postanowiłem powrócić do mojego projektu na poziomie elektronicznym.

Ten prosty projekt jest wynikiem. Mam nadzieję, że ktoś uzna to za przydatne!

Kieszonkowe dzieci:

Krok 1: Potrzebne części

do tego projektu potrzebujesz następujących ….

1. Arduino. (Użyłem nano, ale każda arduino powinna działać)

2. Czujnik pochylenia. (Wróciłem do Memsic 2125. Głównie dlatego, że miałem trochę pod ręką.)

3. Wyświetlacz LCD Nokia 5110 (niedrogi i łatwy do znalezienia!)

4. Przewody. (Wiele kolorowych WIRES!)

5. Deska do chleba lub perfboard.

Krok 2: Montaż jest prosty!

Montaż jest bardzo łatwy, ponieważ wszystko wskazuje na punkt. Brak oddzielnych komponentów, takich jak rezystory, kondensatory i tak dalej.

Dołączyłem prosty pinout do czujnika nachylenia Memsic 2125.

Jednostki wyświetlające Nokia 5110 mają na sobie opisy pinów.

Oto pin do pin list dla każdej części Arduino (nano) w moim przypadku …..

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

Arduino <------> Nokia LCD

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

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

D4 --------------------- Światło

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

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

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

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

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

Do Memsic 2125

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

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

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

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

Krok 3: Jak to działa?

Co sprawia, że ​​to idzie?

krótka odpowiedź to ciepło. Czujnik pochylenia jest w rzeczywistości małą komorą z 4 super malymi termometrami rozmieszczonymi wokół niego. podczas przechylania czujnika ciepło wzrasta, a termometry mierzą różnicę temperatur. to takie proste! Elektronika w chipie przekształca różnice temperatur w pomiary X i Y i wysyła te dane na kołki X i Y.

Krok 4: Kod do zrobienia!

Kod tego małego projektu również jest bardzo prosty.

Ponieważ czujnik wysyła sygnały jako wartości X i Y. Wszystko, co naprawdę musimy zrobić, to odczytać wartości i przekształcić je w coś „prawdziwego świata”, który możemy wyświetlić na naszym 5110 LCD.

Kod ustawia wyświetlacz 5110. Rysuje małe oko byka, a następnie zaczyna odczytywać dane x, y z memsic.

następnie wykonuje kilka mapowań, aby przekonwertować wyjście 3000 do 6000 (ish) na 2 wartości.

Etap pierwszy odwzorowuje wyjście memsic na skalę wyświetlaną zarówno w xiy (0-48), jak i (0-84), dzięki czemu możemy wyświetlać i animować bańkę wokół wyświetlacza.

Jest też wyjście szeregowe, które wysyła surowe dane do USB. nie musisz go używać. ale jest w razie potrzeby.

Mapowanie drugiego etapu skaluje następnie skale wyświetlania do -90 do 90 dla etykiet tekstowych X ad Y na wyświetlaczu dla kątów. (jest to przybliżony wyświetlacz kąta) nie martwimy się o dokładność bez poziomu. po prostu chcemy ogólnego pomysłu!

Oto kod ……

#zawierać // arduino mikro led poziom wizualny #include #include Adafruit_PCD8544 display = Adafruit_PCD8544 (5, 6, 7, 8, 9); // pin 2 - Wyjście zegara szeregowego (SCLK) 5 // Pin 3 - Wyjście danych szeregowych (DIN) 6 // pin 4 - Wybór danych / polecenia (D / C) 7 // pin 12 - Wybór chipa LCD (CS) 8 // pin 11 - resetowanie LCD (RST) 9 const int X = A4; // X pin na m2125 const int Y = A5; // Y pin na m2125 int i = 0; int dist, inv = 0; stan boolean = 0; void setup () {// skonfiguruj serial Serial.begin (9600); pinMode (X, INPUT); pinMode (Y, INPUT); display.begin (); display.setContrast (50); display.clearDisplay (); } void loop () {// odczyt danych pulsu int pulseX, pulseY; int angleX, angleY; int accelerationX, accelerationY; pulseX = pulseIn (X, HIGH); pulseY = pulseIn (Y, HIGH); // zmapuj dane dla przyspieszenia wyświetlania nokiaX = mapa (pulseX, 3740, 6286, 48, 0); przyspieszenieY = mapa (pulseY, 3740, 6370, 84, 0); // mapuj dane do surowych kątów angleX = mapa (przyspieszenie X, 48,0, -90,90); angleY ​​= mapa (przyspieszenie, 0,84, -90,90); display.drawRect (0,0,84,48, BLACK); display.drawLine (42, 0, 42, 48, BLACK); display.drawLine (0, 24, 84, 24, BLACK); display.drawCircle (42,24,10, CZARNY); // wyświetlanie bąbelka display.fillCircle (przyspieszenieY, (przyspieszenieX), 4, BLACK); display.setCursor (4,4); display.println („X:” + ciąg (angleX)); display.setCursor (4,38); display.println ("Y:" + ciąg (angleY)); display.display (); display.clearDisplay (); // Wyślij dane do portu szeregowego na wypadek, gdybyśmy chcieli zobaczyć, co jest raportowane i / lub możliwe użycie komputera później Serial.print („X”); Serial.print (pulseX); Serial.print („Y”); Serial.print (pulseY); Serial.println (""); // opóźnij przesyłanie danych, aby nie przekroczyć opóźnienia szeregowego (90); }

Krok 5: Zobaczmy, czy to działa Jak się spodziewamy?

Po całej naszej ciężkiej pracy. Pozwala zobaczyć, czy robi to, czego oczekujemy?

Wygląda na to, że działa!

Po zainstalowaniu w obudowie zasilanej bateryjnie będzie gotowy do działania!