- Nepieciešamais materiāls:
- Ķēdes shēma:
- Programmēšanas skaidrojums:
- Aparatūras iestatīšana mirgojošai LED secībai:
- Augšupielāde un darbība:
Šī ir otrā apmācības secība, kurā mēs apgūstam MSP430G2 LaunchPad no Texas Instruments, izmantojot Energia IDE. Pēdējā Blinky LED apmācībā mēs iepazīstinājām sevi ar LaunchPad izstrādes padomi un Energia IDE, kā arī augšupielādējām savu pirmo programmu, kuras mērķis ir regulāri mirgot borta LED.
Šajā apmācībā mēs uzzināsim, kā izmantot opciju Digitālā lasīšana un Digitālā rakstīšana, lai nolasītu ievades ierīces, piemēram, slēdža, statusu un kontrolētu vairākas izejas, piemēram, LED. Šīs apmācības beigās jūs būtu iemācījušies strādāt ar digitālajām ieejām un izejām, kuras var izmantot, lai saskarnētu daudzus digitālos sensorus, piemēram, IR sensoru, PIR sensoru utt., Kā arī ieslēgtu vai izslēgtu izejas, piemēram, LED, Buzzer utt. Izklausās interesanti pa labi!!? Sāksim.
Nepieciešamais materiāls:
- MSP430G2 LaunchPad
- Jebkuras krāsas LED - 8
- Slēdzis - 2
- 1k pretestība - 8
- Savienojošie vadi
Ķēdes shēma:
Mūsu iepriekšējā apmācībā mēs pamanījām, ka pats palaišanas paliktnis ir aprīkots ar diviem LED un slēdzi uz tāfeles. Bet šajā apmācībā mums būs nepieciešams vairāk nekā tas, jo mēs plānojam secīgi kvēlot astoņas LED gaismas, nospiežot pogu. Mēs mainīsim arī secību, kad tiks nospiesta vēl viena poga, lai tā būtu interesanta. Tāpēc mums ir jāveido ķēde ar 8 LED gaismām un diviem slēdžiem, pilnīgu shēmu var atrast zemāk.
Šeit 8 gaismas diodes ir izejas un divi slēdži ir ieejas. Mēs varam tos savienot ar jebkuru I / O tapu uz dēļa, bet es esmu savienojis LRD no tapas P1.0 līdz P2.1 un slēdzi 1 un 2 attiecīgi līdz tapām P2.4 un P2.3, kā parādīts iepriekš.
Visas gaismas diodes katoda tapas ir piesaistītas zemei, un anoda tapa ir savienota ar I / O tapām caur rezistoru. Šo rezistoru sauc par strāvas ierobežotāju, šis rezistors MSP430 nav obligāts, jo tā I / O kontakta maksimālā strāva var būt tikai 6mA un spriegums uz tapas ir tikai 3.6V. Tomēr to izmantošana ir laba prakse. Kad kāda no šīm digitālajām tapām iet uz augšu, iedegsies attiecīgā gaismas diode. Ja jūs varat atcerēties pēdējās apmācības LED programmu, tad jūs atceraties, ka digitalWrite (LED_pin_name, HIGH) padarīs LED mirdzošu un digitalWrite (LED_pin_name, LOW) pagriezīs LED.
Slēdži ir ievades ierīce, viens slēdža gals ir savienots ar iezemējuma spaili, bet otrs ir savienots ar digitālajām tapām P2.3 un P2.4. Tas nozīmē, ka ikreiz, kad mēs nospiežam slēdzi, I / O tapa (2.3 vai 2.4) tiks iezemēta un paliks brīva, ja poga netiks nospiesta. Apskatīsim, kā mēs varam izmantot šo vienošanos programmēšanas laikā.
Programmēšanas skaidrojums:
Programma ir jāraksta, lai vadītu 8 gaismas diodes secīgi, nospiežot slēdzi 1, un pēc tam, kad ir nospiests slēdzis 2, secība ir jāmaina. Pilnīga programma un demonstrācijas video var atrast pie šīs lapas apakšā. Tālāk es izskaidrošu programmu pa rindām, lai jūs to viegli saprastu.
Kā vienmēr, mums vajadzētu sākt ar funkciju void setup (), kurā mēs paziņojam, ka tapas, kuras mēs izmantojam, ir ievades vai izvades tapa. Mūsu programmā tiek izvadīti 8 LED kontakti un 2 slēdži ir ieejas. Šie 8 gaismas diodes ir savienotas no P1.0 līdz P2.1, kas ir dēļa tapas no 2 līdz 9. Tad slēdži ir savienoti ar kontaktu P2.3 un Pin 2.4, kas attiecīgi ir tapu numurs 11 un 12. Tātad mēs esam paziņojuši, ka iestatījumi nav spēkā ()
void setup () {for (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } par (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
Kā mēs zinām, funkcija pinMode () deklarē tapu kā izvadi vai ievadi, un digitalWrite () funkcija padara to augstu (ON) vai zemu (OFF). Lai izdarītu šo deklarāciju, mēs izmantojām for for loop, lai samazinātu līniju skaitu. Mainīgais “i” for ciklā tiks palielināts no 2 līdz 9, un katram pieaugumam tiks izpildīta funkcija iekšpusē. Vēl viena lieta, kas jūs varētu sajaukt, ir termins “ INPUT_PULLUP ”. Tapu var deklarēt kā ievadi, vienkārši izsaucot funkciju pinMode (Pin_name, INPUT), bet šeit mēs INPUT vietā izmantojām INPUT_PULLUP , un viņiem abiem ir ievērojamas izmaiņas.
Kad mēs izmantojam jebkuru mikrokontrollera tapu, tapai jābūt vai nu savienotai ar zemu vai augstu. Šajā gadījumā tapas 11 un 12 ir savienotas ar slēdzi, kas, nospiežot, tiks savienots ar zemi. Bet, kad slēdzis netiek nospiests, tapa nav savienota ar neko, šo stāvokli sauc par peldošo tapu, un tas ir slikti mikrokontrolleriem. Tāpēc, lai no tā izvairītos, mēs vai nu izmantojam pievilkšanas vai nolaišanas rezistoru, lai noturētu tapu stāvoklī, kad tas nokļūst peldošā stāvoklī. Jo MSP430G2553 Microcontroller I / O pins ir pull-up rezistors būvēts. Lai to izmantotu, viss, kas mums jādara, ir deklarēšanas laikā izsaukt INPUT_PULLUP, nevis INPUT, tāpat kā w ir darījis iepriekš.
Tagad ļauj pāriet uz funkciju void loop () . Viss, kas rakstīts šajā funkcijā, tiks izpildīts uz visiem laikiem. Pirmais solis mūsu programmā ir pārbaudīt, vai slēdzis ir nospiests, un, ja tiek nospiests, mums jāsāk mirgot LED pēc kārtas. Lai pārbaudītu, vai poga ir nospiesta, tiek izmantota šāda rinda
ja (digitalRead (12) == ZEMS)
Jauna funkcija ir digitalRead () funkcija, šī funkcija nolasīs digitālās tapas statusu un atgriezīs HIGH (1), kad tapa saņem zināmu spriegumu, un atgriezīs zemu LOW (0), kad tapa ir iezemēta. Mūsu aparatūrā tapa tiks iezemēta tikai tad, kad mēs nospiedīsim pogu, pretējā gadījumā tas būs augsts, jo mēs esam izmantojuši pievilkšanas rezistoru. Tāpēc mēs izmantojam if paziņojumu, lai pārbaudītu, vai poga ir nospiesta.
Kad poga ir nospiesta, mēs nokļūstam bezgalīgajā (1) ciklā. Šeit mēs sākam secīgi mirgot gaismas diodes. Bezgalīga kamēr cilpa ir redzams zemāk, un kāds ir rakstīts iekšpusē cilpas darbosies mūžīgi līdz pārtraukuma; paziņojums tiek izmantots.
whiel (1) {}
Bezgalīgā iekšpusē, kamēr mēs pārbaudām otrā slēdža, kas ir savienots ar 11. kontaktu, statusu.
Ja šis slēdzis tiek nospiests, mēs mirgo gaismas diode vienā noteiktā secībā, citādi mēs mirgosim to citā secībā.
if (digitalRead (11) == ZEMS) {par (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); kavēšanās (100); } (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Lai secīgi mirgot gaismas diode, mēs atkal izmantojam cilpu for , taču šoreiz mēs izmantojam nelielu 100 milisekunžu aizkavi, izmantojot aizkaves (100) funkciju, lai mēs varētu pamanīt, ka gaismas diode kļūst augsta. Lai tikai vienu LED spīdumu laikā mēs arī izmantot citu par cilpu, lai izslēgtu visus LED. Tātad mēs kādu laiku ieslēdzam gaidīšanas gaidīšanu un pēc tam izslēdzam visu gaismas diode, pēc tam palielinot skaitīšanas pagriezienu, gaismas diode kādu laiku jāgaida, un cikls turpinās. Bet tas viss notiks tik ilgi, kamēr netiek nospiests otrais slēdzis.
Ja tiek nospiests otrais slēdzis, mēs mainām secību, programma būs vairāk vai mazāk tāda pati kā gaidīšanas secībai, kurā tiek ieslēgta LED. Zemāk redzamās līnijas mēģiniet apskatīt un noskaidrot, kas ir mainīts.
else {par (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); kavēšanās (100); } (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Jā, for cikls ir mainīts. Iepriekš mēs lika LED mirgot no 2. numura un līdz pat 9. Bet tagad mēs sāksim no 9. numura un samazināsim līdz 2. Līdz ar to mēs varam pamanīt, vai slēdzis ir nospiests vai nē.
Aparatūras iestatīšana mirgojošai LED secībai:
Labi pietiek ar visu teorijas un programmatūras daļu. Let's get dažas sastāvdaļas un redzēt, kā šī programma izskatās darbībā. Ķēde ir ļoti vienkārša, un tāpēc to var viegli veidot uz maizes dēļa. Bet es esmu pielodējis gaismas diodi un slēdžus uz tāfeles, lai tas izskatās glīti. Perf lodīte, kuru es pielodēju, ir parādīta zemāk.
Kā redzat, mums ir LED un slēdža izejas tapas, kas izņemtas kā savienotāju tapas. Tagad mēs esam izmantojuši sieviešu un sieviešu savienotāju vadus, lai savienotu gaismas diodes un pārslēdzas uz MSP430 LaunchPad paneli, kā parādīts attēlā zemāk.
Augšupielāde un darbība:
Kad esat pabeidzis aparatūru, vienkārši pievienojiet MSP430 dēli savam datoram un atveriet Energia IDE un izmantojiet šīs lapas beigās norādīto programmu. Pārliecinieties, vai Energia IDE ir atlasīts pareizais dēlis un COM ports, un noklikšķiniet uz pogas Augšupielādēt. Programmai jābūt veiksmīgi kompilētai, un pēc augšupielādes tiks parādīts uzraksts “Gatavs augšupielādei”.
Tagad nospiediet pogu 1 uz tāfeles, un LED vajadzētu iedegties secīgi, kā parādīts zemāk
Varat arī turēt otro pogu, lai pārbaudītu, vai secība tiek mainīta. Pilnīga projekta darbība ir parādīta zemāk esošajā video. Ja esat apmierināts ar rezultātiem, varat mēģināt veikt dažas izmaiņas kodā, piemēram, mainīt aizkaves laiku, mainot secību utt. Tas palīdzēs jums labāk mācīties un saprast.
Ceru, ka esat sapratis apmācību un tajā iemācījies kaut ko noderīgu. Ja esat saskāries ar kādu problēmu, lūdzu, rakstiet jautājumu komentāru sadaļā vai izmantojiet forumus. Tiekamies citā apmācībā, kurā uzzināsim, kā nolasīt analogo spriegumu, izmantojot mūsu MSP30 palaišanas paliktni.