- Reikalinga medžiaga:
- Grandinės schema:
- Programavimo paaiškinimas:
- Aparatinės įrangos nustatymas mirksinčiam LED sekai:
- Įkėlimas ir darbas:
Tai yra antroji mokymo programos seka, kurioje mokomės „MSP430G2 LaunchPad“ iš „Texas Instruments“, naudodami „ Energia IDE“. Paskutinėje „Blinky LED“ pamokoje mes pristatėme save „LaunchPad“ plėtros valdybai ir „Energia IDE“, taip pat įkėlėme savo pirmąją programą, kuri turi reguliariai mirksėti laive esančiame šviesos diode.
Šioje pamokoje sužinosime, kaip naudoti skaitmeninio skaitymo ir skaitmeninio rašymo parinktis, norint nuskaityti įvesties įrenginio, pavyzdžiui, jungiklio, būseną ir valdyti kelis išėjimus, tokius kaip šviesos diodai. Šios pamokos pabaigoje jūs būtumėte išmokę dirbti su skaitmeniniais įėjimais ir išvestimis, kurie gali būti naudojami sąsajai su daugeliu skaitmeninių jutiklių, pvz., IR jutikliu, PIR jutikliu ir pan., Taip pat įjungti arba išjungti tokius išėjimus kaip LED, „Buzzer“ ir pan. Skamba įdomiai tiesa !!? Pradėkime.
Reikalinga medžiaga:
- „MSP430G2 LaunchPad“
- Bet kokios spalvos šviesos diodas - 8
- Jungiklis - 2
- 1k rezistorius - 8
- Jungiamieji laidai
Grandinės schema:
Ankstesnėje mūsų pamokoje pastebėjome, kad pačioje paleidimo aikštelėje yra du šviesos diodai ir jungiklis lentoje. Tačiau šioje pamokoje mums reikės daugiau nei to, nes paspaudus mygtuką mes planuojame iš eilės švyti aštuonias šviesos diodų lemputes. Mes taip pat pakeisime seką, kai paspausite kitą mygtuką, kad tik būtų įdomu. Taigi mes turime sukurti grandinę su 8 LED žibintais ir dviem jungikliais, visą grandinės schemą galite rasti žemiau.
Čia 8 šviesos diodai yra išėjimai, o du jungikliai yra įėjimai. Mes galime juos prijungti prie bet kurio plokštės įvesties / išvesties kaiščio, bet aš prijungiau LRD nuo kaiščio P1.0 iki P2.1, o 1 ir 2 jungiklius - prie atitinkamai P2.4 ir P2.3, kaip parodyta aukščiau.
Visi šviesos diodo katodo kaiščiai yra susieti su žeme, o anodo kaištis per rezistorių sujungiamas su įvesties / išvesties kaiščiais. Šis rezistorius vadinamas srovės ribotuvu. Šis rezistorius nėra privalomas MSP430, nes jo įvesties / išvesties kaiščio šaltinis gali būti tik 6mA, o kaiščio įtampa yra tik 3.6V. Tačiau juos naudoti yra gera praktika. Kai kuris nors iš šių skaitmeninių kaiščių pakyla aukštai, atitinkamas šviesos diodas užsidegs. Jei galite prisiminti paskutines „LED“ mokymo programas, prisiminsite, kad „ digitalWrite“ („LED_pin_name“, „HIGH“) privers LED šviesti, o „ digitalWrite“ (LED_pin_name, LOW) pasuks šviesos diodu.
Jungikliai yra įvesties įrenginys, vienas jungiklio galas yra prijungtas prie įžeminimo gnybto, o kitas - prie skaitmeninių kaiščių P2.3 ir P2.4. Tai reiškia, kad kai tik paspausime jungiklį, įvesties / išvesties kaištis (2.3 arba 2.4) bus įžemintas ir liks laisvas, jei mygtukas nebus paspaustas. Pažiūrėkime, kaip galime naudoti šį susitarimą programuodami.
Programavimo paaiškinimas:
Programa turi būti parašyta valdyti 8 šviesos diodus nuosekliai, kai paspaudžiamas jungiklis 1, o tada, kai paspaudžiamas jungiklis 2, seka turi būti pakeista. Visa programa ir demonstravimo video galima rasti šio puslapio apačioje. Toliau paaiškinsiu programą eilutėje, kad galėtumėte lengvai ją suprasti.
Kaip visada, turėtume pradėti nuo funkcijos void setup (), kurios viduje mes deklaruotume, kad kaiščiai, kuriuos naudojame, yra įvesties arba išvesties kaištis. Mūsų programoje išvedami 8 LED kaiščiai, o 2 jungikliai yra įėjimai. Šie 8 šviesos diodai yra prijungti nuo P1.0 iki P2.1, kuris yra lentos kaiščiai nuo 2 iki 9. Tada jungikliai prijungiami prie kaiščių P2.3 ir 2.4, kurie yra atitinkamai kaiščių skaičius 11 ir 12. Taigi negaliojančioje sąrankoje () paskelbėme šiuos dalykus:
negaliojanti sąranka () {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); }
Kaip žinome, „ pinMode“ () funkcija deklaruoja, kad kaištis yra išvestis arba įvestis, o „ digitalWrite“ () funkcija padaro jį aukštą (ĮJUNGTA) arba žemą ( IŠJUNGTĄ ). Norėdami naudoti šią deklaraciją, naudojome „ for loop“, kad sumažintume eilučių skaičių. Kintamasis „i“ for cikle bus padidintas nuo 2 iki 9 ir kiekvienam prieaugiui bus vykdoma viduje esanti funkcija. Kitas dalykas, kuris gali jus supainioti, yra terminas „ INPUT_PULLUP “. Smeigtuką galima paskelbti įvestimi, tiesiog iškviečiant funkciją pinMode (PIN_name, INPUT), bet čia mes naudojome INPUT_PULLUP, o ne INPUT, ir jie abu turi pastebimų pokyčių.
Kai mes naudojame bet kokius mikrovaldiklio kaiščius, kaištis turėtų būti sujungtas su žemu arba aukštu. Šiuo atveju kaiščiai 11 ir 12 yra prijungti prie jungiklio, kuris bus prijungtas prie žemės, kai paspausite. Bet kai jungiklis nėra paspaustas, kaištis nėra prie nieko prijungtas, ši sąlyga vadinama plaukiojančiu kaiščiu ir tai yra blogai mikrovaldikliams. Taigi, kad to išvengtume, mes naudojame arba patraukimo, arba traukimo varžą, kad laikytume kaištį iki būsenos, kai jis pateks į plaukiojantį. „ MSP430G2553“ mikrovaldiklyje įvesties / išvesties kaiščiuose yra įmontuotas traukimo rezistorius. Norėdami tai naudoti, viskas, ką turime padaryti, yra deklaracijos metu skambinti INPUT_PULLUP, o ne INPUT, kaip tai darėme aukščiau.
Dabar leidžiama pereiti į „ void loop“ () funkciją. Kas parašyta šioje funkcijoje, bus vykdoma per amžius. Pirmasis žingsnis mūsų programoje yra patikrinti, ar jungiklis yra paspaustas ir jei nuspaustas, turėtume pradėti mirksėti šviesos diodais iš eilės. Norėdami patikrinti, ar mygtukas paspaustas, naudojama ši eilutė
jei (digitalRead (12) == LOW)
Nauja funkcija yra „ digitalRead“ () funkcija, ši funkcija perskaitys skaitmeninio kaiščio būseną ir grąžins HIGH (1), kai kaištis įgaus tam tikrą įtampą, o kai kaištis bus įžemintas, grįš žemai LOW (0) . Mūsų aparatinėje įrangoje kaištis bus įžemintas tik tada, kai paspausime mygtuką, kitaip jis bus aukštas, nes mes naudojome traukimo rezistorių. Taigi mes naudojame , jei pareiškimas patikrinti, ar mygtukas buvo paspaustas.
Paspaudus mygtuką pateksime į begalinę, kol (1) kilpą. Čia mes pradedame mirksėti šviesos diodais iš eilės. Begalinis, o kilpa yra parodyta žemiau ir viską, kas parašyta viduje linijos bus paleisti amžinai, kol pertraukos; sakinys yra naudojamas.
whiel (1) {}
Begaliniame viduje, kol mes tikriname antrojo jungiklio, prijungto prie 11 kaiščio, būseną.
Paspaudus šį jungiklį, šviesos diodas mirksės tam tikra seka, kitaip mirksėsime kita seka.
if (digitalRead (11) == LOW) {už (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); vėlavimas (100); } (int i = 2; i <= 9; i ++) „digitalWrite“ (i, LOW); }
Norėdami nuosekliai mirksėti šviesos diodu, mes vėl naudojame „ for loop“, bet šį kartą mes naudojame nedidelį 100 milisekundžių vėlavimą naudodami „ delay“ (100) funkciją, kad galėtume pastebėti, jog šviesos diodas tampa aukštas. Padaryti tik vieną LED švytėjimo metu mes taip pat naudoti kitą už kilpos išjungti visus LED. Taigi mes įjungiame LED laukimą tam tikrą laiką ir tada išjungiame visą šviesos diodą, tada padidiname skaičiavimo įjungimą, o šviesos diodas laukia tam tikrą laiką ir ciklas tęsiasi. Bet visa tai įvyks tol, kol nebus nuspaustas antrasis jungiklis.
Jei paspausite antrąjį jungiklį, mes pakeisime seką, programa bus daugmaž tokia pati, kaip ir seka, į kurią įjungtas šviesos diodas. Žemiau pateiktos eilutės pabandykite pažvelgti ir išsiaiškinti, kas buvo pakeista.
else {už (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); vėlavimas (100); } (int i = 2; i <= 9; i ++) „digitalWrite“ (i, LOW); }
Taip, for for loop pakeista. Anksčiau mes padarėme, kad šviesos diodas šviečia nuo 2 numerio iki 9. Bet dabar mes pradėsime nuo 9 skaičiaus ir mažinsime iki 2. Tokiu būdu galime pastebėti, ar jungiklis paspaustas, ar ne.
Aparatinės įrangos nustatymas mirksinčiam LED sekai:
Gerai, kad pakanka visos teorijos ir programinės įrangos. Paimkime keletą komponentų ir pažiūrėkime, kaip ši programa veikia. Grandinė yra labai paprasta, todėl ją galima lengvai pastatyti ant duonos lentos. Bet aš sulitavau šviesos diodą ir jungiklius ant plokštės, kad jis atrodytų tvarkingai. Perf lenta, kurią litavau, parodyta žemiau.
Kaip matote, mes turime šviesos diodo ir jungiklio išvesties kaiščius kaip jungties kaiščius. Dabar mes naudojame moteriškus ir moteriškus jungčių laidus, kad sujungtume šviesos diodus ir jungiklius prie MSP430 LaunchPad plokštės, kaip parodyta paveikslėlyje žemiau.
Įkėlimas ir darbas:
Kai baigsite aparatinę įrangą, tiesiog prijunkite MSP430 plokštę prie savo kompiuterio ir atidarykite „Energia IDE“ ir naudokite programą, pateiktą šio puslapio pabaigoje. Įsitikinkite, kad „Energia IDE“ pasirinkta tinkama plokštė ir COM prievadas, ir spustelėkite mygtuką Įkelti. Programa turėtų būti sėkmingai sukompiliuota, o ją įkėlus bus rodoma „Atlikta įkelta “.
Dabar paspauskite lentos mygtuką 1 ir šviesos diodas turėtų užsidegti iš eilės, kaip parodyta žemiau
Taip pat galite laikyti antrą mygtuką, kad patikrintumėte, ar seka keičiama. Visas projekto darbas parodytas žemiau esančiame vaizdo įraše. Jei esate patenkinti rezultatais, galite pabandyti atlikti keletą kodo pakeitimų, pvz., Pakeisti atidėjimo laiką pakeičiant seką ir pan. Tai padės jums geriau išmokti ir suprasti.
Tikiuosi, kad supratote pamoką ir sužinojote ką nors naudingo. Jei susidūrėte su kokia nors problema, nedvejodami paskelbkite klausimą komentarų skiltyje arba naudokitės forumais. Susitikime kitoje pamokoje, kur sužinosime, kaip nuskaityti analoginę įtampą naudojant „MSP30“ paleidimo bloką.