This is an old revision of the document!
Laboratorul 08 - Citire de pe pini
Scop
familiarizarea cu citirea datelor de la senzori
familiarizarea cu butoane
măsurarea voltajului de intrare pe pini
Cuvinte cheie
pinMode, digitalRead, analogRead, INPUT
buton, senzor, pullup, pulldown
Citirea de date de pe un pin
int button = 2;
void setup()
{
Serial.begin(9600); // Setăm frecvența pentru Serial Monitor
Serial.println("Am început programul");
pinMode(button, INPUT);
}
int buttonState = 0;
void loop()
{
buttonState = digitalRead(button);
Serial.print("Starea butonului este: "); // Mesaj ce precedează valoarea
Serial.println(buttonState);
}
Output-ul codului de mai sus va fi:
Am început programul
Starea butonului este 0
Starea butonului este 0
Starea butonului este 0
Am apăsat pe buton
Starea butonului este 1
Starea butonului este 1
Starea butonului este 1
Folosirea unui buton
Veți avea nevoie de:
Un Arduino Uno
Un buton
O rezistență de 1k ohmi
Modul de folosire a butonului:
În situația de mai sus, pinul 4 trebuie setat pe INPUT.
iar citirea datelor de la buton se face folosind int value = digitalRead(4)
analogRead vs digitalRead
digitalRead funcționează pe toți pinii, rezultatele sale sunt fie HIGH fie LOW.
analogRead returnează valori între 0 - 1023, iar analogRead poate fi folosit doar pe pinii analogici: A0 - A5. Exemplu: pinMode(A0, INPUT)
Senzor de lumină
Mod de utilizare:
Senzorul de lumină (fotorezistor) este un rezistor cu rezistența variabilă în funcție de lumină.
Citirea datelor pe cazul de mai sus:
Senzor de temperatură
Mod de utilizare:
Senzorul de temperatură este un rezistor cu rezistența variabilă în funcție de temperatură.
Citirea datelor se face în mod similar senzorului de lumină, însă va trebui să facem o conversie din valoarea citită în valoarea de tensiune echivalentă, iar apoi din valoarea de tensiune în valoarea efectivă de temperatură:
Setăm pinul A0 pe INPUT
Folosim o variabilă temp_sensor_value să citim datele folosind analogRead
Conversia valorii citite în valoarea de tensiune: float voltage = reading * (5000 / 1024.0); 5000 - 5V, 1024 - val maximă ADC
* Conversia valorii de tensiune în valoarea efectivă de temperatură: float temperature = (voltage - 500) / 10;
====== Exerciții ======
- Folosiți interfața seriala pentru a afișa la infinit un mesaj de tipul: “Salut, numele meu este X și am Y ani”. Mesajul trebuie să fie afișat unul pe linie, iar X și Y trebuie să fie variabile în cod (Nu folosiți direct valorile voastre).
- Realizați un circuit cu un buton și un led. Când butonul este apăsat, ledul trebuie să se aprindă. Inițial, legați rezistența spre GND, similar cu imaginea de mai sus, ulterior, legați butonul să vină spre GND. Observați diferența.
- Realizați un circuit cu un senzor de lumină și afișați datele citite de acesta pe interfața serială. BONUS Când lumina scade sub un anumit nivel, aprindeți un LED.