Dupa ce am conectat placa Arduino la calculator,putem trece la primul nostru program.Vom face sa clipeasca un led aflat pe placa din fabrica,conectat la pinul 13(ar trebui sa apara pe orice placa Arduino).
Deschidem Arduino IDE si scriem urmatorul program,apoi apasam pe butonul Upload:
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
Acesta este cel mai simplu program posibil pentru Arduino si este folosit de obicei pentru a testea conexiunea placii cu computerul.
Haideti sa vedem cum este structurat acest program si sa veem ce face fiecare linie de cod.
Orice program in Arduino IDE este structurat in trei parti:o sectiune declarativa(care nu este prezenta in acest cod),sectiunea setup si sectiunea loop. Codul din sectiunea setup este executat o singura data,la alimentarea placii sau ori de cate ori este apasat butonul de reset, In sectiunea setup am spus placii sa pregateasca pinul 13,pentru OUTPUT(adica emisie semnal).Prin functia pinMode se initializeaza orice pin analog sau digital al Arduino.Sintaxa functiei pinMode este urmatoarea:pinMode(nr/nume pin,OUTPUT/INPUT). Nefiind nimic exterior conectat în acest moment la pinul 13 şi având din fabricaţie conectat un led la acest pin, când i se va cere acestuia să facă ceva, el va livra semnal ,aprinzand pinul.
Codul din sectiunea loop se repeta la nesfarsit,pana cand placa nu mai este alimentata. In sectiunea loop spunem placii sa livreze semnal HIGH(5V) pinului 13(aprinzand LED-ul),sa astepte 1000 de milisecunde(1 secunda),apoi sa livreze semnal LOW(0V) pinului 13(stingand LED-ul) si sa astepte din nou 1000 de milisecunde si tot asa. ED-ul 13 va clipi,stand aprins 0 secunda,apoi stingandu-se o secunda la nesfarsit.Observam ca functia digitalWrite este folosita pentru a trimite semnal HIGH sau LOW pe orice pin digital sau analog,sintaxa ei fiind digitalWrite(nr/nume pin,HIGH/LOW).
Acum sa facem un montaj pentru a aprinde un LED ,folosind un program similar.Dar mai intai...
Ce este un LED si cum functioneaza
In lumea moderna,aproape orice lumineaza contine LED-uri deoarece,spre deosebire de vechile becuri si beculete cu incandescenta,LED-urile nu se incalzesc si consuma mult mai putin curent electric.LED-urile pot exista sub mai multe forme:
Cu siguranta ati vazut de multe ori astfel de LED-uri. In montaje vom folosi LED-uri externe.
Numele de LED este un acronim(Light Emitting Diode).Dupa cum le spune si numele,LED-urile sunt de fapt niste diode,care cu ajutorul unor semiconductori speciali(mai multe detalii in acest link),disipeaza energia sub forma de lumina.Deoarece sunt diode,LED-urile sunt polarizate,avand o parte negativa(catodul) si una pozitiva(anodul)(voi folosi in continuarea termenii de catod si anod).LED-ul va functiona numai daca curentul va intra in LED prin anod si va iesi prin catod.Astfel,determinarea polaritatii unui LED este foarte importanta in proiecte. Un LED obisnuit are doua capete:unul mai lung,care este anodul si unul mai scurt,care este catodul.
De asemenea,pentru a impiedica arderea LED-ului din cauza tensiunii prea mari folosite de pinii digitali ai Arduino(5V),intotdeauna trebuie adaugat un rezistor inaintea anodului(limitand cantitatea de curent care trece prin LED).Un rezistor este un element de circuit(fabricat de obicei din carbon comprimat) care limiteaza cantitatea de curent dintr-un circuit. Cu cat rezistorul are o rezistenta mai mare( masurata in ohmi),cu atat blocheaza mai mult curent.
Si o comparatie foarte buna a rezistorilor cu niste zone inguste de pe o conducta de apa:
Sa trecem la partea distractiva...
Montajul
Pentru montaj vom folosi un breadboard(placa cu gaurele).Realizati montajul de mai jos:
Folosind fire cu conectori male-male,conectati anodul LED-ului cu orice pin digital de pe Arduino(eu am folosit pinul 8),adaugand inainte de anod un resistor(de preferat de 220 ohmi),iar catodul LED-ului poate fi conectat cu orice pin GND de pe placa.
Programul
Programul este similar cu cel de dinainte(va face ca LED-ul sa clipeasca la intervale de o secunda:
void setup() {
// put your setup code here, to run once:
pinMode(8,OUTPUT); // initializare pin 8 pentru emisie
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(8,HIGH); // trimite semnal HIGH prin pinul 8
delay(1000); // asteapta 1 secunda
digitalWrite(8,LOW); // trimite semnal LOW prin pinul8
delay(1000); // asteapta 1 secunda
}
Textele explicative inserate in cod se numesc comentarii;Arduino IDE nu ia in considerare textul de dupa slashul dublu.
Daca ati conectat LED-ul la un alt pin de pe placa,doar schimbati cifrele 8 din cod cu cifra corespunzatoare pinului vostru.Incercati sa modificati timpii de delay din cod.Ce se va intampla?
De asemenea,pentru a ne fi mai usor,putem numi pinul digital la care este conectat LED-ul,adaugand o sectiune declarativa inaintea setupului:
int pinLED=8; // numim pinul 8 pinLED
void setup() {
// put your setup code here, to run once:
pinMode(pinLED,OUTPUT); // initializare pinLED pentru emisie
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(pinLED,HIGH); // trimite semnal HIGH prin pinLED
delay(1000); // asteapta 1 secunda
digitalWrite(pinLED,LOW); // trimite semnal LOW prin pinLED
delay(1000); // asteapta 1 secunda
}
Observam folosirea semnului = pentru atribuirea unei variabile,in acest caz numirea pinului 8 pinLED. In fata atribuirii propriu-zise se adauga int(integer),pentru ca IDE-ul sa se astepte la o variabila intreaga(fara virgula).
Si acuma o sa va intrebati: se poate ca LED-ul sa primeasca si alte semnale in afara de HIGH si LOW?Cu alte cuvinte,LED-il poate sa aiba si alte pozitii in afara de APRINS si STINS, de exemplu pe jumatate aprins?Ei bine,se poate cu ajutorul functiei PWM,despre care vom vorbi in urmatoarea lectie.
Comentários