- Wymagany materiał:
- Schemat obwodu:
- Objaśnienie programowania:
- Konfiguracja sprzętu dla sekwencji migających diod LED:
- Przesyłanie i praca:
To jest drugi samouczek z sekwencji samouczków, w których uczymy się obsługi MSP430G2 LaunchPad z firmy Texas Instruments przy użyciu środowiska IDE Energia. W ostatnim samouczku Blinky LED przedstawiliśmy się LaunchPad Development Board i Energia IDE, przesłaliśmy również nasz pierwszy program, który ma migać diodą LED na pokładzie w regularnych odstępach czasu.
W tym samouczku nauczymy się, jak korzystać z opcji odczytu cyfrowego i zapisu cyfrowego, aby odczytać stan urządzenia wejściowego, takiego jak przełącznik, i sterować wieloma wyjściami, takimi jak diody LED. Pod koniec tego samouczka nauczyłeś się pracować z wejściami i wyjściami cyfrowymi, które mogą być używane do łączenia wielu czujników cyfrowych, takich jak czujnik podczerwieni, czujnik PIR itp., A także do włączania i wyłączania wyjść, takich jak diody LED, brzęczyk itp. Brzmi interesująco dobrze!!? Zacznijmy.
Wymagany materiał:
- MSP430G2 LaunchPad
- LED dowolnego koloru - 8
- Przełącznik - 2
- Rezystor 1k - 8
- Przewody łączące
Schemat obwodu:
W naszym poprzednim samouczku zauważyliśmy, że sama platforma startowa jest wyposażona w dwie diody LED i przełącznik na płycie. Ale w tym samouczku będziemy potrzebować więcej, ponieważ planujemy zapalić osiem diod LED w sekwencji po naciśnięciu przycisku. Zmienimy również sekwencję, gdy zostanie naciśnięty inny przycisk, aby był interesujący. Musimy więc zbudować obwód z 8 diodami LED i dwoma przełącznikami, pełny schemat obwodu można znaleźć poniżej.
Tutaj 8 diod LED to wyjścia, a dwa przełączniki to wejścia. Możemy je podłączyć do dowolnego pinu I / O na płycie, ale podłączyłem LRD ze styku P1.0 do P2.1 i przełączniki 1 i 2 odpowiednio do pinu P2.4 i P2.3, jak pokazano powyżej.
Wszystkie piny katodowe diody LED są połączone z masą, a styk anody jest połączony z pinami I / O przez rezystor. Ten rezystor nazywany jest rezystorem ograniczającym prąd, ten rezystor nie jest obowiązkowy dla MSP430, ponieważ maksymalny prąd, jaki może zapewnić jego pin I / O, wynosi tylko 6 mA, a napięcie na pinie wynosi tylko 3,6 V. Jednak ich stosowanie jest dobrą praktyką. Gdy którykolwiek z tych cyfrowych pinów osiągnie stan wysoki, odpowiednia dioda zaświeci się. Jeśli potrafisz przywołać ostatni program samouczka LED, to pamiętasz, że digitalWrite (LED_pin_name, HIGH) sprawi, że dioda LED zacznie świecić, a digitalWrite (LED_pin_name, LOW) wyłączy diodę.
Przełączniki są urządzeniem wejściowym, jeden koniec przełącznika jest podłączony do zacisku uziemienia, a drugi jest podłączony do pinów cyfrowych P2.3 i P2.4. Oznacza to, że po każdym naciśnięciu przełącznika pin I / O (2.3 lub 2.4) będzie uziemiony i pozostanie wolny, jeśli przycisk nie zostanie wciśnięty. Zobaczmy, jak możemy wykorzystać ten układ podczas programowania.
Objaśnienie programowania:
Program musi być napisany tak, aby sterował 8 diodą LED w sposób sekwencyjny po naciśnięciu przełącznika 1, a następnie po naciśnięciu przełącznika 2 sekwencja musi zostać zmieniona. Kompletny program i prezentacji wideo można znaleźć na dole tej strony. W dalszej części wyjaśnię program wiersz po wierszu, abyś mógł go łatwo zrozumieć.
Jak zawsze powinniśmy zacząć od funkcji void setup (), w której zadeklarowalibyśmy pin wejściowy lub wyjściowy. W naszym programie 8 pinów LED jest wyprowadzonych, a 2 przełączniki są wejściami. Te 8 diod LED jest podłączonych od P1.0 do P2.1, co oznacza styk od 2 do 9 na płycie. Następnie przełączniki są podłączone do pinów P2.3 i pinów 2.4, które mają odpowiednio numer 11 i 12. Więc zadeklarowaliśmy co następuje w void setup ()
void setup () {for (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } for (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
Jak wiemy, funkcja pinMode () deklaruje pin jako wyjście lub wejście, a funkcja digitalWrite () ustawia go na wysoki (ON) lub niski (OFF). Użyliśmy pętli for, aby ta deklaracja zmniejszyła liczbę wierszy. Zmienna „i” będzie zwiększana, począwszy od 2 do 9, w do pętli i przy każdej zmianie wewnątrz funkcja zostanie wykonana. Inną rzeczą, która może Cię zmylić, jest termin „ INPUT_PULLUP ”. Pin można zadeklarować jako wejście, po prostu wywołując funkcję pinMode (nazwa_pinu, INPUT), ale tutaj użyliśmy INPUT_PULLUP zamiast INPUT i oba mają zauważalną zmianę.
Kiedy używamy jakichkolwiek pinów mikrokontrolera, pin powinien być podłączony do niskiego lub wysokiego. W tym przypadku styki 11 i 12 są połączone z przełącznikiem, który po naciśnięciu zostanie podłączony do masy. Ale gdy przełącznik nie jest wciśnięty, pin nie jest podłączony do niczego, ten stan nazywa się pinem pływającym i jest zły dla mikrokontrolerów. Aby tego uniknąć, używamy rezystora pull-up lub pull-down, aby utrzymać pin w stanie, w którym zaczyna pływać. W mikrokontrolerze MSP430G2553 piny I / O mają wbudowany rezystor podciągający. Aby tego użyć, wystarczy wywołać INPUT_PULLUP zamiast INPUT podczas deklaracji, tak jak zrobiliśmy to powyżej.
Przejdźmy teraz do funkcji void loop () . Cokolwiek zostanie zapisane w tej funkcji, zostanie wykonane na zawsze. Pierwszym krokiem w naszym programie jest sprawdzenie, czy przełącznik jest wciśnięty i jeśli zostanie wciśnięty, powinniśmy zacząć kolejno migać diodami. Aby sprawdzić, czy przycisk jest wciśnięty, używany jest następujący wiersz
if (digitalRead (12) == LOW)
W tym przypadku nową funkcją jest funkcja digitalRead () , funkcja ta odczyta stan cyfrowego pinu i zwróci WYSOKI (1), gdy pin uzyska pewne napięcie i zwróci niski NISKI (0), gdy pin jest uziemiony. W naszym sprzęcie pin będzie uziemiony tylko wtedy, gdy naciśniemy przycisk, w przeciwnym razie będzie wysoki, ponieważ użyliśmy rezystora podciągającego. Dlatego używamy instrukcji if , aby sprawdzić, czy przycisk został naciśnięty.
Po wciśnięciu przycisku przechodzimy do nieskończonej pętli while (1) . W tym miejscu zaczynamy kolejno migać diodami LED. Nieskończonej pętli while jest pokazany poniżej i co jest napisane wewnątrz pętli będzie działać wiecznie aż przerwie; instrukcja jest używana.
whiel (1) {}
Wewnątrz nieskończoności, podczas gdy sprawdzamy stan drugiego przełącznika, który jest podłączony do pinu 11.
Jeśli ten przełącznik jest wciśnięty, mrugniemy diodą LED w jednej określonej sekwencji, w przeciwnym razie będziemy migać w innej kolejności.
if (digitalRead (11) == LOW) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); opóźnienie (100); } for (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Aby migać kolejno diodą LED, ponownie używamy pętli for , ale tym razem używamy niewielkiego opóźnienia 100 milisekund, używając funkcji opóźnienia (100) , abyśmy mogli zauważyć, że dioda LED się zapala. Aby tylko jedna dioda LED świeciła się na raz, używamy również innej pętli for , aby wyłączyć wszystkie diody LED. Więc włączamy diodę, czekamy przez jakiś czas, a następnie wyłączamy wszystkie diody LED, a następnie zwiększamy licznik, włączamy diodę LED, czekamy na jakiś czas i cykl trwa. Ale wszystko to będzie się działo, dopóki nie zostanie naciśnięty drugi przełącznik.
Jeśli wciśniemy drugi przełącznik to zmienimy sekwencję, program będzie mniej więcej taki sam, jak oczekiwano dla sekwencji, której dioda się świeci. Linie są pokazane poniżej. Spróbuj przyjrzeć się i odgadnąć, co zostało zmienione.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); opóźnienie (100); } for (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Tak, pętla for została zmieniona. Wcześniej sprawiliśmy, że dioda LED świeciła od numeru 2 aż do 9. Ale teraz zaczniemy od numeru 9 i zmniejszamy aż do 2. W ten sposób możemy zauważyć, czy przełącznik jest wciśnięty, czy nie.
Konfiguracja sprzętu dla sekwencji migających diod LED:
Dobra, wystarczy całej teorii i części oprogramowania. Zdobądźmy kilka komponentów i zobaczmy, jak ten program wygląda w akcji. Obwód jest bardzo prosty i dlatego można go łatwo zbudować na płytce stykowej. Ale przylutowałem diodę LED i przełączniki na płycie perf, żeby wyglądała schludnie. Płyta perf, którą przylutowałem, jest pokazana poniżej.
Jak widać mamy wyprowadzone piny wyjściowe diody LED i wyłącznik jako piny złącza. Teraz używamy przewodów złącza żeńskiego do żeńskiego do podłączenia diod LED i przełączników do płyty MSP430 LaunchPad, jak pokazano na poniższym obrazku.
Przesyłanie i praca:
Gdy skończysz ze sprzętem, po prostu podłącz płytę MSP430 do komputera i otwórz Energia IDE i użyj programu podanego na końcu tej strony. Upewnij się, że wybrana jest właściwa płyta i port COM w Energia IDE i kliknij przycisk Prześlij. Program powinien zostać pomyślnie skompilowany, a po przesłaniu zostanie wyświetlony komunikat „Done Uploading”.
Teraz naciśnij przycisk 1 na płycie, a dioda LED powinna zaświecić się w kolejności, jak pokazano poniżej
Możesz także przytrzymać drugi przycisk, aby sprawdzić, czy sekwencja się zmienia. Pełne działanie projektu pokazano na poniższym filmie. Jeśli wyniki są zadowalające, możesz spróbować wprowadzić pewne zmiany w kodzie, takie jak zmiana czasu opóźnienia, zmiana sekwencji itp. Pomoże Ci to lepiej się uczyć i rozumieć.
Mam nadzieję, że zrozumiałeś samouczek i nauczyłeś się czegoś przydatnego. Jeśli napotkałeś jakiś problem, możesz zadać pytanie w sekcji komentarzy lub skorzystać z forów. Spotkajmy się w kolejnym samouczku, w którym nauczymy się odczytywać napięcia analogowe za pomocą naszego panelu startowego MSP30.