- Potrebný materiál:
- Schéma zapojenia:
- Vysvetlenie programovania:
- Hardvérové nastavenie pre sekvenciu blikania LED:
- Nahrávanie a práca:
Toto je druhý tutoriál zo sekvencie tutoriálu, v ktorom sa učíme MSP430G2 LaunchPad od spoločnosti Texas Instruments pomocou nástroja Energia IDE. V poslednom tutoriáli Blinky LED sme sa predstavili na vývojovej doske LaunchPad a Energia IDE, taktiež sme nahrali náš prvý program, ktorý spočíva v blikaní integrovanej LED v pravidelných intervaloch.
V tomto výučbe sa naučíme, ako používať možnosť Digitálne čítanie a Digitálny zápis na čítanie stavu vstupného zariadenia ako prepínača a na ovládanie viacerých výstupov, napríklad LED. Na konci tohto tutoriálu by ste sa naučili pracovať s digitálnymi vstupmi a výstupmi, ktoré možno použiť na prepojenie mnohých digitálnych senzorov, ako je infračervený senzor, PIR senzor atď., A tiež na zapínanie a vypínanie výstupov, ako sú LED, bzučiaky atď. správny!!? Začnime.
Potrebný materiál:
- MSP430G2 LaunchPad
- LED ľubovoľnej farby - 8
- Prepínač - 2
- 1k rezistor - 8
- Pripojovacie vodiče
Schéma zapojenia:
V našom predchádzajúcom tutoriáli sme si všimli, že samotná štartovacia plocha je vybavená dvoma LED a vypínačom na doske. Ale v tomto výučbe budeme potrebovať ešte niečo viac, pretože po stlačení tlačidla plánujeme postupne rozsvietiť osem LED svetiel. Poradie zmeníme aj po stlačení iného tlačidla, aby to bolo zaujímavé. Musíme teda zostaviť obvod s 8 LED svetlami a dvoma spínačmi, kompletnú schému zapojenia nájdete nižšie.
Tu je 8 LED diód výstupmi a dva spínače vstupmi. Môžeme ich pripojiť k ľubovoľnému I / O kolíku na doske, ale pripojil som LRD z kolíka P1.0 na P2.1 a prepínač 1 a 2 na kolíky P2.4 a P2.3, ako je znázornené vyššie.
Všetky katódové kolíky LED sú spojené so zemou a anódový kolík je pripojený k I / O kolíkom cez rezistor. Tento rezistor sa nazýva rezistor obmedzujúci prúd, tento rezistor nie je pre MSP430 povinný, pretože maximálny prúd, ktorý môže I / O pin napájať, je iba 6 mA a napätie na kolíku je iba 3,6 V. Je však dobrým zvykom ich používať. Keď niektorý z týchto digitálnych pinov stúpne, rozsvieti sa príslušná LED. Ak si spomeniete na posledné návody LED program, potom si spomeniete, že digitalWrite (LED_pin_name, HIGH) rozsvieti LED a digitalWrite (LED_pin_name, LOW) rozsvieti LED.
Spínače sú vstupným zariadením, jeden koniec spínača je pripojený k uzemňovacej svorke a druhý k digitálnym pinom P2.3 a P2.4. To znamená, že kedykoľvek stlačíme spínač, I / O pin (2.3 alebo 2.4) bude uzemnený a pokiaľ nebude stlačené tlačidlo, zostane voľný. Pozrime sa, ako môžeme toto usporiadanie využiť pri programovaní.
Vysvetlenie programovania:
Program musí byť napísaný tak, aby pri stlačení spínača 1 postupným spôsobom ovládal 8 LED diód, a potom, keď je stlačený spínač 2, je potrebné zmeniť postupnosť. Kompletný program a ukážka Video možno nájsť v dolnej časti tejto stránky. Ďalej nižšie vysvetlím program po riadku, aby ste tomu ľahko porozumeli.
Ako vždy by sme mali začať s funkciou void setup (), vnútri ktorej by sme deklarovali, že piny, ktoré používame, sú vstupné alebo výstupné piny. V našom programe je na výstupe 8 pinov LED a 2 prepínače sú vstupy. Týchto 8 LED je pripojených od P1.0 k P2.1, čo je pin číslo 2 až 9 na doske. Potom sa prepínače pripájajú na kolíky P2.3 a Pin 2.4, čo sú kolíky číslo 11 a 12. Takže sme deklarovali nasledujúce vo 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); }
Ako vieme, funkcia pinMode () deklaruje, že pin je na výstupe alebo na vstupe, a funkcia digitalWrite () ju robí vysokou (ON) alebo nízkou (OFF). Na vykonanie tejto deklarácie sme použili slučku for, aby sme znížili počet riadkov. Premenná "i" bude zvýšený od 2 do 9 v pre sláčiky a pre každý prírastok funkcie vnútri bude vykonaný. Ďalšia vec, ktorá by vás mohla zmiasť, je výraz „ INPUT_PULLUP “. Pin je možné deklarovať ako vstup jednoduchým volaním funkcie pinMode (Pin_name, INPUT), ale tu sme namiesto INPUT použili INPUT_PULLUP a oba majú znateľnú zmenu.
Keď používame akékoľvek piny mikrokontroléra, pin by mal byť pripojený k nízkej alebo vysokej. V tomto prípade sú kolíky 11 a 12 pripojené k spínaču, ktorý bude po stlačení pripojený k zemi. Ale keď spínač nie je stlačený, pin nie je pripojený k ničomu, táto podmienka sa nazýva plávajúci pin a je to zlé pre mikrokontroléry. Aby sme sa tomu vyhli, buď používame pull-up alebo pull-down rezistor na udržanie kolíka v stave, keď sa dostane do plávajúceho stavu. V mikrokontroléri MSP430G2553 majú I / O piny zabudovaný pull-up rezistor. Aby sme to mohli použiť, stačí zavolať INPUT_PULLUP namiesto INPUT počas deklarácie, ako sme to už urobili vyššie.
Teraz poďme vstúpiť do funkcie void loop () . Čokoľvek je v tejto funkcii napísané, bude vykonané navždy. Prvým krokom v našom programe je skontrolovať, či je prepínač stlačený a či je stlačený, mali by sme začať postupne blikať LED diódami. Na kontrolu stlačenia tlačidla sa používa nasledujúci riadok
if (digitalRead (12) == LOW)
Tu je novou funkciou funkcia digitalRead () . Táto funkcia prečíta stav digitálneho kolíka a vráti hodnotu HIGH (1), keď je kolík napájaný, a vráti nízku hodnotu LOW (0), keď je kolík uzemnený. V našom hardvéri bude kolík uzemnený, iba keď stlačíte tlačidlo, inak bude vysoký, pretože sme použili pull-up rezistor. Tak sme sa použiť v prípade vyhlásenia skontrolovať, či bolo stlačené tlačidlo.
Po stlačení tlačidla sa dostaneme do nekonečnej while (1) slučky. To je miesto, kde začneme postupne blikať LED diódami. Nekonečný cyklus while je uvedené nižšie, a všetko, čo je napísané vo vnútri slučky bude prebiehať navždy do prestávky; používa sa vyhlásenie.
biele (1) {}
Vo vnútri nekonečna zatiaľ kontrolujeme stav druhého prepínača, ktorý je pripojený k pinu 11.
Ak je tento spínač stlačený, blikáme LED v jednej konkrétnej sekvencii, inak ju blikáme v inej sekvencii.
if (digitalRead (11) == LOW) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); oneskorenie (100); } pre (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Na postupné blikanie LED opäť použijeme slučku for , tentokrát však použijeme malé oneskorenie 100 milisekúnd pomocou funkcie delay (100) , aby sme si mohli všimnúť, že LED stúpa vysoko. Aby sme rozsvietili naraz iba jednu LED diódu, na vypnutie všetkých LED diód používame aj ďalšiu slučku for . Takže zapneme LED nejaký čas čakáme a potom vypneme všetky LED, potom zvýšime počet zapneme LED čakáme nejaký čas a cyklus pokračuje. To všetko sa však stane, pokiaľ nestlačíte druhý spínač.
Ak je stlačený druhý spínač, zmeníme postupnosť, program bude viac-menej rovnaký, ako pri postupnosti, pri ktorej je zapnutá LED. Riadky sú zobrazené nižšie. Skúste sa pozrieť a zistiť, čo sa zmenilo.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); oneskorenie (100); } pre (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Áno, slučka for bola zmenená. Predtým sme LED nechali svietiť od čísla 2 až po 9. Teraz však začneme od čísla 9 a znižujeme úplne dole po 2. Týmto spôsobom si môžeme všimnúť, či je spínač stlačený alebo nie.
Hardvérové nastavenie pre sekvenciu blikania LED:
Dobre, celá teória a softvérová časť. Poďme si zaobstarať niektoré komponenty a pozrime sa, ako tento program vyzerá v akcii. Obvod je veľmi jednoduchý, a preto ho možno ľahko vytvoriť na doske. Ale mám prepájané LED diódy a spínače na doske perf, aby to vyzeralo úhľadne. Doska perf, ktorú som spájkoval, je zobrazený nižšie.
Ako vidíte, výstupné piny LED a spínača sme vybrali ako kolíky konektora. Teraz sme použili vodiče konektora typu female to female na pripojenie LED diód a prepínačov k doske MSP430 LaunchPad, ako je to znázornené na obrázku nižšie.
Nahrávanie a práca:
Keď skončíte s hardvérom, stačí pripojiť dosku MSP430 k počítaču a otvoriť IDE Energia a použiť program uvedený na konci tejto stránky. Uistite sa, že je v rozhraní Energia IDE vybratá správna doska a port COM a kliknite na tlačidlo Nahrať. Program by sa mal úspešne skompilovať a po nahraní sa zobrazí hlásenie „Hotovo.“.
Teraz stlačte tlačidlo 1 na doske a LED by sa mala rozsvietiť postupne, ako je to znázornené nižšie
Môžete tiež podržať druhé tlačidlo a skontrolovať, či sa postupnosť mení. Kompletné fungovanie projektu je zobrazené na videu nižšie. Ak ste s výsledkami spokojní, môžete skúsiť vykonať nejaké zmeny v kóde, napríklad zmeniť čas oneskorenia, zmeniť postupnosť atď. Pomôže vám to lepšie sa učiť a porozumieť.
Dúfam, že ste pochopili návod a naučili sa s ním niečo užitočné. Ak ste sa stretli s akýmkoľvek problémom, neváhajte a pošlite otázku v sekcii komentárov alebo použite fóra. Zoznámime sa v ďalšom výučbe, kde sa naučíme čítať analógové napätia pomocou štartovacej podložky MSP30.