Sunteți pe pagina 1din 8

PROIECT INDIVIDUAL

,,SEGMENT CU 7 LEDURI Numrtor cu


microcontroler Atmega328P

Prof.
,,Univeristatea Transilvania din Braov Student: Crciun Ovidiu

ARDUINO UNO R3

ACOMODARE N ARDUINO I FUNCII ELEMENTARE


ARDUINO are din constructive pini digitali (Obs:
Pinul 13 al placutei are si un LED L care poate fi
programat) 0-13, acetia pot fi programai astfel
nct pentru a se aprinde un led de la un pin digital
Ex:13 este nevoie a da comanda HIGH pentru a lsa
s treac tensiune din pinul 13 i s se sting
atunci cnd este pus n LOW.

CODUL ARDUINO

void Cuvntul cheie ,,void este folosit doar n


declaraiile funciei. Indic faptul c nu se
ateapt ca aceasta s returneze o informaie
spre funcia din care a fost apelat.

setup() Funcia ,,setup() este apelat atunci cnd dorim


s iniializm: Variabile, pini de INTRARE, pini de
IEIRE.

loop() Dup crearea funciei ,,setup() (care


iniializeaz i stabilete valorile iniiale),
funcia ,,loop() sau funcia ,,bucl dup cum i
numele o sugereaz, ine programul ntr-o
secven consecutiv permind programului s
se schimbe i s afieze.

DECLARAII N a) Configurarea pinilor de intrare sau ieire prin


FUNCIA ,,void setup() { } sintaxa ,,pinMode();

b) Parametrii lui ,,pinMode ( x , y )


UNDE:
x = pin - > spunem crui pin s fie de intrare sau
ieire. Ex: 13)
y = mode - > declaram constant pentru a seta
,,pin INTRARE sau IEIRE. Ex: OUTPUT, INPUT)

c)Exemplu final: pinMode( 13, OUTPUT);


DECLARAII N a) Configurarea pinilor de HIGH sau LOW prin sintaxa
,,digitalWrite();
FUNCIA ,,void loop() { codul
scris aici ruleaz tot timpul }
b) Parametrii funciei ,,digitalWrite( x , y )
UNDE:
x = pin - > spunem crui pin s dm valoare de 0-5v
y = value -> declarm constatnta HIGH sau LOW pentru
a trimite tensiune 0 5v adica STINS APRINS.

c) Exemplu final: digitalWrite( 13 , HIGH); sau


digitalWrite( 13, LOW);

a) Configurarea Citirii din pinul digital specificat prin


sintaxa ,,digitalRead(pin)
Exemplu final:
01.Int inPin=7;
02. Int val 0=0;
03.void loop();
04.{
05.val= digitalRead(inPin);
06.}

d) Delay ntrzierea pentru o perioad de timp (n


milisecunde) 1000ms = 1s prin sintaxa delay(x)
Parametrii funciei delay :x-> ms numrul in
milisecunde pentru o oprire temporar
Exemplu final: delay(1000);

I. APRINDERE LEDURI PRIN FOTOREZITOR

Pagina 3
n continuare aprindem 6 leduri dup valorile de iluminare dat de
fotorezisten.
Dup ce am scris codul n programul arduino i l-am compilat, la TOOLS din bara de MENIU din
programul arduino am ales comanda SERIAL MONITOR pentru a-mi indica valoarea pe care o trimite
fotorezistena prin portul serial ctre calculator, astfel am putut determina valorile medii din camera
pentru a putea implementa cate o valoare pe fiecare pin unde sunt conectate fiecare din cele 6
leduri pentru a face un joc de lumini. n continuare voi pune valorile pentru fiecare pin unde sunt
conectate ledurile de la D6 pn la D11, dup cum urmeaz:

LEDURILE VALORILE ASOCIATE


D6 665
D7 660
D8 655
D9 650
D10 645
D11 640

Dac fotorezistena sesizeaz valori mai mici dect acestea, spre exemplu sesizeaz o valoare de 662
(valoare mai mic dect 665) printr-o condiie asemntoare cu :
00. if (lumina >=665)
01. digitalWrite(6,LOW);
02. else

Pagina 4
03. digitalWrite(6,HIGH);
Aceast instruciune i indic faptul c acea condi ie a fost indeplinit i astfel se poate aprinde ledul
D6 . Aa se procedeaz cu toate celelalte valori.

Mai jos este codul scris n arduino:


int analogInPin= A0;

void setup() {

Serial.begin(9600);// initializeaza o comunicare seriala intre

//Arduino si PC cu viteza de 9600 de biti pe secunda

//pinMode(12,OUTPUT);

pinMode(11,OUTPUT);

pinMode(10,OUTPUT);

pinMode(9,OUTPUT);

pinMode(8,OUTPUT);

pinMode(7,OUTPUT);

pinMode(6,OUTPUT);

pinMode(analogInPin, INPUT);

void loop() {

int lumina = analogRead(0);

Serial.println(lumina);//care trimite valoarea variabilei "lumina"

//catre PC

delay(10);

if (lumina >=640)

Pagina 5
digitalWrite(11,LOW);

else

digitalWrite(11,HIGH);

if (lumina >=645)

digitalWrite(10,LOW);

else

digitalWrite(10,HIGH);

if (lumina >=650)

digitalWrite(9,LOW);

else

digitalWrite(9,HIGH);

if (lumina >=655)

digitalWrite(8,LOW);

else

digitalWrite(8,HIGH);

if (lumina >=660)

digitalWrite(7,LOW);

else

digitalWrite(7,HIGH);

if (lumina >=665)

Pagina 6
digitalWrite(6,LOW);

else

digitalWrite(6,HIGH);

SIMULARE N PROTEUS
Dup ce am verificat fizic funcionabilitatea proiectului a rmas sa fac o nou simulare n PROTEUS.
Am introdus codul hex generat de ctre ARDUINO

Am rulat programul:

Pagina 7
FINISH

Pagina 8

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