Sunteți pe pagina 1din 4

Led Brick, ON/OFF

 
Un led brick reprezinta cea mai simpla cale sa generezi un semnal luminos
folosind Arduino. Un led brick necesita un port digital liber pentru a fi controlat de
catre Arduino.
 
Arduino Leonardo
void setup() {
    pinMode(13, OUTPUT);
}
void loop() {
    digitalWrite(13, HIGH);
    delay(1000);
    digitalWrite(13, LOW);
    delay(1000);
}
 
Rutina de instalare, care se executa numai o data, cand Arduino este alimentat,
declara pinul digital 13 (cel la care am conectat LED-ul) ca fiind un pin de iesire
(in sensul ca va controla un dispozitiv extern conectat la Arduino si nu va citi o
informatie digitala din mediu). Rutina loop, care se executa atat timp cat Arduino
este alimentat, aprinde LED-ul ridicand pinul 13 in HIGH (mai exact, face ca
tensiunea pinului sa fie 5 V), apoi asteapta o secunda, stinge LED-ul (tensiunea
pinului devine 0 V) si apoi asteapta inca o secunda.

Led Brick, intensitate variabila


 
 
In prima lectie am vazut cum putem aprinde si stinge un LED. In acest exemplu
vom folosi acelasi LED, insa il vom aprinde variabil. Chiar daca Arduino nu poate
scoate o tensiune variabila prin porturile digitale (scoate ori 5V, ori 0V), exista o
posibilitate de a genera un semnal de putere variabila pe unul dintre porturile
sale. Acest lucru se realizeaza prin generarea unui semnal dreptunghiular, care
se plimba periodic, foarte rapid, intre 0V si 5V. In functie de cat timp sta in 5V si
cat timp sta in 0V, puterea semnalului variaza. Numele acestui gen de semnal
este "PWM". 

void setup() {
     pinMode(11, OUTPUT);
}
void loop() {
     for (int i = 0; i < 255; i++){
          analogWrite(11, i);
          delay(50);
     }
     for (int i = 255; i > 0; i--){
          analogWrite(11, i);
          delay(50);
     }
}
 
Rutina setup, care se executa o singura data, cand Arduino este alimentat,
declara pinul digital 11 (cel la care am conectat LED-ul) ca fiind un pin de iesire.
 
In rutina loop este interesanta instructiunea analogWrite, care defineste puterea
semnalului PWM de iesire. Ca parametri, instructiunea analogWrite primeste
pinul (11, in cazul nostru) si puterea semnalului (variabila, de la 0 la 255).
Aceasta instructiune este apelata intr-un ciclu for, care modifica valoarea
variabilei i intre 0 si 255. Efectul va fi ca LED-ul se va aprinde gradat pana la
maxim, iar apoi se va stinge treptat.

Senzor Lumina Brick


 
Dupa ce am comandat LED-uri si am citit valori digitale din mediu, senzorul de
lumina este primul exemplu de citire a valorilor analogice din mediu. Un senzor
de lumina da o valoare numerica intre 0 si 1023, valoare proportionala cu nivelul
de iluminare din mediul ambiant.
 
void setup() {
    Serial.begin(9600);
}
void loop() {
    int nivelIluminare = analogRead(0);
    Serial.println(nivelIluminare);
    delay(10);
}
 
In aceeasi rutina de instalare mai trebuie sa initializam o comunicare seriala cu
PC-ul, pe care o vom folosi ca sa transmitem si sa vizualizam valorile citite de
senzorul de lumina. Rutina loop citeste valoarea data de senzorul de lumina
(conectat la portul serial 0) si o afiseaza in consola seriala. Poti vedea aceasta
informatie deschizand Serial Monitor in Arduino IDE. Pentru a verifica daca
lucrurile functioneaza corect, pune degetul peste senzorul de lumina. Vei
observa ca valoarea pe care o vezi in Serial Monitor scade.

Semafor, Trei Led-uri Brick


 
In acest proiect vom folosi un LED verde brick, un LED galben brick si un
LED rosu brick pentru a genera un efect de tip semafor. Pentru alimentarea celor
trei LED-uri, vom utiliza un breaboard. Conectarea se face exact ca in situatia in
care ai folosit un singur LED, doar ca vei folosi breadboard-ul pentru a obtine mai
multe puncte GND.
 
 
void setup() {
    pinMode(13, OUTPUT);
    pinMode(12, OUTPUT);
    pinMode(11, OUTPUT);
}
void loop() {
    digitalWrite(13, HIGH);
    delay(1000);
    digitalWrite(12, HIGH);
    delay(200);
    digitalWrite(13, HIGH);
    digitalWrite(12, HIGH);
    digitalWrite(11, HIGH);
    delay(1000);
    digitalWrite(12, HIGH);
    delay(200);
    digitalWrite(11, HIGH);
    digitalWrite(12, HIGH);
    digitalWrite(13, HIGH);
    delay(1000);
}
 
Rutina de setup face acelasi lucru ca in exemplul cu un singur LED, doar ca
acum declara trei pini in loc de unul. Rutina loop aprinde initial LED-ul verde timp
de o secunda, apoi LED-ul galben timp de 0.2 secunde, urmand sa stinga LED-ul
verde si sa il aprinda pe cel rosu. Dupa o secunda, reincepe acelasi ciclu, dar de
data aceasta cu LED-ul verde aprins.

Lampa de Veghe
 
Sau mai bine spus, LED-ul de veghe. Pentru acest proiect ai nevoie de un
LED brick, un senzor de lumina brick si, evident, de un Arduino. Vom programa
Arduino ca, ori de cate ori nivelul de iluminare scade sub o anumita valoare, sa
aprinda LED-ul, apoi sa il stinga cand nivelul de iluminare creste. Daca mai
folosesti si o bila de ping-pong in care bagi LED-ul brick (si folosesti un
LED brick albastru), rezultatul arata chiar excelent! Pentru conectarea
componentelor la Arduino, vezi mai sus sectiunea despre LED brick si
despre senzorul de lumina. Probabil ca vei vrea sa folosesti un breadboard
pentru a obtine mai multe puncte VCC si GND.
 
 
void setup() {
    pinMode(11, OUTPUT);
}
void loop() {
    int nivelIluminare = analogRead(0);
    if (nivelIluminare < 300) {
        digitalWrite(11, HIGH);
    } else {
        digitalWrite(11, LOW);
    }
}
 
In cadrul rutinei de instalare, se declara pinul la care este conecta LED-ul ca pin
de iesire. Rutina loop verifica daca nivelul de iluminare a scazut sub un anumit
prag predefinit, in caz afirmativ aprinzand LED-ul. In caz contrar, il stinge. S-ar
putea ca pragul ales de mine sa nu fie potrivit pentru parametrii din incaperea ta,
si atunci LED-ul va ramane stins. Daca se intampla acest lucru, trebuie sa
maresti valoarea pragului la nivelul dorit, sau sa folosesti debug-ul serial ca sa
vezi exact valoarea pe care o masoara senzorul in camera ta (vezi lectia a doua,
despre debug). Daca valoarea prag-ului este bine aleasa, atunci LED-ul va
ramane stins. Ca sa testezi daca functioneaza, pune degetul peste senzorul de
lumina, iar LED-ul se va aprinde.