- Wymagany materiał
- Zrozumienie modułu joysticka:
- Schemat obwodu:
- Programowanie połączenia joysticka:
- Widok symulacji:
- Sprzęt i działanie:
Urządzenia wejściowe odgrywają istotną rolę we wszelkich projektach elektronicznych. Te urządzenia wejściowe pomagają użytkownikowi w interakcji z cyfrowym światem. Urządzenie wejściowe może być tak proste jak przycisk lub tak skomplikowane, jak ekran dotykowy; różni się w zależności od wymagań projektu. W tym samouczku nauczymy się, jak połączyć joystick z naszym mikrokontrolerem PIC, joystick to fajny sposób na interakcję ze światem cyfrowym i prawie każdy używał go do grania w gry wideo w wieku dojrzewania.
Joystick może wydawać się wyrafinowanym urządzeniem, ale w rzeczywistości jest to po prostu połączenie dwóch Potencjometrów i przycisku. W związku z tym bardzo łatwo jest połączyć się z dowolnym MCU, pod warunkiem, że wiemy, jak korzystać z funkcji ADC tego MCU. Dowiedzieliśmy się już, jak używać ADC z PIC, więc byłoby to tylko obejściem dla połączenia Joysticka. Osobom, które są nowicjuszami, zaleca się zapoznanie się z powyższym projektem ADC, a także projektem sekwencji migania diod LED, aby ułatwić zrozumienie projektu.
Wymagany materiał
- PicKit 3 do programowania
- Moduł Joy Stick
- PIC16F877A IC
- 40 - uchwyt na pin IC
- Płyta Perf
- Crystal OSC 20 MHz
- Szpilki Bergstik
- Rezystor 220ohm
- 5-diod LED o dowolnym kolorze
- 1 zestaw do lutowania
- IC 7805
- Adapter 12V
- Przewody łączące
- Płytka prototypowa
Zrozumienie modułu joysticka:
Joysticki są dostępne w różnych kształtach i rozmiarach. Typowy moduł joysticka pokazano na poniższym rysunku. Joystick to nic innego jak kilka potencjometrów i przycisk zamontowany na inteligentnym mechanicznym układzie. Potencjometr służy do śledzenia ruchów joysticka w osi X i Y, a przycisk służy do wykrywania naciśnięcia joysticka. Oba Potencjometry wyprowadzają napięcie analogowe, które zależy od położenia joysticka. Kierunek ruchu możemy uzyskać, interpretując te zmiany napięcia za pomocą mikrokontrolera. Wcześniej połączyliśmy Joystick z AVR, Joystick z Arduino i Raspberry Pi.
Przed połączeniem dowolnego czujnika lub modułu z mikrokontrolerem ważne jest, aby wiedzieć, jak on działa. Tutaj nasz joystick ma 5 pinów wyjściowych, z których dwa służą do zasilania, a trzy do danych. Moduł należy zasilać napięciem + 5V. Piny danych są nazwane VRX, VRY i SW.
Termin „VRX” oznacza zmienne napięcie na osi X, a „VRY” oznacza zmienne napięcie w osi Y, a „SW” oznacza przełącznik.
Więc kiedy przesuniemy joystick w lewo lub w prawo, wartość napięcia na VRX będzie się zmieniać, a kiedy zmienimy ją w górę lub w dół, VRY będzie się zmieniać. Podobnie, gdy przesuniemy go po przekątnej, zarówno VRX, jak i VRY będą się różnić. Po naciśnięciu włącznika pin SW zostanie podłączony do masy. Poniższy rysunek pomoże ci znacznie lepiej zrozumieć wartości wyjściowe
Schemat obwodu:
Teraz, gdy wiemy, jak działa Joy Stick, możemy dojść do wniosku, że będziemy potrzebować dwóch pinów ADC i jednego cyfrowego pinu wejściowego, aby odczytać wszystkie trzy piny danych modułu Joystick. Pełny schemat obwodu pokazano na poniższym rysunku
Jak widać na schemacie, zamiast joysticka zastosowaliśmy dwa potencjometry RV1 i RV3 jako analogowe wejścia napięciowe oraz wejście logiczne dla przełącznika. Możesz śledzić etykiety zapisane w kolorze fioletowym, aby dopasować nazwy pinów i odpowiednio wykonać połączenia.
Zwróć uwagę, że piny analogowe są podłączone do kanałów A0 i A1, a przełącznik cyfrowy jest podłączony do RB0. Będziemy mieć również 5 diod LED podłączonych jako wyjście, dzięki czemu będziemy mogli świecić w zależności od kierunku ruchu joysticka. Więc te piny wyjściowe są podłączone do PORT C od RC0 do RC4. Po przeskanowaniu naszego schematu obwodu możemy przystąpić do programowania, następnie zasymulować program na tym obwodzie, a następnie zbudować obwód na płytce prototypowej, a następnie przesłać program na sprzęt. Aby dać wyobrażenie o moim sprzęcie po wykonaniu powyższych połączeń pokazany jest poniżej
Programowanie połączenia joysticka:
Program do interfejsu joystick z PIC jest proste i prosto do przodu. Wiemy już, do których pinów jest podłączony Joystick i jaka jest ich funkcja, więc po prostu musimy odczytać napięcie analogowe z pinów i odpowiednio sterować wyjściowymi diodami LED.
Kompletny program do tego celu znajduje się na końcu tego dokumentu, ale w celu wyjaśnienia dzielę kod na małe znaczące fragmenty poniżej.
Jak zawsze program jest uruchamiany przez ustawienie bitów konfiguracyjnych, nie będziemy zbytnio omawiać ustawiania bitów konfiguracji, ponieważ nauczyliśmy się tego już w projekcie Miganie diody LED i tak samo jest w tym projekcie. Po ustawieniu bitów konfiguracji musimy zdefiniować funkcje ADC do korzystania z modułu ADC w naszym PIC. Te funkcje zostały również nauczone w samouczku korzystania z ADC z PIC. Następnie musimy zadeklarować, które piny są wejściami, a które wyjściami. Tutaj dioda LED jest podłączona do PORTC, więc są pinami wyjściowymi, a pin przełącznika joysticka jest cyfrowym pinem wejściowym. Więc używamy następujących linii, aby zadeklarować to samo:
// ***** Konfiguracja we / wy **** // TRISC = 0X00; // PORT C jest używany jako porty wyjściowe PORTC = 0X00; // MAke wszystkie piny niskie TRISB0 = 1; // RB0 jest używane jako wejście // *** Koniec konfiguracji I / O ** ///
Te kołki ADC nie musi być określone jako wprowadzania kołków, ponieważ przy użyciu funkcji ADC będzie ustawiona jako kołek wejściowy. Gdy sworznie są zdefiniowane, możemy wywołać ADC_initialize funkcji, które określiliśmy wcześniej. Ta funkcja ustawi wymagane rejestry ADC i przygotuje moduł ADC.
ADC_Initialize (); // Skonfiguruj moduł ADC
Teraz krok w naszej nieskończonej while pętli. Wewnątrz tej pętli musimy monitorować wartości VRX, VRY i SW i na podstawie wartości musimy kontrolować wyjście diody. Proces monitorowania możemy rozpocząć od odczytania napięcia analogowego VRX i VRY za pomocą poniższych linii
int joy_X = (ADC_Read (0)); // Przeczytaj oś X joysticka int joy_Y = (ADC_Read (1)); // Przeczytaj oś Y joysticka
Ta linia zapisze wartość VRX i VRY odpowiednio w zmiennej joy_X i joy_Y . Funkcja ADC_Read (0) oznacza, że odczytujemy wartość ADC z kanału 0, który jest pinem A0. Podłączyliśmy VRX i VRY do pinów A0 i A1, więc czytamy od 0 i 1.
Jeśli pamiętasz z naszego samouczka ADC, wiemy, że czytamy napięcie analogowe, a PIC będący urządzeniem cyfrowym odczyta je od 0 do 1023. Wartość ta zależy od położenia modułu joysticka. Możesz skorzystać z powyższego schematu etykiet, aby dowiedzieć się, jakiej wartości możesz się spodziewać dla każdej pozycji joysticka.
Tutaj użyłem wartości granicznej 200 jako dolnej granicy i wartości 800 jako górnej granicy. Możesz użyć wszystkiego, co chcesz. Użyjmy więc tych wartości i zacznijmy odpowiednio świecić diodami LED. Aby to zrobić, musimy porównać wartość joy_X z predefiniowanymi wartościami za pomocą pętli IF i ustawić piny LED na wysokie lub niskie, jak pokazano poniżej. Linie komentarzy pomogą Ci lepiej zrozumieć
if (joy_X <200) // Joy przesunięta w górę {RC0 = 0; RC1 = 1;} // Świeci górna dioda LED else if (joy_X> 800) // Joy przesunięta w dół {RC0 = 1; RC1 = 0;} // Świeci dolna dioda LED else // Jeśli nie zostanie przeniesiona {RC0 = 0; RC1 = 0;} // Wyłącz obie diody
Podobnie możemy zrobić to samo dla wartości osi Y. Po prostu trzeba zastąpić zmiennej joy_X z joy_Y a także kontrolować kolejne dwa kołki LED, jak pokazano poniżej. Zwróć uwagę, że gdy joystick nie jest poruszany, wyłączamy oba światła LED.
if (joy_Y <200) // Joy przeniesiona w lewo {RC2 = 0; RC3 = 1;} // Świeci lewą diodę LED else if (joy_Y> 800) // Radość przesunięta w prawo {RC2 = 1; RC3 = 0;} // Świeci prawą diodę LED w innym przypadku // Jeśli nie została przeniesiona {RC2 = 0; RC3 = 0;} // Wyłącz obie diody LED
Teraz mamy jeszcze jedną ostatnią rzecz do zrobienia, musimy sprawdzić, czy przełącznik jest wciśnięty. Pin przełącznika jest podłączony do RB0, więc możemy ponownie użyć pętli if i sprawdzić, czy jest włączony. Jeśli zostanie naciśnięty, wyłączymy diodę LED, aby wskazać, że przełącznik został naciśnięty.
if (RB0 == 1) // Jeśli Joy zostanie naciśnięty RC4 = 1; // Świeci środkową diodę LED else RC4 = 0; // OFF środkowa dioda LED
Widok symulacji:
Cały projekt można symulować za pomocą oprogramowania Proteus. Po napisaniu programu skompiluj kod i połącz kod szesnastkowy symulacji z obwodem. Wtedy powinieneś zauważyć świecące się diody LED w zależności od położenia potencjometrów. Symulacja jest pokazana poniżej:
Sprzęt i działanie:
Po weryfikacji kodu za pomocą symulacji możemy zbudować obwód na płytce chleba. Jeśli śledziłeś samouczki PIC, zauważyłeś, że używamy tej samej płytki perf, która ma przylutowane do niej obwód PIC i 7805. Jeśli jesteś również zainteresowany zrobieniem jednego, aby używać go we wszystkich projektach PIC, przylutuj obwód na płycie perf. Lub możesz również zbudować cały obwód na płytce stykowej. Gdy sprzęt będzie gotowy, będzie to coś takiego poniżej.
Teraz prześlij kod do mikrokontrolera PIC za pomocą PICkit3. Możesz odnieść się do projektu LED Blink w celu uzyskania wskazówek. Powinieneś zauważyć, że żółte światło zapala się wysoko, gdy tylko program zostanie załadowany. Teraz użyj joysticka i zmieniaj pokrętło, dla każdego kierunku joysticka zauważysz, że odpowiednia dioda LED zapala się wysoko. Naciśnięcie środkowego przełącznika wyłączy środkową diodę.
Ta praca jest tylko przykładem, na jej szczycie można zbudować wiele ciekawych projektów. Pełne działanie projektu można również znaleźć na wideo zamieszczonym na końcu tej strony.
Mam nadzieję, że zrozumiałeś projekt i cieszyłeś się z jego budowania. Jeśli masz z tym jakiś problem, napisz go w sekcji komentarzy poniżej lub napisz na forach, aby uzyskać pomoc.