Proiectul Arduino 2 procesăm butonul clic pe exemplul de iluminare cu LED

  • principal
  • Proiectul 2: Procesăm un clic pe un exemplu de iluminare cu LED

Proiectul 2: Procesăm un clic pe un exemplu de iluminare cu LED


Acesta este un experiment cu butonul.





Vom porni LED-ul apăsând butonul și dezactivați-l când butonul este eliberat. Luați în considerare conceptul de bounce și metode software pentru eliminarea acestuia.

În acest experiment, vom folosi contactul D2 Arduino ca intrare. Aceasta vă permite să conectați la el un buton pentru interacțiunea cu proiectul în timp real. Atunci când este utilizat ca intrări Arduino utilizare-pull sus și derulante-rezistențe la intrare Arduino nu într-o stare „suspendat“ (în această stare, el va colecta interferențe externe și să ia valori arbitrare) și au o stare cunoscută (0 sau 1 ). Rezistențele de tracțiune trageau intrarea la alimentarea de + 5V, rezistențele de tracțiune tragând intrarea la GND. În plus, trage-sus și pull-down-rezistor asigură că butonul nu creează un scurt-circuit între + 5V și sol atunci când este apăsat. În experimentul nostru, pentru a conecta butonul, vom folosi un rezistor pulldown. Schema electrică este prezentată în Fig. 2.1.







Proiectul Arduino 2 procesăm butonul clic pe exemplul de iluminare cu LED

Fig. 2.1. Diagrama butonului și a conexiunii cu LED-uri


Când butonul este dezactivat, intrare D2 va fi tras la „pământ“ prin rezistor 10K, care va limita fluxul de curent, iar terminalul de intrare este setat la joasă tensiune. Apăsarea terminalului de intrare 5 este conectat direct la V. Cea mai mare parte a curentului va curge prin calea rezistenței prin butonul închis iar intrarea este generată la nivel înalt. Atunci când butonul este apăsat, pornim LED-ul, iar când este eliberat, acesta se stinge.
Codul acestei schițe este prezentat în Lista 2.1.

1. Piciorul lung al LED (anod) este conectat la un terminal digital de D10 Arduino, celălalt (catod) - prin 220 ohmi rezistor la terminalul GND (vezi Figura 2.1 ..).
2. Butoanele de intrare conecta la +5 V, celălalt - printr-un rezistor kOhm 10 la GND, butonul de ieșire conectată la intrarea D2 Arduino (vezi Figura 2.1 ..).
3. Descărcați schița de bord Arduino din listare 2.1.
4. Când butonul este apăsat, LED-ul ar trebui să fie aprins, atunci când este eliberat, ar trebui să se stingă.

Pentru a complica sarcina - vom comuta starea LED-ului (on / off) de fiecare dată când este apăsat butonul. Descărcați schița de bord Arduino din listare 2.2.

Când butonul este apăsat, LED-ul trebuie să-și schimbe starea. Dar acest lucru nu se va întâmpla întotdeauna. Vina pentru asta este sărirea butoanelor.
Butoanele sunt dispozitive mecanice cu un sistem de contact cu arc. Când apăsați butonul în jos, semnalul nu este doar trecerea de la mic la mare, acesta este în câteva milisecunde, valoarea se schimbă de la unul la altul, înainte de contact învecina strâns și set de mare.
Microcontrolerul va înregistra toate aceste prese, deoarece bounce-ul nu poate fi distins de apăsarea efectivă a butonului. Efectul de depanare poate fi eliminat programabil. Algoritmul este după cum urmează:

1. Salvăm starea anterioară a butonului și starea curentă a butonului (când LOW este inițializat).
2. Citiți starea curentă a butonului.
3. Dacă starea curentă a butonului diferă de starea anterioară a butonului, așteptați 5 ms, deoarece butonul s-ar putea să fi schimbat starea.
4. După 5 ms, citim starea butonului și îl folosim ca stare curentă a butonului.
5. Dacă starea anterioară a butonului a fost LOW și starea curentă a butonului HIGH, comutați starea LED-ului.
6. Setați starea anterioară a butonului pentru starea curentă a butonului.
7. Reveniți la pasul 2. Adăugați rutina de depanare a schițelor.
Obținem codul afișat în listare 2.3.

Încărcăm schița în placa Arduino și verificăm lucrarea. Acum, totul funcționează corect, fiecare apăsare a butonului modifică starea LED-ului.







Trimiteți-le prietenilor: