0% au considerat acest document util (0 voturi)
10 vizualizări18 pagini

Ghid Practici Arduino

Acest document prezintă exemple de bază de programare în Arduino și concepte fundamentale precum achiziția de semnale analogice. Include două tutoriale despre programarea de bază în Arduino și utilizarea unui simulator online. Obiectivul este ca studenții să învețe să programeze coduri simple în Arduino, să înțeleagă mediul de programare și concepte precum achiziția de semnale.

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
10 vizualizări18 pagini

Ghid Practici Arduino

Acest document prezintă exemple de bază de programare în Arduino și concepte fundamentale precum achiziția de semnale analogice. Include două tutoriale despre programarea de bază în Arduino și utilizarea unui simulator online. Obiectivul este ca studenții să învețe să programeze coduri simple în Arduino, să înțeleagă mediul de programare și concepte precum achiziția de semnale.

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Practica 1.

Programare de bază în Arduino

Conț inuturi

În această practică, sunt prezentate câteva exemple de bază de programare în Arduino și se


introducerea fundamentelor pentru programarea citirii senzorilor prin intermediul acesteia
platforma. În practică, se vor evalua câteva exemple simple cu un simulator online.

În scenariul de practică sunt incluse două tutoriale de bază de programare Arduino și de


utilizarea simulatorului online de Arduino care va fi utilizat pentru a rezolva exercițiile
propuse la sfârșitul scenariului de practică.

Obiectivele practicii

- Cunoașteți mediul de programare Arduino


- Ser capabil să programez coduri simple în Arduino
- Înțelegerea conceptului de achiziție a unui semnal analogic

-
Tutorial 1. Manual de bază pentru Arduino
Caracteristici generale ale plăcii

Este vorba despre o placă open hardware, astfel că designul său este de liberă distribuție și utilizare, care
inclusiv putem construi noi înșine (În Figura 1 se observă aspectul plăcii). În
pe următoarea web poate fi găsită multe informații referitoare la placă:

[Link]

Figura 1. Aspectul plăcii Arduino Uno.

Programul va fi implementat folosind mediul de programare propriu Arduino și se


se va transferi folosind un cablu USB. Deși în cazul plăcii USB nu este necesar să folosești o
sursa de alimentare externă, deoarece cablul USB în sine o furnizează, pentru realizarea de
unele dintre experimentele practice va fi necesar să dispunem de o sursă de
alimentare externă, deoarece alimentarea furnizată de USB poate să nu fie suficientă. El
tensiunea sursei poate fi între 6 și 25 Volți.

Mediu de dezvoltare

Pentru a programa placa, este necesar să descărcați de pe pagina web Arduino mediul de
dezvoltare (IDE). Există versiuni pentru Windows și pentru MAC, precum și sursele pentru
compilarlas în LINUX. În Figura 2 se arată aspectul mediului de programare. În
în cazul în care dispuneți de un dispozitiv USB, este necesar să instalați driverele FTDI. Aceste drivere vin

inclus în pachetul Arduino menționat anterior. Există pe web versiuni pentru


sisteme de operare diferite.

2/15
Figura 2. Mediu de dezvoltare.

Primul lucru pe care trebuie să-l facem pentru a începe să lucrăm cu mediul de dezvoltare
arduino este configurarea comunicațiilor între placa Arduino și PC. Pentru aceasta va trebui să
deschideți în meniul "Instrumente" opțiunea "Port Serial". În această opțiune ar trebui să selectăm portul

serie la care este conectată placa noastră. În Windows, dacă nu cunoaștem portul la care este
Conectând placa noastră, putem descoperi acest lucru prin intermediul Administratorului de dispozitive (Porturi)

COM și LPT/ Port Serial USB.

Primul pas pentru a verifica că tot ce am făcut până acum este bine și
familiarizarea cu interfața de dezvoltare, este deschiderea unuia dintre exemple. Se recomandă deschiderea
exemplu "Blink". Pentru aceasta, trebuie să accesăm prin meniul Fișier -> Sketchbook -> Exemple ->
Digital -> Clipit.

Exemplul "Blink" nu face decât să clipească un LED care este montat pe pinul numărul 13
de la placă. Vom vedea ce trebuie făcut pentru a încărca programul pe placa Arduino. Mai întâi
verificăm că codul sursă este corect. Pentru aceasta, apăsăm butonul de verificare
cod (Figura 2, buton A). Dacă totul decurge bine, ar trebui să apară un mesaj în partea de jos a
interfață indicând "Compilare terminată". Odată ce codul a fost verificat

3/15
vom proceda la încărcarea pe placă. Pentru aceasta, trebuie să apăsăm butonul de încărcare (Figura 2,
buton B).

În timpul încărcării programului, pe placa USB, se vor aprinde LED-urile care indică faptul că se desfășoară

trimiterea și primirea informațiilor prin portul serial: TX/RX. Dacă totul a fost realizat
corect, mesajul "Încărcare finalizată" trebuie să apară. Acum trebuie să așteptați aproximativ 8
câteva secunde aproximativ pentru a verifica că totul a ieșit bine. Dacă ledul plasat pe pin
13 de la placa se aprinde și se stinge la fiecare secundă, atunci totul a decurs bine. În sfârșit avem
totul este pregătit pentru a începe să lucrez cu placa Arduino.

Structura de bază a unui program

Structura de bază a programării Arduino este destul de simplă și împarte execuția în două
partes: setup și loop. Setup() constituie pregătirea programului și loop() este execuția. În la
funcția Setup() include declarația de variabile și este prima funcție care se
execută în program. Această funcție se execută o singură dată și este folosită pentru a configura
pinMode (de exemplu, dacă un anumit pin digital este de intrare sau ieșire) și inițializați comunicația
serie. Funcția loop() include codul care trebuie executat continuu (citind intrările de
la placa, salidas, etc.).

void setup() {
inMode(pin, OUTPUT); // Stabilește 'pin' ca ieșire
}
void loop() {
digitalWrite(pin, HIGH); // Activează 'pin'
întârziere(1000); Pauză un minut
digitalWrite(pin, LOW); // Dezactivează 'pin'
întârziere(1000);
}

Așa cum se observă în acest bloc de cod, fiecare instrucțiune se termină cu ; și comentariile se
indică cu //. La fel ca în C, se pot introduce blocuri de comentarii cu /* ... */.

Funcț ii
O funcție este un bloc de cod identificat printr-un nume care este executat atunci când
funcția este apelată. Declarația unei funcții include în primul rând tipul de date
ce returnează funcția (de exemplu, int dacă ceea ce returnează este o valoare întreagă). După tipul de
datele specifică numele funcției.

int delayVal()
{
int v; // creează o variabilă temporară 'v'
v = citireAnalogica(pot); // citește valoarea potențiometrului

4/15
v /= 4; // convertește valorile 0-1023 în 0-255
returnează v; // returnează valoarea finală a variabilei
}

Variabile

O variabilă trebuie să fie declarată și opțional asignată unei valori determinate. În la


Declararea variabilei indică tipul de date pe care îl va stoca (int, float, long)

int variabilaIntrare = 0;

O variabilă poate fi declarată la începutul programului înainte de setup(), localmente la o


funcția determinată și chiar într-un bloc, cum ar fi un ciclu. Locul în care
variabila este declarată determină domeniul acesteia. O variabilă globală este aceea care poate
a fi angajată în orice funcție a programului. Aceste variabile trebuie declarate la început
al programului (înainte de funcția setup()).

int v; 'v' este vizibil în întregul program

void setup()
{
// nu este necesară configurarea
}

void loop()
{
pentru (int i=0; i<20;i++) // 'i' este vizibil doar în buclă
i++;
float f; 'f' este vizibil doar în funcția loop()
}

Tipuri de date

Arduino permite gestionarea următoarelor tipuri de date:

Byte. Stochează o valoare numerică de 8 biți. Au un interval de 0-255.


Int. Stochează o valoare întreagă de 16 biți cu un interval de 32.767 la -32.768.
Long. Valoare întreagă stocată în 32 de biți cu o gamă de [Link] la -
[Link]
Float. Tip de număr în virgulă mobilă stocat în 32 de biți cu un interval de 3.4028235E+38 la -

3.4028235E+38.
Array-urile reprezintă o colecție de valori care pot fi accesate cu un număr de
indice (primul valoare al indicelui este 0). Exemple de utilizare:
o Definiție și alocare. int myArray[] = {valoare0, valoare1, valoare2...}
o Definiție. int myArray[5]; // declară un array de 6 întregi
o Atribuirea celui de-al patrulea component. myArray[3] = 10;

5/15
o Recuperați al patrulea component și atribuiți-l lui x. x = myArray[3];

Operatori aritmetici
Folosind variabile, valori constante sau componente ale unui array pot fi realizate
operații aritmetice și se poate utiliza operatorul cast pentru conversia tipurilor. Ex. int a
= (int)3.5; În plus, se pot face următoarele asocieri:
x ++. La fel ca x = x + 1.
x --. La fel ca x = x - 1, sau decrementări ale lui x cu -1.
x += y. Aceeași lucru cu x = x + y, sau creșteri ale lui x cu +y.
x -= y. La fel ca x = x - y.
x *= y. La fel ca x = x * y.
x /= y. La fel ca x = x / y.
Pentru utilizarea în propoziții condiționale sau alte funcții, Arduino permite utilizarea celor
următorii operatori de comparație:
x este egal cu y.
x nu este egal cu y.
x < y, x > y, x <= y, x >= y.
Și următorii operatori logici:
Și logic: dacă (x > 0 && x < 5). Este adevărat dacă ambele expresii sunt adevărate.
O logică: dacă (x > 0 || y > 0). Adevărat dacă vreo expresie este.
NO logic: dacă (!x > 0). Corect dacă expresia este falsă.
Limbajul Arduino prezintă următoarele constante predefinite: ADEVĂRAT / FALS și
ÎNALT/SCĂZUT. Aceste constante definesc nivelurile pinilor ca ÎNALT sau SCĂZUT și sunt
angajați atunci când se citesc sau se scriu în intrările sau ieșirile digitale. HIGH este definit
nivelul logic 1 (ON) sau 5 V. LOW este nivelul logic 0, OFF, sau 0 V.
INPUT/OUTPUT sunt constante folosite cu funcția pinMode() pentru a defini tipul de
un pin digital folosit ca intrare INPUT sau iesire OUTPUT. Ex. pinMode(13, OUTPUT);

Sentinț e condiț ionale

Limbajul Arduino permite realizarea unor instrucțiuni condiționale if, if... else, for, while, do... while.
Utilizarea sa este similară cu funcțiile corespunzătoare din C.

Intrări ș i ieș iri digitale ș i analogice

Funcț ia pinMode(pin, mod)

Funcție utilizată în funcția setup() pentru a configura un pin dat să se comporte ca INPUT sau
OUTPUT. Ej. pinMode(pin, OUTPUT); configurează pinul numărul 'pin' ca ieșire. Pinii de
Arduino funcționează prin default ca intrări, astfel încât nu trebuie declarate.
explicit ca intrări folosind pinMode().

Funcț ia digitalRead(pin)

Citește valoarea de la un pin digital specific. Returnează o valoare HIGH sau LOW. Pinul poate fi
specificat cu o variabilă sau o constantă (0-13). De exemplu, v = digitalRead(Pin);

Funcț ia digitalWrite(pin, valoare)

6/15
Introduceti un nivel ridicat (HIGH) sau scazut (LOW) pe pinul digital specificat. Din nou, pinul poate
ser specificat cu o variabilă sau o constantă 0-13. Ex. digitalWrite(pin, HIGH);

Funcț ia analogRead(pin)

Citește valoarea de pe pinul analogic specificat cu o rezoluție de 10 biți. Această funcție doar
funcționează pe pinii analogici (0-5). Valoarea rezultată este un întreg de la 0 la 1023. Pinii
analogue, spre deosebire de cele digitale, nu trebuie declarate anterior ca INPUT sau
IEȘIRE.

Funcț ia analogWrite(pin, value)

Scrieți o valoare pseudo-analogică folosind modulația prin lățimea impulsului (PWM) într-un pin de
ieșire marcată ca PWM. Această funcție este activă pentru pini 3, 5, 6, 9, 10, 11. Ej
analogWrite(pin, v); // scrie 'v' pe 'pinul' analogic. Poate fi specificată o valoare de 0 - 255. Un
valoarea 0 generează 0 V pe pinul specificat și 255 generează 5 V. Pentru valori de la 0 la 255, pinul alternează

rapid între 0 V și 5 V, cu cât valoarea este mai mare, cu atât mai des pinul se află în
HIGH (5 V). De exemplu, o valoare de 64 va fi 0 V trei sferturi din timp și 5 V o patru.
parte. Un valor de 128 va fi 0 V jumătate din timp și 5 V cealaltă jumătate. Un valoare de 192 va fi 0 V
o pătrime din timp și 5 V trei sferturi.

Funcț ii de timp ș i matematică


delay(ms). Realizează o pauză în program pentru cantitatea de timp în milisecunde
specificată în parametru (maximum 1000, minimum 1).
millis(). Returnează numărul de milisecunde pe care placa Arduino le-a petrecut executând
programma actual ca un valor lung nesemnat. După 9 ore, contorul revine
a 0.
min(x,y). max(x,y). Returnează minimul și maximul respectiv dintre acestea
parametrii.

Funcț ii de generare aleatorie


randomSeed(seed). Specifică o valoare sau o semință ca punct de plecare pentru funcție
random(). Acest parametru trebuie să fie cu adevărat aleatoriu și pentru aceasta se poate folosi
funcția millis() sau chiar analogRead() pentru a citi zgomot electric de la o intrare
analogică.
random(max), random(min, max). Această funcție returnează o valoare aleatoare între interval
specificat.

7/15
Port serie
[Link](rate). Deschide un port serial și specifică viteza de transmisie.
viteza tipică pentru comunicarea cu computerul este de 9600, deși se pot
suportă alte viteze.
[Link](data). Imprimă datele pe portul serial urmat de o întoarcere de linie
automat. Acest comandă are aceeași formă ca [Link]() dar acesta din urmă fără
salt de linie la final. Acest comandă poate fi folosit pentru a efectua depanarea de
programe. Pentru aceasta pot fi trimise mesaje de depanare și valori ale variabilelor
prin portul serial. Ulterior, din mediu de programare Arduino,
Activând "Monitorul Serial" se poate observa conținutul portului seriei, și, prin urmare,
Atât, mesajele de depanare. Pentru a observa corect conținutul portului
seria trebuie să avem în vedere că „Monitorul Serial” și portul serial trebuie să fie
configurati la aceeasi viteza (Pentru a configura viteza portului serial se va
cu comanda [Link](rate)).
[Link](). Citește un byte (un caracter) din portul serial. Returnează -1 dacă nu
nu există niciun caracter în portul serial.
[Link](). Returnează numărul de caractere disponibile pentru a fi citite de la
port serial.

8/15
Tutorial 2. Utilizarea simulatorului Arduino

Înainte de a realiza un circuit real, este posibil să-l simulezi anterior ca metodă de a asigura că
todo funcționează corect. Pentru aceasta, există instrumente precum cele oferite de Autodesk și
disponibil gratuit pe pagina[Link] A continuación se muestra în
câțiva pași despre cum să realizezi un circuit de bază cu această unealtă.

[Link]ă ce te-ai înregistrat și ai accesat tabloul de bord al instrumentului, selectează opțiunea


Circuite – Creează circuit nou

[Link] va deschide un proiect nou unde se pot începe să se introducă componente.

9/15
Există diferite opțiuni în cadrul circuitului. Unele dintre cele mai importante:

- Pentru a edita codul, trebuie să selectați opțiunea Editor de cod.


- Pentru a adăuga componente din biblioteca de componente dacă se selectează
opțiunea+Componente.
- Pentru a începe simularea, se selectează opțiunea Începe simularea.

4. Și dacă se selectează opțiunea +Componente, în partea de jos va apărea un meniu derulant cu


componente diferit disponibil. Principalul este placa Arduino Uno în interiorul
subcarpeta Arduino Basic Kit.

5. Pentru a introduce un component în circuit, este suficient să dai click o dată pe el și încă o dată pe
schema în poziția dorită. Pentru a-l elimina, se poate apăsa pe componentă și
apăsați Suprimiți sau Înapoi. Componentele cu pini pot fi interconectate prin
cabluri. Pentru aceasta, trebuie să apăsați pe un pin și apoi să apăsați pe un alt pin pentru a închide

conexiune. Toate elementele introduse sunt ușor editabile.

Ca exemplu, se prezintă următorul schematic care include o placă Arduino UNO, un LED și
o rezistență de 220 ohmi

10/15
6. Și dacă dorim să modificăm codul, facem clic pe Editor de cod, dezactivăm butonul Blocky
se accede la editor, așa cum se arată mai jos (în acest exemplu a fost introdus un cod
că face să clipească LED-ul verde la fiecare 1 secundă.

[Link]ă introdus codul corespunzător, se poate simula execuția reală a circuitului.


selectând opțiuneaStart Simulationși se va observa cum LED-ul verde al circuitului se
se stinge și se aprinde la frecvența dorită.

11/15
EXERCIȚII PROPUSE

Exerci ț iu 1
Aprinderea unui LED

Exemplul următor arată cum să activați un LED prin intermediul plăcii Arduino. LED-ul, conectat la unul
de la ieșirile plăcii (pin 13), pâlpâie cu o perioadă determinată (200 ms) și se
măsură prin portul SERIAL când LED-ul este la nivelUL BAJO sau ALTO.

Schema de montaj este următoarea:

Componente: placă ARDUINO UNO, rezistenț ă 220Ω ș i LED de culoare verde.

COD
// Pinul 13 are un LED conectat pe majoritatea plăcilor Arduino.
// dă-i un nume:
int led = 13;

// rutina de configurare rulează o dată când apeși reset:


void setup() {
// initializeaza pinul digital ca iesire.
pinMode(led, OUTPUT);
[Link](9600);
}

Rutina loop rulează din nou și din nou pentru totdeauna:


void loop() {

digitalWrite(led, HIGH); // aprinde LED-ul (HIGH este nivelul de tensiune)


NIVEL ALTO
întârziere(200); // așteaptă 200 ms
digitalWrite(led, LOW); // stinge LED-ul prin setarea tensiunii la LOW
NIVEL BAJO

întârziere(200); // așteaptă 200 ms

12/15
Se cere:
[Link]ți schema propusă cu ajutorul uneltei online.
2. Modifică circuitul pentru ca LED-ul să se aprindă când este conectat la pinul 12 și modifică perioada
de la 200 ms la 1 s.
3. Realizați un program care să execute aprinderea corelativă a patru LED-uri conectate la
pinii 10, 11, 12 și 13 cu un interval de 500 ms.
4. Realizați un program care să simuleze comportamentul unui semafor. Folosiți pentru aceasta trei
LED-uri de culoare roșie, verde și portocalie. Secvența pe care trebuie să o urmeze este următoarea: Verde (8

secunde)–Portocalie (3 secunde)–Roșu (10 secunde).


(Opț ional) Faceț i LED-ul să clipească în timpul stării galbene cu o perioadă de 500 ms.

Exerciț iul 2
Utilizarea butoanelor

următorul exemplu arată cum să folosești un buton pentru a varia funcționarea unui circuit. El
pulsatorul se conectează la pinul 7 (configurat ca pin de intrare) și acționează asupra pinului 13 (configurat
ca un pin de ieșire) care aprinde și stinge LED-ul.

Schema de montaj este următoarea:

Componente: placă ARDUINO UNO, rezistenț ă 220Ω (pentru LED), rezistenț ă 10 kΩ (pentru
pulsator), pulsator și LED de culoare verde.

13/15
COD
int ledPin = 13; // alege pinul pentru LED
int inPin = 7; // alegeți pinul de intrare (pentru un buton de presiune)
int val = 0; variabilă pentru citirea stării pinului

void setup() {
pinMode(ledPin, OUTPUT); // declară LED-ul ca ieșire
pinMode(inPin, INPUT); // declară butonul ca intrare
[Link](9600);
}

void loop(){
val = digitalRead(inPin); // citeste valoarea de intrare
[Link](val);
dacă (val == RIDICAT) { // verifica daca inputul este HIGH (buton apasat)
digitalWrite(ledPin, HIGH); // aprinde LED-ul
} altfel {
digitalWrite(ledPin, LOW); // stinge LED-ul
}
}

Se cere:
1. Simulați schema propusă cu instrumentul online.
2. Realizați un program care să facă un LED să pâlpâie cu o perioadă de 500 ms și care, la activarea
pulsator am schimbat perioada de clipire la 1 secundă.
3. Realizați un program care să simuleze funcționarea unei treceri la nivel printr-un LED roșu și
un LED verde. LED-ul roșu rămâne iluminat până când se activează un buton, care va stinge LED-ul
LED roșu și va aprinde LED-ul verde. Când se va elibera butonul, LED-ul roșu va reveni la
se va ilumina și LED-ul verde se va stinge.

Exerciț iul 3
Circuite cu senzori analogici de bază (LDR)

O fotorresistență (Rezistor Dependente de Lumină, LDR) este un component electronic a cărui rezistență
scade odată cu creșterea intensității luminii incidente. În imaginea următoare este prezentat simbolul său
electric

Valoarea rezistenței electrice a unui LDR este scăzută atunci când există lumină care cade pe el (poate scădea
până la 50 ohmi) și foarte mare când este în întuneric (câteva megaohmi).
Următorul exemplu aprinde un LED (pin 13) în funcție de intensitatea luminii
incidente asupra unui fotorezistor. LED-ul rămâne aprins când nu este lumină și se stinge când
intensitatea depășește un anumit nivel. Valoarea fotorésistorului este măsurată ca o intrare analogică
(A0).

14/15
Componente: placa ARDUINO UNO, rezistenț ă de 220Ω (pentru LED), rezistenț ă de 10 kΩ (pentru
LDR), senzor LDR și LED de culoare verde.

COD
//Constante
const int pResistor = A0; // Pin analogic A0
const int pinLed=13; // Pin LED la pinul Arduino 9

//Variabile
int valoare; // Stochează valoarea de la fotorezistor (0-1023)

void setup(){
pinMode(ledPin, OUTPUT); // Setați pinul 9 ca ieșire
pinMode(pResistor, INPUT);// Setează pinul analog A0 ca intrare
[Link](9600);

void loop(){
valoare = analogRead(pResistor);
[Link](valoare);

dacă (valoarea > 900) {


digitalWrite(ledPin, LOW); //Oprește led-ul
}
altfel{
digitalWrite(ledPin, HIGH); //Aprinde led-ul
}

intârziere(500); //Întârziere mică


}

Se cere:
[Link]ți schema propusă cu ajutorul instrumentului online.
2. Realizați un program care să facă LED-ul să clipească cu o perioadă variabilă care să fie dependentă.
del valoarea fotorésistorului.

15/15
Exerciț iul 4
Circuite cu un servomotor

Un servomotor este un tip special de motor care permite controlul poziției axului într-un anumit moment
dado. Este proiectat pentru a se mișca o anumită cantitate de grade și apoi să rămână fix într-o
poziție.

Diagrama de bloc al servomotor reprezintă vizual servomotorul ca un sistem. Circuitul


electronicul este responsabil de a primi semnalul PWM și de a-l traduce în mișcarea motorului DC. Axul acestuia
motor DC este cuplat la un potentiometru, care permite formarea unui divizor de tensiune. Tensiunea în
ieșirea din divisor variază în funcție de poziția axului motorului DC.

Componente: placa ARDUINO UNO, servomotor, rezistor de 10 kΩ (pentru LDR), senzor LDR.

COD

Se cere:
1. Simulați schema propusă cu ajutorul uneltei online.
2. Realizați un program care controlează 2 servomotoare.
[Link]ți un program care să funcționeze 2 dependenți de valoarea fotorresistorului.
16/15
2/6
3/11

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