- Potreben material:
- Shema vezja:
- Pojasnilo programiranja:
- Nastavitev strojne opreme za utripajoče zaporedje LED:
- Nalaganje in delo:
To je druga vadnica zaporedja vadnic, v kateri se učimo MSP430G2 LaunchPad podjetja Texas Instruments z uporabo Energia IDE. V zadnji vadnici za Blinky LED smo se predstavili LaunchPad Development Board in Energia IDE, naložili pa smo tudi svoj prvi program, ki v rednih presledkih utripa LED na vozilu.
V tej vadnici se bomo naučili, kako uporabljati možnost digitalnega branja in digitalnega pisanja za branje stanja vhodne naprave, kot je stikalo, in nadzor več izhodov, kot so LED. Na koncu te vadnice bi se naučili delati z digitalnimi vhodi in izhodi, ki jih lahko uporabite za povezavo številnih digitalnih senzorjev, kot so IR senzor, PIR senzor itd., In tudi za vklop ali izklop izhodov, kot so LED, zvočni signal itd. prav!!? Začnimo.
Potreben material:
- MSP430G2 LaunchPad
- LED katere koli barve - 8
- Stikalo - 2
- 1k upor - 8
- Priključne žice
Shema vezja:
V prejšnji vadnici smo opazili, da ima lansirna ploščica dve LED in stikalo na plošči. Toda v tej vadnici bomo potrebovali več kot to, saj nameravamo ob pritisku na gumb zaporedoma osvetliti osem LED-lučk. Spremenili bomo tudi zaporedje, ko pritisnemo drug gumb, samo da bo zanimivo. Torej moramo zgraditi vezje z 8 LED lučmi in dvema stikaloma, celotni diagram vezja najdete spodaj.
Tu so 8 LED-jev izhodi in dve stikali vhoda. Te lahko povežemo s katerim koli vhodno / izhodnim zatičem na plošči, vendar sem LRD-je povezal s pina P1.0 na P2.1 in preklopil 1 in 2 na pin P2.4 oziroma P2.3, kot je prikazano zgoraj.
Vsi katodni zatiči LED so vezani na tla, anodni zatič pa je prek upora povezan z I / O zatiči. Ta upor se imenuje upor za omejevanje toka, ta upor ni obvezen za MSP430, ker je največji tok, ki ga lahko vhodno / izhodno zapiči, le 6mA, napetost na zatiču pa je le 3,6V. Vendar je dobra praksa, da jih uporabimo. Ko se kateri koli od teh digitalnih zatičev visoko postavi, se prižge ustrezna LED. Če se lahko prikličete zadnje vadnice LED programa, se boste spomnili, da bo digitalWrite (LED_pin_name, HIGH) zasvetil LED, digitalWrite (LED_pin_name, LOW) pa bo zasvetil LED.
Stikala so vhodna naprava, en konec stikala je priključen na ozemljitveni terminal, drugi pa na digitalni nožici P2.3 in P2.4. To pomeni, da bo vsakič, ko pritisnemo stikalo, vhodno-izhodni zatič (2.3 ali 2.4) ozemljen in bo ob pritisku gumba ostal prost. Poglejmo, kako lahko uporabimo to ureditev med programiranjem.
Pojasnilo programiranja:
Program je treba napisati za zaporedno upravljanje 8 LED, ko pritisnete stikalo 1 in nato, ko pritisnete stikalo 2, spremenite zaporedje. Celoten program in predstavitev Video je mogoče najti na dnu te strani. V nadaljevanju bom razložil program po vrsticah, da ga boste lahko zlahka razumeli.
Kot vedno bi morali začeti s funkcijo void setup (), znotraj katere bi razglasili zatiče, ki jih uporabljamo, kot vhodni ali izhodni pin. V našem programu je 8 LED zatičev in 2 stikali sta vhoda. Teh 8 LED je povezanih od P1.0 do P2.1, ki je številka 2 do 9 na plošči. Nato so stikala priključena na nožici P2.3 in Pin 2.4, ki sta številki 11 in 12. Tako smo v void setup () razglasili naslednje
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); }
Kot vemo, funkcija pinMode () razglasi pin za izhod ali vhod, funkcija digitalWrite () pa ga postavi visoko (ON) ali nizko (OFF). Za to izjavo smo uporabili zanko for, da bi zmanjšali število vrstic. Spremenljivka "i" se poveča od 2 do 9, v za zanko in za vsako povečanje funkcijo notranjosti se bodo izvajale. Druga stvar, ki bi vas lahko zmedla, je izraz » INPUT_PULLUP «. Zatič je mogoče razglasiti kot vhodni tako, da pokličemo funkcijo pinMode (ime_pina, INPUT), vendar smo tukaj namesto INPUT uporabili INPUT_PULLUP in oba imata opazno spremembo.
Ko uporabljamo katere koli zatiče mikrokrmilnika, mora biti zatič priključen na nizko ali visoko. V tem primeru sta zatiča 11 in 12 priključena na stikalo, ki bo ob pritisku priključeno na maso. Toda če stikalo ni pritisnjeno, zatič ni povezan z ničemer, to stanje se imenuje plavajoči zatič in je slabo za mikrokrmilnike. Da bi se temu izognili, bodisi uporabimo vlečni ali spustni upor, da držimo zatič v stanju, ko pride v plavajoči položaj. V mikrokrmilniku MSP430G2553 imajo vhodno / izhodni zatiči vgrajen vlečni upor. Če želimo to uporabiti, moramo med deklaracijo, namesto INPUT, poklicati INPUT_PULLUP, tako kot smo to storili zgoraj.
Zdaj lahko stopimo v funkcijo void loop () . Karkoli je zapisano v tej funkciji, se bo izvajalo za vedno. Prvi korak v našem programu je preveriti, ali je stikalo pritisnjeno in če pritisnemo, moramo zaporedoma začeti utripati LED. Če želite preveriti, ali je gumb pritisnjen, se uporabi naslednja vrstica
if (digitalRead (12) == LOW)
Tu je nova funkcija funkcija digitalRead () , ta funkcija bo prebrala stanje digitalnega zatiča in bo vrnila HIGH (1), ko bo zatič dobil nekaj napetosti, in bo vrnila nizko LOW (0), ko bo zatič ozemljen. V naši strojni opremi bo zatič ozemljen šele, ko pritisnemo gumb, sicer bo visok, ker smo uporabili vlečni upor. Zato bomo uporabili , če izjavo, da preveri, če je bil pritisnjen gumb.
Ko pritisnete gumb, pridemo v neskončno zanko while (1) . Tu začnemo zaporedoma utripati LED. Spodaj je prikazana neskončna zanka while in vse, kar je zapisano znotraj zanke, bo večno delovalo do prekinitve; se uporablja stavek.
vihra (1) {}
Znotraj neskončnega, medtem ko preverjamo stanje drugega stikala, ki je priključeno na zatič 11.
Če pritisnete to stikalo, utripnemo LED v določenem zaporedju, utripali pa bomo v drugem zaporedju.
if (digitalRead (11) == LOW) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); zamuda (100); } za (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Za zaporedno utripanje LED spet uporabimo zanko for , tokrat pa uporabimo majhno zakasnitev 100 milisekund s funkcijo delay (100), tako da lahko opazimo, da se LED sveti visoko. Da naenkrat zasveti le ena LED, za izklop vseh LED uporabimo tudi drugo for zanko. Tako nekaj časa vklopimo led-čakanje in nato izklopimo vse LED-diode, nato povečamo štetje, nekaj časa LED-vklop počaka in cikel se nadaljuje. A vse to se bo zgodilo, dokler drugo stikalo ni pritisnjeno.
Če pritisnete drugo stikalo, potem spremenimo zaporedje, bo program bolj ali manj enak, kot je pričakovati za zaporedje, pri katerem je vklopljena LED. Vrstice so prikazane spodaj, poskusite si ogledati in ugotoviti, kaj se je spremenilo.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); zamuda (100); } za (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Da, zanka for je bila spremenjena. Prej smo LED svetili od številke 2 in vse do 9. Zdaj pa bomo začeli od številke 9 in se zmanjšali vse do 2. Na ta način lahko opazimo, ali je stikalo pritisnjeno ali ne.
Nastavitev strojne opreme za utripajoče zaporedje LED:
V redu, vse teoretično in programsko. Vzemimo nekaj komponent in poglejmo, kako ta program deluje. Vezje je zelo preprosto in ga je zato mogoče enostavno zgraditi na plošči. Sem pa spajkal LED in stikala na plošči za perf, samo da je videti lepo. Spodnja plošča, ki sem jo spajkal, je prikazana spodaj.
Kot lahko vidite, imamo izhodne nožice LED in stikalo izvlečeno kot priključne nožice. Zdaj uporabljamo žice ženskega do ženskega konektorja za priključitev LED in preklopi na ploščo MSP430 LaunchPad, kot je prikazano na spodnji sliki.
Nalaganje in delo:
Ko končate s strojno opremo, le priključite ploščo MSP430 na računalnik in odprite Energia IDE ter uporabite program, naveden na koncu te strani. Prepričajte se, da sta v plošči Energia IDE izbrani desna plošča in vrata COM in kliknite gumb Naloži. Program se mora uspešno prevesti in po nalaganju bo prikazal »Končano nalaganje«.
Zdaj pritisnite gumb 1 na plošči in lučka LED mora zaslediti zaporedoma, kot je prikazano spodaj
Pridržite lahko tudi drugi gumb, da preverite, ali se zaporedje spreminja. Popolno delovanje projekta je prikazano v spodnjem videu. Če ste zadovoljni z rezultati, lahko poskusite narediti nekaj sprememb v kodi, kot je sprememba časa zakasnitve, spreminjanje zaporedja itd. To vam bo pomagalo pri boljšem učenju in razumevanju.
Upam, da ste razumeli vadnico in se z njo naučili nekaj koristnega. Če ste naleteli na kakršno koli težavo, vas prosimo, da vprašanje objavite v oddelku za komentarje ali uporabite forume. Spoznajmo se v drugi vadnici, kjer se bomo naučili brati analogne napetosti s pomočjo naše lansirne ploščice MSP30.