Utilizarea platformei de dezvoltare Arduino

29
Utilizarea platformei de dezvoltare Arduino - Manipularea intrărilor și ieșirilor digitale -

Transcript of Utilizarea platformei de dezvoltare Arduino

Page 1: Utilizarea platformei de dezvoltare Arduino

Utilizarea platformei de dezvoltareArduino

- Manipularea intrărilor și ieșirilor digitale -

Page 2: Utilizarea platformei de dezvoltare Arduino

❖ Arduino este o platformă de dezvoltare sau un microsistem de calcul dedicat, cu arhitectură simplă, care afost dezvoltat(ă) cu scopul de a permite dezvoltarea aplicațiilor simple de achiziție și generare de semnal.Platforma de dezvoltare are la bază microcontrolerul ATMega 328P din familia AVR produs de Atmel;

• Din punct de vedere constructiv există mai multe variante oficiale ale platformei Arduino (Uno, Nano, Mega,Leonardo etc...), care oferă dezvoltatorului posibilitatea de alegere, în funcție de complexitatea aplicației;

• Există, de asemenea platforme de dezvoltare „compatibile cu mediul Arduino” care au aproximativ aceleașicaracteristici constructive ca și platforma Arduino, uneori având mai multe posibilități funcționale;

• Mediul de dezvoltare Arduino se referă la așa - zisul Arduino IDE (eng. Integrated Development Enivronment),un program utilizat pentru a depana, compila și încărca aplicația executabilă generată în memoria flash;

• Funcțiile de bază ale acestor platforme, sunt de a citi valori ale unui set de componente fizice recunoscute caperiferice simple de intrare (butoane, senzori, sesizori etc.) și activarea unui set de periferice simple de ieșire(diode electroluminiscente, motorașe, afișaje etc.), prin programarea în mediul specific Arduino IDE.

Platforma de dezvoltare Arduino

Page 3: Utilizarea platformei de dezvoltare Arduino
Page 4: Utilizarea platformei de dezvoltare Arduino

• Frecvență de operare maximă 16 MHz (frecvența oscilatorului);

• 32 KB memorie flash programabilă;

• 1 KB memorie EEPROM

• 2 KB memorie sRAM (static RAM);

• 10 000 cicluri - scriere / citire în flash și 100 000 în EEPROM;

• Numărător cu rezoluție de 8 biți (255 de trepte pentru PWM);

• Convertor analog – numeric pe 10 biți (1023 de trepte pentru ADC);

• Interfețe serial (sincrone și asincorne – USART / UART);

• Interfață I2C + OneWire și intrări / ieșiri de uz general digitale (GPIO);

• Interfață SPI pentru interfațare directă a memoriei cu programatorul;

Aspecte funcționale și caracteristici ale platformei Arduino

Page 5: Utilizarea platformei de dezvoltare Arduino

Sisteme cu microprocesoare• Wiring este un limbaj de programare hibrid, specific domeniului de dezvoltare al aplicațiilor cu microcontrolere și

sisteme integrate microprogramabile, deoarece (acest limbaj) permite adresarea în mod direct a componentelorfizice (eng. Hardware) prin intermediul unor declarații - funcții standard (ex. pinMode(), digitalWrite()).

• La baza procesului de programare și dezvoltare a aplicațiilor în cod - sintaxă cu ajutorul platformelor Arduino, seregăsește limbajul Wiring. De asemenea, și alte platforme de dezvoltare compatibile cu acest limbaj pot fiutilizate în același mod. Limbajul de programarea Wiring poate fi apelat și în cadrul mediului Visual Studio.Sistemul de operare original pentru care a fost dezvoltat limbajul Wiring este Unix / Linux. Totodată, Wiring esteun produs rezultat al activității, comunității OpenSource, și este disponibil în spațiul public în mod gratuit. Încadrul sistemului de operare Microsoft Windows, Wiring, se regăsește sub forma programului Arduino IDE.

• Pentru a permite funcționarea compilatorului Wiring în limbaj de asamblare, iar mai apoi în cod mașină specificarhitecturii AVR – ATMega 328P, în cadrul mediului Arduino IDE rulând în Windows, este prevăzută virtualizareaunui sistem de operare de tip Unix / Linux numit CygWig. Acesta rulează într-o așa zisă „mașină virtuală” înfundal, odată cu inițializarea mediului Arduino IDE. Astfel limbajul Wiring funcționează artificial în Windows.

Mediul și limbajul de programare al platformei Arduino

Page 6: Utilizarea platformei de dezvoltare Arduino

Bloc de comentarii

Comentariu

Declarare variabilă

Buclă executată o singură dată - include inițializările

necesare pentru execuția programului

Bucla executată în mod continuu - secvența de operații

executate într-o bucla infinită; efectuează în mod repetitiv operații de citire semnale, procesare și generare de comenzi

- biblioteca de funcții (proceduri) prin intermediul cărora programatorul

poate să acceseze: semnale digitale de la intrări / ieșiri, semnale analogice de

intare și de iesire, interfețe seriale, sau alte interfețe care pot fi atașate

platformei Arduino.

- exemple de programare (din meniu: File -> Examples).

Mediul și limbajul de programare al platformei Arduino

Page 7: Utilizarea platformei de dezvoltare Arduino

Sisteme cu microprocesoare

• În baza limbajului Wiring s-au concretizat mai multe medii de programare cu compilatoare specifice platformelor destinate:

• Arduino I.D.E. – familia Atmega – Atmel;• Energia I.D.E. – familiile C, MSP, etc. – Texas Instruments;• MP I.D.E. – familia Microchip / ChipKit;• LeafLabs I.D.E. – familia Maple și Maple FPGA;• Processing I.D.E. – familia RaspberryPI, Arduino;• Wiring I.D.E. – toate platformele;

Pe baza limbajului Wiring s-au concretizat mai multe medii de programare cu

compilatoare specifice platformelor destinate, precum:

• Arduino I.D.E. – familia Atmega – Atmel;

• Energia I.D.E. – familiile C, MSP, Stellaris, etc. – Texas Instruments;

• MP I.D.E. – familia Microchip / ChipKit;

• LeafLabs I.D.E. – familia Maple și Maple FPGA;

• Processing I.D.E. – familia RaspberryPI, Arduino;

• Wiring I.D.E. – toate platformele;

• Visual Micro I.D.E. – limbaj Wiring pentru mediul VisualStudio;

Mediul și limbajul de programare al platformei Arduino

Page 8: Utilizarea platformei de dezvoltare Arduino

Sisteme cu microprocesoare• Structura unui program scris în Wiring este similară cu structura unui program scris în sintaxă C

standard / C++, spre exemplu:

#include <stdio.h>int main(){

// printf() displays the string inside quotation

printf("Hello, World!");return 0;

}

void setup() {//LED_BUILTIN as an output.pinMode(LED_BUILTIN, OUTPUT);

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

}

SINTAXA „C” STANDARD: SINTAXA „WIRING”:

Mediul și limbajul de programare al platformei Arduino

Page 9: Utilizarea platformei de dezvoltare Arduino

Spre deosebire de sintaxa limbajulu standard „C”, sintaxa limbajului Wiring include câteva funcții specifice domeniului sistemelor microprogramabile:

✓ void setup() – buclă pentru inițializare;

✓ void loop() – buclă de execuție infinită (echivalent: while (1));

✓ pinMode() – stabilirea modului de funcționare a unui pin (intrare / ieșire);

✓ digitalWrite() – stabilrea stării logice a ieșirii digitale (ON / OFF);

✓ digitalRead() – preluarea în memorie a stării logice a intrării digitale;

✓ Serial.begin(baud) – inițializarea comunicației serial;

✓ Serial.println(„Afișează!”) – afișare text în consola serial;

Mediul și limbajul de programare al platformei Arduino

Page 10: Utilizarea platformei de dezvoltare Arduino

Funcția pentru inițializarea comunicației serial:

- Citire / scriere:

Serial.begin(<rată_baud>);

Serial.begin(9600); //inițializare comunicare serial cu viteza 9600 [bit / s];

„Serial.println()” – pentru afișarea de caractere pe portul serial:

Serial.println(„șir_de_caractere”) sau Serial.println(variabilă.format);

„Serial.parse<tip_de_date>” – preluarea informației într-un anumit tip de date de pe magistrala serial;

Serial.available() – verificarea disponibilității magistralei serial.

Mediul și limbajul de programare al platformei Arduino

Page 11: Utilizarea platformei de dezvoltare Arduino

Pentru a concepe aplicații pe baza platformei Arduino, se vor utiliza atât senzori cât și alte dispozitive de intrare:

Senzori sau dispozitive de intrare analogice: senzor de sunet, de temperatură, de lumină, potențiometru etc.;

Senzori sau dispozitive de intrare digitale: butoane, senzori de proximitate, senzori magnetici cu efect Hall etc.;

Totodată se vor utiliza actuatoare sau dispozitive de ieșire ca și elemente de execuție:

Elemente de execuție digitale: diode electroluminiscente în regim fix, afișaje, servomotoare, relee, motorașe pas cu pas etc.;

Elemente de execuție analogice: motoraș de curent continuu, diode electroluminiscente în regim variabil, difuzoare etc.;

Pentru a genera sau a achiziționa semnale digitale, cu ajutorul platformei Arduino, se vor utiliza intrările și ieșirile digitale:

- 14 pini de intrare sau ieșire, configurabili, iar 6 pot furniza semnale modulate în lățime (3, 5, 6, 9, 10, 11);

- nivelul de tesniune generat se poate situa între 3.3 sau 5 [V], iar ca și nivel maxim admisibil de curent, între 10 – 25 [mA];

Funcții specifice procedeului de manipulare al intrărilor și ieșirilor digitale:

pinMode(nr_pin, mod_de_operare) – exemplu: pinMode(6, OUTPUT) // configurare pin 6 ca ieșire digitală;

digitalWrite(nr_pin, stare_digitală) – exemplu: digitalWrite(6, HIGH) // impunerea stării digitale „ACTIV” (ON) a pinului 9;

digitalRead(nr_pin) – exemplu: digitalRead(6) // preluarea în memorie a stării digitale aferente pinului 6;

analogWrite(nr_pin, treaptă_PWM) – exemplu: analogWrite(6, 125) // generare semnal modulat în lățime (PWM);

Mediul și limbajul de programare al platformei Arduino

Page 12: Utilizarea platformei de dezvoltare Arduino

➢ Exemplu simplu – Semnalizare cu dioda electroluminiscentă pe ieșirea digitală nr. 6:

Mediul și limbajul de programare al platformei Arduino

Page 13: Utilizarea platformei de dezvoltare Arduino

Mediul și limbajul de programare al platformei Arduino

Cod mașină (binar) – limbaj la nivel fizic

Limbaj de asamblare – tranziție – mnemonici

Sintaxă – nivel mediu – inteligibil (ex. C++)

Mediu grafic - nivel înalt (ex. Simulink)

ex. pinMode(), digitalWrite()

Compilare = găsirea unor „comenzi echivalente” în limbajul de la nivel inferior;

ÎN SINTAXA WIRING ÎN LIMBAJUL HIBRID ASAMBLARE - SINTAXĂ

void setup() { void setup() {pinMode(6, OUTPUT); DDRD = B11111111;

} }void loop() { void loop() {

digitalWrite(6, HIGH); PORTD = B00100000;} }

DDRD = B00100000, PORTD = B00100000

10010101 00000101 00000001 .....

Page 14: Utilizarea platformei de dezvoltare Arduino

1. Semnalizare intermitentă cu o diodă electroluminiscentă;

2. Semnalizare intermitentă cu două diode electroluminiscente;

3. Semnalizare cu opt diode electroluminiscente;

4. Citirea stării unui buton;

5. Acționarea diodei electroluminiscente prin intermediul butonului;

6. Autoreținere simplă cu două butoane și o diodă electroluminiscentă;

Teme propuse pentru studenți

Page 15: Utilizarea platformei de dezvoltare Arduino

Clipire = activarea și dezactivarea a ieșirii digitale la care este conectată dioda,

având o întârziere de o secundă:

• Componente necesare:

• 1x plăcuță de prototip fără lipire (eng. Breadboard);

• 1x platformă de dezvoltare Arduino;

• 1x diodă electroluminiscentă;

• 1x rezistența 330 sau 220 sau 100 [Ω];

• 2x cabluri pentru record;

Catodul diodei (terminalul negative „-”) este marcat prin teșitura de la bază.

Semnalizare intermitentă cu o diodă electroluminiscentă

Page 16: Utilizarea platformei de dezvoltare Arduino

Semnalizare intermitentă cu o diodă electroluminiscentă

Page 17: Utilizarea platformei de dezvoltare Arduino
Page 18: Utilizarea platformei de dezvoltare Arduino

Semnalizare intermitentă cu două diode electroluminiscente

Page 19: Utilizarea platformei de dezvoltare Arduino
Page 20: Utilizarea platformei de dezvoltare Arduino

Pentru a define mai multe constante de program pentru numerotarea pinilor, se vor utiliza matrice liniare (șiruri):

int ledPins[] = {5, 6, 7, 8, 9, 10, 11, 12};

Pentru selectarea elementelor din șir, se utilizează un indice – contor de poziție. Primul element are indicele 0!

digitalWrite(ledPins[0], HIGH); // Aprinde prima diodă din șir!

Pentru parcurgerea integrală a șirului se folosește bucla iterativă finită de tip „for”:

for(condiție inițială, condiție principală, condiție de continuare) {...}

Semnalizare cu opt diode electroluminiscente

Page 21: Utilizarea platformei de dezvoltare Arduino

R1

D1

Micro-controller

R2

D2

R3

D3

R4

D4

R5

D5

R6

D6

R7

D7

R8

D8

Semnalizare cu opt diode electroluminiscente

Page 22: Utilizarea platformei de dezvoltare Arduino

R1

D1

Micro-controller

R2

D2

R3

D3

R4

D4

R5

D5

R6

D6

R7

D7

R8

D8

Page 23: Utilizarea platformei de dezvoltare Arduino
Page 24: Utilizarea platformei de dezvoltare Arduino

Citirea stării unui buton

Page 25: Utilizarea platformei de dezvoltare Arduino
Page 26: Utilizarea platformei de dezvoltare Arduino

Acționarea diodei electroluminiscente prin intermediul butonului

Page 27: Utilizarea platformei de dezvoltare Arduino
Page 28: Utilizarea platformei de dezvoltare Arduino

Autoreținere simplă cu două butoane și o diodă electroluminiscentă

Page 29: Utilizarea platformei de dezvoltare Arduino