Sunteți pe pagina 1din 36

Utilizarea LED-urilor cu platforma

Arduino
Competenţe specifice: La sfârșitul lecției elevii vor fi capabili:
C1. Să identifice circuite electronice;
C2. Să utilizeze corect mediile de programare în electronică;
C3. Să respecte normele de protecție a muncii și de securitate;
C4. Să mențină bune relații profesionale;
C5. Să realizeze operații de conectare a componentelor electronice în
circuit;
• Arduino este o platforma utilizata pentru a
programa o serie de microcontrolere din familia
Atmel.
• Te poti gandi la el ca la un minicalculator (are
puterea de calcul a unui computer obisnuit de
acum 15 ani), fiind capabil sa culeaga informatii
din mediu si sa reactioneze la acestea.
Ce este un microcontroler

www.mikroe.com/chapters/view/1

• Un mic calculator într-un singur chip


• care conține un procesor, memorie și intrări / ieșiri, de obicei
"încorporat" în interiorul unui dispozitiv pe care îl controlează
• Un microcontroler este adesea de dimensiuni mici și ieftin
The Arduino Microcontroller: Atmel
ARV Atmega 328

Specification
Making-robots-with-arduino.pdf
Ce este o placă de dezvoltare

O placă de circuite
imprimate concepută
pentru a facilita lucrul cu
un anumit
microcontroler.

• Este alcătuită din:


• Circuite de alimentare
• Interfața de programare
• Pini de intrare/ieșire
Structura plăcii de dezvoltare
Arduino

Making-robots-with-arduino.pdf
Arduino utilizeaza procesoare de tip SoC (System on a Chip), specificatiile
fiecarui tip de Arduino putand fi gasite la
adresa https://www.arduino.cc/en/Products/Compare .

In cadrul laboratoarelor vor fi utilizate o serie de copii ale platformei Arduino Uno.
Microcontrolerul ce va fi utilizat este unul de tip ATmega328P, ce functioneaza la
o tensiune de 5V.
Desi pare putin, cei 16Mhz sunt suficienti pentru a face programe foarte complexe
insa nu va vor da atat de multa libertate ca si procesorul unui PC: de data aceasta
va trebui sa optimizati codul la maxim, altfel aveti sanse ca programul fie sa nu
incapa in memoria RAM (2Kb) sau sa nu ruleze la o viteza acceptabilă.
Tensiuni periculoase?
• Tensiunea electrică ce ar putea fi periculoasa pentru
om este de peste 24V (desi abia peste 50V poate
deveni fatala) - deci puteti lucra cu Arduino fara sa
aveti vreo temere ca ati putea sa va curentati. Mai
degraba ati putea voi sa faceti un rau placii Arduino
daca nu puneti firele cum trebuie sau daca o
alimentați la un transformator inadecvat (peste 12V).
In acest laborator veti conecta Arduino la porturile
USB ale calculatoarelor si cum acestea furnizeaza 5V
(500mA), curentul funrizat este suficient pentru ca
Arduino sa functioneze.
Pentru inceput iata cateva restrictii de care va
rugam sa tineti cont pentru a nu arde placile
Arduino pe care le avem in dotare:
• Nu alimentati Arduino decat de la portul USB al unui
calculator sau al laptopului personal.
Desi alimentarea din exterior cu tensiuni cuprinse intre
7V si 12V pe portul special conceput pentru alimentare nu ar
trebui sa ridice nici o problema si Arduino ar putea rula
programul ce deja este incarcat pe el, recomandam sa nu
alimentati din exterior aceste dispozitive pentru ca s-ar putea ca
transformatorul pe care il aveti sa nu furnizeze curentul exact in
intervalul precizat sau s-ar putea ca acesta sa nu fie foarte bine
filtrat (si sa aiba varfuri de tensiune de peste 12V care desi nu
dureaza decat o fractiune de secunda, sunt suficiente pentru a
arde placa).
• Aveti grija la obiectele metalice pe care le aveti pe banca. -
partea "dorsala" a Arduino nu este izolata in nici un fel. Din
acest motiv, atingerea sa de obiecte de metal poate provoca
scurtcircuitari si puteti avea sansa sa va ardeti atat Arduino-ul
cat si portul USB (daca nu chiar toata placa de baza) a
calculatorului unde este conectat.
• Nu scurtcircuitati Arduino in mod voit. - Nu puneti fire cu
ambele capete in Arduino (de exemplu daca un fir este pus pe
un pin care este setat cu LOW si cu celalalt capat intr-un pin
HIGH, curentul existent in pinul HIGH se va scurge in LOW si va
veti putea intalni cu aceleasi efecte neplacute ca si la punctul
precedent.
• Daca frige, nu e de bine. - Scoteti rapid Arduino din portul
USB si chemati profesorul cu care faceti laborator sa gasiti
care este cauza.
Ce este Arduino

todbot.com/blog/bionicarduino
Să începem
1. Descarcă & instalează mediul integrat de
dezvoltare Arduino (IDE)
2. Conectează placa la calculator prin cablu USB
3. Dacă este nevoie, instalează driverele
4. Lansează Arduino IDE
5. Selectează placa
6. Selectează portul serial
7. Deschide exemplul blink
8. Încarcă programul
Conectează cablul USB

todbot.com/blog/bionicarduino
Arduino IDE

See: http://arduino.cc/en/Guide/Environment for more information


Selectează Serial Port și Board
Arduino se conecteaza la PC prin intermediul unui port serial.
Primul pas pe care il ai de facut este sa determini acest port. Cea
mai simpla cale este de conectezi placa, astepti circa 30 de
secunde – 1 minut, ca sa fii sigur ca a fost detectata de PC, iar
apoi deschizi meniul "Tools -> Serial Port". Ar trebui sa vezi una
sau mai multe intrari. Memoreaza-le (sau scrie-le pe o foaie de
hartie / fa un screenshot). Deconecteaza placa Arduino din
portul USB (scoate cablul din PC). Deschide din nou meniul
"Tools -> Serial Port". Acel port care a disparut este portul
asociat placii Arduino. Conecteaza din nou placa Arduino la PC,
asteapta sa fie recunoscuta de PC, si apoi selecteaza portul
respectiv din meniul "Tools -> Serial Port".
Selectează Serial Port și Board

Urmatorul pas este selectarea tipului de placa cu care lucrezi. Din meniul
"Tools -> Board", selecteaza tipul de placa cu care lucrezi (Arduino Uno,
Leonardo, Mega, etc).
Anatomia unui program Arduino
Orice program Arduino are doua sectiuni. Sectiunea
"setup", care este rulata doar o singura data, atunci cand
placa este conectată (sau este apasat butonul "Reset"), si
sectiunea "loop", care este rulata in ciclu, atat timp cat este
alimentata placa.
void setup() {

//codul scris aici ruleaza o singura data


}
void loop() {
//codul scris aici ruleaza tot timpul

Astfel, in rutina "setup" vom pune de obicei cod de


initializare, iar in rutina "loop" vom scrie partea principala a
programului nostru. Sa luam un exemplu.
Status Messages

todbot.com/blog/bionicarduino
Arduino Blink
File > Examples > Digital > Blink
Pentru primul exemplu Arduino, vom folosi un led montat din fabricatie pe placa. Placa
Arduino are din constructie un led conectat la pinul digital 13. Acest led se aprinde atunci
cand pinul 13 digital este pus in HIGH (din programul scris pe Arduino) se stinge atunci cand
pinul 13 este pus in LOW.
void setup()
{ pinMode(13, OUTPUT);
}
void loop()
{ digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Daca încărcăm acest program pe placa Arduino si urmarim led-ul conectat la pinul 13 vei
observa ca el clipeste o data pe secunda.
Obs: atunci cand incarcati un program pe platforma Arduino, puteti observa
aprinderea intermitenta a doua leduri TX/RX aflata pe placa Arduino. Daca nu vedeti
aceste doua leduri palpaind inseamna ca nu ati selectat corect portul la care este
conectat Arduino sau nu ati instalat driverele.
Arduino Blink

In sectiunea "setup" avem o singura instructiune, care declara ca pinul 13 digital va fi


folosit in continuare pentru a controla un dispozitiv (daca am fi vrut sa citim informatie din
mediul – sa atasam un senzor la el – am fi scris "pinMode(13, INPUT)"). Aceasta instructiune
se executa o singura data.
Urmeaza sectiunea "loop", care aprinde led-ul conectat la pinul 13 ("digitalWrite(13,
HIGH)"), asteapta o secunda, il stinge si iarasi asteapta o secunda. Asa cum am spus mai sus,
instructiunile din sectiunea "loop" se executa ciclic, astfel ca imediat dupa ce s-a terminat un
ciclu, led-ul iarasi se aprinde, apoi iarasi se stinge si tot asa pana cand taiem alimentarea
placii.
Adaugați un LED extern la pinul 13
• Exemplul urmator este extrem de similar cu
acesta, doar ca in locul led-ului montat din fabrica
pe placa Arduino vom utiliza un led fizic conectat
la pinul 13 al placii.
• Atenție la polaritatea LED-urilor
– Catodul este pinul mai scurt și se conectează la
minusul sursei.
Utilizarea a 3 LED-uri care sa se
aprindă pe rând
Schema electrică
Programul
void setup(){
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
}
void loop(){
digitalWrite(13, HIGH);
delay(800);
digitalWrite(13, LOW);
delay(50);
digitalWrite(12,HIGH);
delay(800);
digitalWrite(12,LOW);
delay(50);
digitalWrite(11,HIGH);
delay(800);
digitalWrite(11,LOW);
delay(50);
}
Aplicația Knight Rider
int timer = 100; //
The higher the number, the
slower the timing.
// loop from the highest pin to
void setup() { the lowest:
for (int thisPin = 2; thisPin for (int thisPin = 7; thisPin
< 8; thisPin++) >= 2; thisPin--) {
{ // turn the pin on:
pinMode(thisPin, OUTPUT); digitalWrite(thisPin, HIGH);
} delay(timer);
} // turn the pin off:
digitalWrite(thisPin, LOW);
void loop() { }
// loop from the lowest pin to }
the highest:
for (int thisPin = 2; thisPin
< 8; thisPin++) {
// turn the pin on:
digitalWrite(thisPin, HIGH);
delay(timer);
// turn the pin off:
digitalWrite(thisPin, LOW);
}
Digital I/0

www.mikroe.com/chapters/view/1

pinMode(pin, mode)
Setează un pin ca fiind INPUT sau OUTPUT
digitalRead(pin)
Citește HIGH sau LOW de la un pin
digitalWrite(pin, value)
Scrie valorile HIGH sau LOW la un pin

Pinii de ieșire pot furniza un curent maxim de 40 mA.


Arduino Timing

• delay(ms)
– Pauses for a few milliseconds
• delayMicroseconds(us)
– Pauses for a few microseconds
• More commands:
arduino.cc/en/Reference/HomePage
Digital? Analog?
• Digital has two values: on and off
• Analog has many (infinite) values
• Computers don’t really do analog, they quantize
• Remember the 6 analog input pins---here’s how
they work

todbot.com/blog/bionicarduino
Bits and Bytes
Variables

www3.ntu.edu.sg
Putting It Together
• Complete the sketch
(program) below.
• What output will be
generated by this program?
• What if the schematic were
changed? 

www.ladyada.net/learn/arduino
Good References
www.arduino.cc
www.ladyada.net/learn/arduino
www.EarthshineElectronics.com
int timer=150;
void setup()
{for (int thisPin = 2; thisPin < 8; thisPin++)
{pinMode(thisPin,OUTPUT);}
}
void loop(){
for (int thisPin = 2; thisPin < 8; thisPin++){
digitalWrite(thisPin, HIGH);
delay(timer);
digitalWrite(thisPin, LOW);}
for (int thisPin = 7; thisPin >= 2; thisPin--){
digitalWrite(thisPin, HIGH);
delay(timer);
digitalWrite(thisPin, LOW);}
}

S-ar putea să vă placă și