Experimentul 7

Fiți atenți

Rețineți că în acest experiment, rezistențele sunt instalate între catozi și sol, spre deosebire de experimentul pulsar.

Noi conectați LED-uri la porturile digitale, începând cu portul 2. Putem folosi porturile 0 și 1, dar ele sunt canalele de transmitere a datelor seriale și pentru fiecare bord firmware va trebui să dezactivați dispozitivele conectate la acestea.







Explicarea codului

Folosind expresia, organizăm o buclă cu un contor. În acest caz, pentru a configura porturile la ieșire. Pentru a face acest lucru, aveți nevoie de:

Inițializați contorul variabil, atribuiți-l valoarea inițială. În cazul nostru: int pin = FIRST_LED_PIN

Specificați starea în care ciclul se va repeta. În cazul nostru: PIN <= LAST_LED_PIN

Determinați regula prin care se va schimba contorul. În cazul nostru, +2 PIN (vezi mai jos despre operatorul ++).

De exemplu, puteți face o buclă pentru (int i = 10; i> 0; i = i - 1). În acest caz:

Variabila i i se atribuie valoarea 10

Această valoare satisface condiția i> 0

Prin urmare, blocul de cod plasat în buclă este executat pentru prima dată

Valoarea i scade cu 1, conform unei reguli date, și ia valoarea 9

Blocul de cod este executat a doua oară.

Totul se repetă din nou și până la valoarea i egală cu 0

Când devin 0, condiția i> 0 eșuează și ciclul se termină

Controlorul va merge la codul care urmează bucla pentru

Puneți codul pe care doriți să-l introduceți între o pereche de bretele <>. dacă există mai multe instrucțiuni în ea.

Variabila declarată în declarația pentru. pot fi folosite în interiorul unei bucle. De exemplu, în acest experiment, PIN-ul are secvențial valori de la 2 la 11 și este transmis în pinMode. vă permite să configurați 10 porturi într-o singură linie, plasate într-o buclă.







Variabilele-contoare sunt vizibile numai în bucla. Ie Dacă vă referiți la codul PIN înainte sau după buclă, compilatorul va afișa o eroare privind variabila nedeclarată.

Construcția i = i - 1 din explicația de mai sus nu este o ecuație! Folosim operatorul de atribuire = pentru a pune o valoare în variabila i egală cu valoarea curentă a i. redus cu 1.

Expresul ++ pin este așa-numitul. operatorul de incrementare. aplicată la pinul variabil. Această instrucțiune va da același rezultat ca pin = pin + 1

Tipul de date unsigned int este utilizat pentru a stoca ansambluri nesemnate, adică numai non-negative. Datorită bitului suplimentar, care acum nu este utilizat pentru stocarea caracterului, putem stoca valori de până la 65 535 într-o variabilă de acest tip.

Funcția millis returnează numărul de milisecunde care au trecut de când microcontrolerul a fost pornit sau a fost repornit. Aici îl folosim pentru a număra timpul dintre comutarea LED-urilor.

Cu ajutorul expresiei (ms / 120)% 10, determinăm care dintre cele 10 LED-uri ar trebui să fie acum aprinse. Pentru a parafraza, vom determina care segment de 120 de milimetri în prezent rulează și care este numărul său în interiorul actualului zece. Adăugăm numărul secvenței segmentului la numărul portului care apare primul în setul curent.

Faptul că stinge LED-ul cu digitalWrite (pin, LOW) la numai 10 ms după pornire nu este vizibil pentru ochi, deoarece foarte curând se va calcula din nou care dintre LED-urile va porni și va fi pornit - doar anulat sau următorul.

Întrebări pentru testare

De ce în acest experiment conectăm scala LED fără a folosi un tranzistor?

Dacă am inclus LED-uri numai la porturile 5, 6, 7, 8, 9, ce ar trebui să fie schimbat în program?

Cu ce ​​alte instrucțiuni se poate efectua o acțiune echivalentă cu pinul ++?

Care este diferența între int și nesigned int?

Ce se întoarce la funcția millis ()?

Cum în acest experiment se calculează numărul portului pe care LED-ul ar trebui să fie pornit?

Sarcini pentru decizia independentă

Schimbați codul astfel încât LED-urile să fie comutate la fiecare secundă.

Nu opriți porturile, asigurați-vă că lumina rulează numai pe cele patru diviziuni de mijloc.

Rescrieți programul astfel încât în ​​loc de int pin = FIRST_LED_PIN + (ms / 120)% 10, mutarea luminii a fost controlată de buclă for

Fără schimbarea firelor, schimbați programul astfel încât lumina să circule în direcția opusă.

Cu excepția cazurilor în care se specifică altfel, conținutul acestui wiki este licențiat sub următoarea licență: CC Attribution-Noncommercial-Share Alike 3.0 Unported

Instrumente pentru pagină







Articole similare

Trimiteți-le prietenilor: