Platforma Arduino PDF
Platforma Arduino PDF
1. Ce este Arduino?
Arduino este una dintre cele mai simplu de utilizat platforme cu microcontroller. 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.
Arduino este un instrument prin care poţi realiza sisteme informatice capabile să ‘perceapă’
şi să ‘controleze’ lumea înconjurătoare . Acest instrument este open-source şi este compus dintr-
un mediu de dezvoltare (o varianta de Wiring – platforma folosită pentru procesare multimedia) şi
o placă de dezvoltare cu microcontroler AVR.
Arduino poate fi folosit pentru dezvoltarea de obiecte interactive. Informaţia este preluată de
la o gamă variată de senzori şi comutatoare, se procesează în interiorul microcontrolerului AVR,
şi este transmisă către o gamă la fel de variată de lumini, motoare, actuatoare etc.
Plăcile de dezvoltare Arduino seamănă foarte mult între ele (din elementele comune am putea
enumera: intrările/ieşirile digitale, intrările analogice, microcontrolerul etc.). Din acest motiv
descriem în continuare doar placa de dezvoltare ArduinoUno:
-intrare analogică: este folosită pentru citirea semnalelor nondigitale. Ex. senzori de temperatură,
senzori de lumină, senzori de presiune, umiditate etc.
-intrare/ieşire digitală:imaginativa un intrerupator de la un bec. Acesta poate să aibă 2 stări: inchis
sau deschis adica 0 sau 1
-PWM (Pulse-width modulation): modulaţia în durată a impulsurilor. Poate fi utilizat pentru a
indeplinii o varietate foarte mare de sarcini, de la iluminarea LED pana la controlul vitezei
motoarelor electrice.
E) Configurare:
ArduinoIDE se configurează astfel. Din meniul Tools->Boards se selectează tipul de placă
folosit,
iar din meniul Tools->Ports se selectează portul COM folosit de placa de dezvoltare
F) Utilizare:
Fereastra aplicaţiei arată ca în imaginea de mai jos.
1) Zona meniu:
Deschide un proiect
Monitorizare serială – acest buton este folosit pentru comunicarea prin portul serial cu
calculatorul
2) Zona program:
Această parte din aplicaţie este folosită pentru scrierea şi editatrea programelor. Cu ajutorul
iconiţei din dreapta sus (sub forma de sageata orientata în jos) poţi redenumi/crea fisiere noi.
3) Zona compilator:
În această zonă vor aparea eventualele erori de compilare.
Regulă: fiecare proiect Arduino, chiar daca are doar un singur fișier sursă, trebuie plasat într-un
director cu același nume ca fișierul sursa.
Placa pe care o vom folosi pentru activitatea de laborator este Arduino Mega 2560, bazată
pe microcontrollerul Atmel AVR ATMega2560, pe 8 biti. Placa dispune de 54 de pini digitali
pentru intrare/ieşire, şi16 pini pentru preluare de semnale analogice. Unii pini pot avea funcție
multiplă, constituind semnale pentru diferite interfețe de comunicație (UART, SPI, I2C). Frecvența
microcontrollerului este de 16 MHz. Placa se alimentează prin cablul USB cu care se conectează
la calculator, sau poate fi alimentată cu o sursă de tensiune continuă, de 7 … 12 V, care poate
furniza o intensitate a curentului de minim 0.25 A. A doua opțiune este necesară când placa trebuie
să alimenteze periferice mari consumatoare, precum motoare, shield-uri GSM. Etc.
Orice program Arduino are doua sectiuni. Sectiunea "setup", care este rulata doar o singura
data, atunci cand placa este alimentata (sau este apasat butonul "Reset"), si sectiunea "loop", care
este rulata in ciclu, atat timp cat este alimentata placa. Sa luam un exemplu.
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.
H) Breadboard
Rezistorul este cel mai banal şi mai des utilizat component electronic. Spre exemplu un
telefon mobil are câteva sute de rezistori în interiorul lui. Menirea unui rezistor într-un circuit
electronic este să limiteze curentul (să reziste la trecerea curentului). Pentru a înţelege mai bine
haideţi să luăm ca exemplu o conductă cu apă. Cu cât conducta este mai îngustă, prin ea trece o
cantitate mai mică de apă. Aceasta are o rezistenţa mare. În schimb dacă lărgim conducta
respectivă, prin aceasta va putea trece o cantitate mai mare de apă, ceea ce înseamnă că rezistenţa
scade.
Rezistorii se măsoară în ohmi (Ω) şi se calculează după formula R=U/I. Unde U resprezintă
tensiunea, care se măsoară în Volţi, iar I reprezintă intensitatea, care se măsoară în Amperi.
Un caz mai aparte de rezistor este cel variabil. Valoarea acestuia (rezistenţa) poate fi
ajustată prin reglarea unui contact mecanic (cursor). De obicei acest tip de rezistori au trei
terminale şi se mai numesc potenţiometre.
Simbolizare:
A) Codul culorilor:
Valorile rezistenţelor sunt fie scrise fizic ca valoare pe acestea, fie trecută sub forma unor
bande colorate pe corpul rezistorilor. Pentru mai multe informaţii despre codurile de culoare vezi
şi http://en.wikipedia.org/wiki/Electronic_color_code . Programul gResistor te poate ajuta în
interpretarea codurilor de culoare.
B) Despre LED-uri:
Cuvântul LED vine de la Light Emitting Diode (diodă care emite lumină). Pentru a înţelege
ce înseamnă o diodă va trebuii să îţi imaginezi o stradă cu sens unic. Dacă vrei să intri pe această
stradă din sensul opus, există un poliţist care nu îţi va permite acest lucru. La fel, şi dioda permite
curentului să circule într-un singur sens. Printr-o diodă curentul poate trece doar de la pozitiv(+)
spre negativ(-). Exact acelaşi principiu se aplică şi LED-ului, ceea ce înseamnă că polaritatea este
importantă în alimentarea unui LED. LED-urile se folosesc în electronică încă din 1962, iar în
prezent tehnologia a permis folosirea acestora în cele mai diverse aplicaţii. De la dysplay-uri video
până la senzori optici.
Identificarea pinilor (+) şi (-) în cazul unui led se face foarte simplu.
Tot timpul pinul mai lung este (+) sau ANOD iar cel mai scurt este CATOD sau (-). De
asemenea în interiorul LED-ului catodul este mai proeminent faţă de ANOD.
Simbolizare:
void setup()
i=0
i=1
.............
se continua pana cand i este mai mic ca 8 adica i=7 cand se seteaza pin-ul 13 ca iesire
*/
pinMode(LED[i],OUTPUT);
}
void loop()
animatie();
void animatie()
int intarziere = 100; //se defineste 100ms interval intre aprinderea si stingerea unui led
stopLED = 7;
delay(intarziere);
}
3. Butoane
A) Ce sunt butoanele?
Sigur eşti familiarizat cu întrerupătoarele. În locuinţa ta foloseşti cel puţin unul, cel de
lumină. Rolul întrerupătorului este de a permite sau nu trecerea curentului electric prin acţionarea
unui contact mecanic.
Diferenţa între un întrerupător şi un buton este faptul că butonul are revenire, ceea ce
înseamnă că în momentul în care apeşi un buton acesta va revenii automat în poziţia iniţială fără
intervenţia ta. Exemple de butoane: tastatura de la PC, tastele unui telefon mobil etc.
Simbolizare
B) Bounce/Debounce
Datorită contactului mecanic din interiorul butonului în momentul acţionării acestuia,
semnalul trimis catre microcontroler nu este unul „curat” pornit/oprit ci este o trecere continuă
între pornit/oprit până la stabilizarea pe una dintre cele două stări. Efectul este de cele mai multe
ori nedorit. Spre exemplu: în momentul în care apeşi un buton trebuie să se deschidă o poartă iar
în momentul când îl apeşi din nou vrei ca poarta respectivă să se închidă. Fără o procedură adecvată
de debounce poarta ta va oscila între închis/deschis făcând din butonul respectiv o comandă
nesigură.
Pentru a „curăţa” acest semnal se pot folosi mai multe metode, şi anume hardware sau
software. Dacă eşti interesat de efectul de bounce al butoanelor găseşti mai multe informaţii
aici: http://roroid.ro/wiki/pmwiki.php/Main/DebouncingButtonsOnVirtualPorts, noi în continuare
vom folosi metoda software, deoarece este mai simplă şi nu implica modificari suplimentare în
partea electronică a montajului.
Secvenţa de program utilizată pentru a face debounce unui buton este urmatoarea:
#include <Bounce.h>// se include libraria pentru functiile de debounce
Bounce buton1 = Bounce(2,5); /*se defineste pinul pe care este legat butonul si durata in ms
pentru care se face debounce. Aici butonul este legat pe pinul 2 iar durata este definita la 5ms.
Durata aceasta inseamna ca daca apasati butonul intr-un interval mai mic de 5ms microcontrolerul
va inregistra 2 apasari astfel va inregistra 1 apasare.*/
pentru care se face debounce. Aici butonul este legat pe pinul 2 iar durata este definita la 5ms.
Durata aceasta inseamna ca daca apasati butonul intr-un interval mai mic de 5ms
microcontrolerul va inregistra 2 apasari astfel va inregistra 1 apasare.*/
void tasta(){
if ( buton1.update() ) { //se verifica starea butonului
if ( buton1.read() == HIGH) {
//daca butonul este apasat se executa secventa de cod descrisa mai jos
Serial.println("Salut lume!");
//se tipareste pe portul serial urmatorul mesaj si muta cursorul pe o noua linie
void loop(){
Bibliografie
https://www.robofun.ro/docs/Arduino%20pentru%20Toti%20pagini%201-30.pdf
http://www.roroid.ro/prima-lectie/
http://www.roroid.ro/arduinoleduri-si-nu-numai/
http://www.roroid.ro/butoane/
http://users.utcluj.ro/~rdanescu/pmp-lab01.pdf
https://tighpiverriapresas.wixsite.com/presanalbat/blog/arduino-pentru-incepatori-limba-romana-
download
https://tutoriale-pe.net/programarea-c-pe-placi-arduino/
https://gamessoon.ru/ro/arduino-basis-arduino-lessons-for-beginners-we-blink-led/