- Potreban materijal:
- Kružni dijagram:
- Objašnjenje programiranja:
- Postavljanje hardvera za treptanje LED sekvence:
- Učitavanje i rad:
Ovo je druga lekcija iz niza lekcija u kojoj učimo MSP430G2 LaunchPad tvrtke Texas Instruments koristeći Energia IDE. U posljednjem tutorialu za Blinky LED predstavili smo se LaunchPad Boardu za razvoj i Energiji IDE, također smo prenijeli svoj prvi program koji je treptanje LED diode u vozilu u redovitim intervalima.
U ovom uputstvu naučit ćemo kako koristiti opciju Digital Read i Digital Write za čitanje statusa ulaznog uređaja poput prekidača i upravljanje višestrukim izlazima poput LED-a. Na kraju ovog vodiča naučili biste raditi s digitalnim ulazima i izlazima, koji se mogu koristiti za povezivanje mnogih digitalnih senzora poput IR senzora, PIR senzora itd., Kao i za uključivanje ili isključivanje izlaza poput LED-a, zujalice itd. Zvuči zanimljivo pravo!!? Započnimo.
Potreban materijal:
- MSP430G2 LaunchPad
- LED bilo koje boje - 8
- Prekidač - 2
- 1k otpornik - 8
- Spajanje žica
Kružni dijagram:
U našem prethodnom uputstvu primijetili smo da sama lansirna rampa dolazi s dvije LED diode i prekidačem na ploči. Ali u ovom vodiču trebat će nam i više od toga, jer planiramo zasvijetliti osam LED lampica u nizu kad se pritisne tipka. Također ćemo promijeniti redoslijed pritiskom drugog gumba samo kako bismo ga učinili zanimljivim. Dakle, moramo izgraditi sklop s 8 LED svjetala i dva prekidača, cjeloviti dijagram sklopa možete pronaći u nastavku.

Ovdje su 8 LED-a izlazi, a dva prekidača ulazi. Možemo ih povezati s bilo kojim U / I pinom na ploči, ali spojio sam LRD-ove s pina P1.0 na P2.1 i preklopio 1 i 2 na pinove P2.4 i P2.3, kako je gore prikazano.
Svi katodni pinovi LED-a vezani su za masu, a anodni je pin spojen na I / O-pinove kroz otpornik. Ovaj otpor se naziva otpornik za ograničavanje struje, ovaj otpor nije obvezan za MSP430, jer je maksimalna struja koju može dobiti I / O pin samo 6mA, a napon na pinu je samo 3,6V. Međutim, dobra je praksa koristiti ih. Kad se bilo koji od ovih digitalnih pinova povisi, uključit će se odgovarajuća LED. Ako se možete prisjetiti posljednjih vodiča za LED programe, sjetit ćete se da će digitalWrite (LED_pin_name, HIGH) LED svijetliti, a digitalWrite (LED_pin_name, LOW) svijetliti LED-u.
Prekidači su ulazni uređaj, jedan kraj prekidača povezan je s uzemljenjem, a drugi s digitalnim pinovima P2.3 i P2.4. To znači da će svaki put kad pritisnemo prekidač I / O pin (2.3 ili 2.4) biti uzemljen i bit će slobodan ako se ne pritisne tipka. Pogledajmo kako možemo koristiti ovaj raspored tijekom programiranja.
Objašnjenje programiranja:
Program mora biti napisan za upravljanje 8 LED dioda u nizu kada se pritisne prekidač 1, a zatim kada se pritisne prekidač 2 redoslijed treba promijeniti. Kompletan program i demonstracija video možete pronaći na dnu ove stranice. Dalje u nastavku objasnit ću vam redak po redak tako da ga možete lako razumjeti.
Kao i uvijek trebali bismo započeti s funkcijom void setup () unutar koje bismo deklarirali igle koje koristimo ulazni ili izlazni pin. U našem programu izlazi 8 LED pinova, a 2 prekidača su ulazi. Ovih 8 LED-a spojeno je od P1.0 do P2.1, što je pin broj 2 do 9 na ploči. Tada su sklopke spojene na pin P2.3 i Pin 2.4, koji su brojevi 11 i 12. Dakle, proglasili smo sljedeće u void setup ()
void setup () {for (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } za (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
Kao što znamo, funkcija pinMode () deklarira pin kao izlaz ili ulaz, a funkcija digitalWrite () čini ga visokim (ON) ili niskim (OFF). Za izradu ove deklaracije koristili smo petlju for kako bismo smanjili broj linija. Varijabla „i” povećat će se od 2 do 9 u za petlju i za svaki povećanje funkcije unutra će se izvršiti. Još jedna stvar koja bi vas mogla zbuniti je izraz " INPUT_PULLUP ". Pin se može deklarirati kao ulaz samo pozivanjem funkcije pinMode (Pin_name, INPUT), ali ovdje smo umjesto INPUT-a koristili INPUT_PULLUP i obojica imaju primjetnu promjenu.
Kada koristimo bilo koje pinove mikrokontrolera, pin bi trebao biti povezan na donji ili na visoki. U tom su slučaju pin 11 i 12 spojeni na prekidač koji će se pritisnuti na masu. Ali kad prekidač nije pritisnut, pin nije povezan ni sa čim, ovo se stanje naziva plutajućim pinom i to je loše za mikrokontrolere. Dakle, da bismo to izbjegli, koristimo ili pull-up ili pull-down otpornik da držimo pin u stanju kada uđe u plutajući. U mikrokontroleru MSP430G2553 U / I pinovi imaju ugrađeni otpornik na izvlačenje. Da bismo to iskoristili, sve što moramo učiniti je pozvati INPUT_PULLUP umjesto INPUT tijekom deklaracije, baš kao što smo to učinili gore.
Sada idemo u funkciju void loop () . Sve što je napisano u ovoj funkciji, izvršavat će se zauvijek. Prvi korak u našem programu je provjeriti je li prekidač pritisnut i ako je pritisnut trebali bismo početi treptati LED diode u nizu. Za provjeru pritiska li se tipka koristi se sljedeći redak
if (digitalRead (12) == LOW)
Ovdje je nova funkcija funkcija digitalRead () , ova će funkcija očitati status digitalnog pina i vratit će se HIGH (1) kad pin dobije neki napon i vratit će se nisko LOW (0) kad je pin uzemljen. U našem hardveru pin će biti uzemljen samo kad pritisnemo tipku, inače će biti visok jer smo koristili pull-up otpornik. Stoga koristimo naredbu if da provjerimo je li gumb pritisnut.
Jednom kada je gumb pritisnut, ulazimo u beskonačnu petlju while (1) . Tu počinjemo treptati LED diode u nizu. Beskonačna while petlja je prikazan ispod i sve što je napisano unutar petlje će se izvoditi zauvijek do pauze; koristi se iskaz.
okretati (1) {}
Unutar beskonačnog, dok provjeravamo status drugog prekidača koji je spojen na pin 11.
Ako se pritisne ovaj prekidač, trepćemo LED u jednom određenom slijedu, trepnut ćemo u drugom slijedu.
if (digitalRead (11) == LOW) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); kašnjenje (100); } za (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Da bismo trepnuli LED u nizu, opet koristimo for petlju, ali ovaj put koristimo malo kašnjenje od 100 milisekundi pomoću funkcije delay (100) kako bismo mogli primijetiti kako se LED povećava. Da bi odjednom svijetlio samo jedan LED, koristimo i drugi for loop da isključimo sve LED. Dakle, uključujemo led čekanje neko vrijeme, a zatim isključujemo sve LED diode, a zatim povećavamo brojanje, uključujemo LED čekanje neko vrijeme i ciklus se nastavlja. Ali sve će se to dogoditi sve dok nije pritisnuta druga sklopka.
Ako se pritisne druga sklopka, promijenimo slijed, program će biti manje-više isti kao i za redoslijed u kojem je LED uključena. Linije su prikazane u nastavku, pokušajte pogledati i shvatiti što je promijenjeno.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); kašnjenje (100); } za (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Da, for petlja je izmijenjena. Prije smo radili da LED svijetli od broja 2 pa sve do 9. Ali sada ćemo krenuti od broja 9 i smanjivati se sve do 2. Na ovaj način možemo primijetiti je li prekidač pritisnut ili ne.
Postavljanje hardvera za treptanje LED sekvence:
U redu sa svim dijelovima teorije i softvera. Uzmimo neke komponente i vidjet ćemo kako ovaj program djeluje. Strujni je krug vrlo jednostavan i stoga se lako može izgraditi na ploči s pločama. Ali, zalemio sam LED i prekidače na perf boardu samo da bi izgledao uredno. Ispod je prikazana parfemska ploča koju sam zalemio.

Kao što vidite, izlazne igle LED-a i prekidač izvađene su kao igle konektora. Sada koristimo žice ženskog konektora za spajanje LED dioda i prekidače za izlaznu ploču MSP430 LaunchPad, kao što je prikazano na donjoj slici.

Učitavanje i rad:
Kad završite s hardverom, samo spojite ploču MSP430 na računalo i otvorite Energia IDE i upotrijebite program naveden na kraju ove stranice. Provjerite jesu li u Energia IDE odabrani desna ploča i COM priključak te kliknite gumb Prenesi. Program bi se trebao uspješno prevesti, a nakon što se prenese, prikazat će se "Gotovo slanje".
Sada pritisnite gumb 1 na ploči i LED bi trebao svijetliti u nizu, kao što je prikazano dolje

Također možete držati drugi gumb kako biste provjerili mijenja li se slijed. Kompletni rad projekta prikazan je u video ispod. Ako ste zadovoljni rezultatima, možete pokušati unijeti neke promjene u kod, poput promjene vremena kašnjenja, mijenjanja niza itd. To će vam pomoći da bolje naučite i razumijete.
Nadam se da ste razumjeli tutorial i naučili nešto korisno s njim. Ako ste se suočili s bilo kojim problemom, slobodno postavite pitanje u odjeljak za komentare ili koristite forume. Upoznajmo se u drugom vodiču u kojem ćemo naučiti čitati analogne napone pomoću naše lansirne rampe MSP30.
