You are on page 1of 7

ARDUINO

Arduino este o platforma open-source (hardware si software), destinata in special mediului


universitar si pasionatilor de electronica. Este bazata pe microcontrollere ATMEL. Varianta
Arduino Uno contine un microcontroller ATMEGA328P.
Kit-ul de dezvoltare Arduino Uno este prezentat in figura de mai jos:

Fig. 1. Arduino Uno Rev. 3


Datorita arhitecturii deschise, in jurul lui s-au dezvoltat o serie de componente si clone,
beneficiind astfel de un suport dezvoltat din partea producatorilor si pasionatilor. Functiile de
baza pot fi extinse prin asa numitele shield-uri, ce se monteaza peste kit-ul de baza, intr-o
structura modulara (fig. 2).

Fig. 2. Shield-uri Arduino (in figura, shield-uri GSM)


1
Mediul de programare poate fi descarcat direct de pe site-ul producatorului: http://arduino.cc/
pentru toate sistemele de operare.
Mediul de programare Arduino este prezentat in figura 3. Pentru a putea utiliza correct kit-ul,
acesta trebuie selectat din meniul Tools->Board (fig. 4). De asemenea, trebuie specificat port-ul
pe care se face comunicatia cu calculatorul.
Un program Arduino are doua functii principale ce trebuiesc sa existe in fiecare program:
void setup (){
// cod initializare ruleaza o singura data
}
void loop (){
// bucla principala, ruleaza cat timp placuta este alimentata
}

Fig. 3. Mediul de programare Arduino

2
Fig. 4. Selectia kit-ului de dezvoltare
In momentul in care Arduino este prima data conectat la un calculator, vor trebui instalate
driverele pentru comunicarea serial. Acestea se gasesc in folder-ul descarcat de pe site-ul
http://arduino.cc/, dupa instalarea acestora putand selecta portul de comunicatie din meniul
Tools->Serial Port (fig. 4).
Arduino Uno dispune de 6 pini analogici si 13 pini digitali, dintre care 6 pot sa genereze semnal
PWM (Pulse Width Modulation). Pinii pot fi configurati ca intrari sau ca iesiri prin program.

3
Exercitii
Exercitiul 1: Initializarea pinilor In acest exercitiu vom folosi led-ul conectat pe pin-ul
digital 13 al kit-ului arduino pentru a il aprinde cu o frecventa de 0,5Hz.

/***************************************************************
Exercitiul 1 - Initializare pini, aprindere LED
***************************************************************/

void setup(){
pinMode(13,OUTPUT);
}

void loop(){
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}

Exercitii:
1. Modificati exemplul precedent pentru a obtine clipirea led-ului cu frecventa de 2Hz.
2. Modificati timpii, astfel incat intr-o perioada, LED-ul sa stea aprins 100ms si stins 900ms.
3. Modificati din nou cei doi timpi, astfel incat sa fie egali mai intai cu 50ms si apoi cu 10ms.

Exercitiul 2: Utilizarea iesirilor PWM In acest exemplu vom folosi un pin digital cu iesire
PWM pentru a aprinde un LED cu intensitate variabila

/***************************************************************
Exercitiul 2 - Aprindere LED intensitate variabila
***************************************************************/

void setup(){
pinMode(11,OUTPUT);
}

void loop(){
for (int i = 0; i < 255; i++){
analogWrite(11,i);
delay(50);
}

4
for (int i = 255; i > 0; i--){
analogWrite(11,i);
delay(50);
}
}

Exercitii:
1. Modificati exemplul precedent pentru a parcurge un ciclu complet in timpul de 2s.

Exercitiul 3: Intrari digitale In acest exemplu vom configure un pin digital ca intrare si vom
citi valoarea acesteia. Valoarea citita va fi afisata pe monitorul serial.

/***************************************************************
Exercitiul 3 - Citire intrari digitale (buton)
***************************************************************/

void setup(){
pinMode(7,INPUT);
Serial.begin(9600);
}

void loop(){
int button = digitalRead(7);
Serial.println(button);
delay(100);
}

Exercitiul 4: Intrari analogice In acest exercitiu vom folosi un pin analogic pentru a citi si
afisa pe monitorul serial valoarea unui sensor tactil si a unui sensor de lumina

/***************************************************************
Exercitiul 4 - Citire intrari analogice
***************************************************************/

void setup(){
Serial.begin(9600);
}

void loop(){
int button = analogRead(0);
Serial.println(button);
delay(100);
}

5
Exercitiul 5: Comanda cu informatii externe In acest exercitiu vom comanda
intensitatea luminoasa a unui LED prin intermediul unui sensor de lumina.

/***************************************************************
Exercitiul 5 - Aprinderea unui LED cu intensitate variabila in
functie de intensitatea luminii
***************************************************************/

void setup(){
pinMode(11,OUTPUT);
Serial.begin(9600);
}

void loop(){
int button = analogRead(0);
Serial.println(button);
int LED = map(button,0,1023,0,255);
Serial.println(LED);
analogWrite(11,LED);
delay(50);
}

Exercitiul 6: Comanda cu informatii externe In acest exercitiu vom comanda


intensitatea luminoasa a unui LED prin intermediul a doua butoane ce vor fi configurate sa
mareasca sau sa micsoreze intensitatea LED-ului.

/***************************************************************
Exercitiul 6 - Aprinderea unui LED cu intensitate variabila
controlata de doua butoane
***************************************************************/

int i = 0;

void setup(){
pinMode(11,OUTPUT);
pinMode(8,OUTPUT);
pinMode(2,INPUT);
pinMode(4,INPUT);
Serial.begin(9600);
}

void loop(){
digitalWrite(8,HIGH);
int up = digitalRead(2);
int down = digitalRead(4);

6
if (up == 1){
i++;
}
else{
if (down == 1){
i--;
}
}
if (i>255){
i=255;
}
if (i<0){
i=0;
}
Serial.println(i);
analogWrite(11,i);
delay(50);
}

You might also like