This is an old revision of the document!


Laboratorul 03 - Senzori și butoane predefinite

Scop

  • interacțiunea cu butoanele existente pe placă
  • utilizarea senzorilor prezenți pe placă

Cuvinte cheie

Butoane

Un buton este conceptual vorbind ca un întrerupător care permite sau nu trecerea curentului printr-o anumită secțiune dintr-un circuit. Astfel pentru a vedea dacă un buton (sau un întrerupător) este apăsat sau nu, verificăm valoarea tensiunii pe acea secțiune de circuit. Dacă valoarea logică este 0, atunci butonul nu este apăsat (practic, circuitul este întrerupt), iar dacă valoarea logică este 1, atunci butonul este apăsat. Valoarea efectivă a tensiunii poate fi 5V sau 3.3V în funcție de placa de dezvoltare folosită și de tipul de pin folosit pentru conectarea acelui buton.

Pentru conectarea efectivă a unui buton extern la o placă de dezvoltare schema ar arăta în felul următor:

Schema de mai sus este pentru conectarea unui buton la o placă de dezvoltare Arduino. Ideea de bază: avem 3 pini folosiți, unul pentru sursa de alimentare, unul pentru ground și un pin a citi valoarea tensiunii la baza butonului. Este extrem de importantă prezența rezistenței pentru a evita scurt-circuitul care ar apărea între alimentare și ground la apăsarea butonului.

Pentru placa Microbit și în cadrul simulatorului nu va fi nevoie să conectăm vreun buton extern deoarece sunt disponibile două butoane interne numite “A” și “B”:

Pini Analogici

Spre deosebire de pinii digitali care pot elibera doar 0 sau 5v, pinii analogici pot citi sau scrie valori mai variate (folosite pentru finețea măsurătorii). Valorile de scriere pot fi între 0-255 care sunt mapate pentru 0 - 5v.

Pinii analogici sunt semnalați cu ”~“.

Analog Write

Pentru a folosi Pulse Width Modulaton (PWM) folosim analogWrite în loc de digitalWrite

void setup() {
    pinMode(PINUL_MEU, OUTPUT);
}
void loop() {
    analogWrite(PINUL_MEU, 127); //Aprindem pinul la jumătate in intensitatea maximă
    delay(3000); // Așteaptă 3 secunde
    analogWrite(PINUL_MEU, 0); // Ledul este stins
 
    analogWrite(PINUL_MEU, 255); //Aprindem pinul la intensitatea maximă
    delay(3000); // Așteaptă 3 secunde
    analogWrite(PINUL_MEU, 0); // Ledul este stins
 
    analogWrite(PINUL_MEU, 68); //Aprindem pinul la un sfert din intensitatea maximă
    delay(3000); // Așteaptă 3 secunde
    analogWrite(PINUL_MEU, 0); // Ledul este stins
}

Exerciții

Toate exercițiile vor fi realizate pe Tinkercad

  1. Folosind un for aprindeți un led de la intensitate mică, la maxim, la din nou intensitate mică și în final stins complet folosind analogWrite și delay.
  2. Folosind o funcție care primește doi parametri ce reprezintă pini pentru led-uri. Porniți cu un led aprins maxim și unul stins, pe cel stins aprindeți-l pe o perioadă de timp similar cu exercițiul 1 iar pe cel aprins, stingeți-l pe o perioadă de timp.
  3. Parcurgeți o serie de minim 5 led-uri și aplicați pe fiecare, principiul de la exercițiul 1.
info2/laboratoare/03-old.1615829198.txt.gz · Last modified: 2021/03/15 19:26 by alexandru.vochescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0