Sunteți pe pagina 1din 10

Ministerul Educației al Republicii Moldova

Universitatea Tehnică a Moldovei

Facultatea: Calculatoare Informatică Microelectronică


Departamentul: MIB

RAPORT
despre lucrarea de laborator nr.1
la disciplina: PE

Tema: Introducere în programarea în electronică

A îndeplinit: st.gr.MN-___ _____ ______

A controlat: lect. sup. Bragarenco Andrei

Chişinău – 2020
Obiectiv: _____________________________________________________________________________
1. Sarcini tehnice:
1. ____________________________________________________________________________
2. ____________________________________________________________________________
3. ____________________________________________________________________________

2. Concept:
Arduino – Se fa descrie acest dispozitiv_____________________
Un sketch tipic Arduino scris în C/C++ este compus din două funcții:
setup() – funcția în care se introduc funcționalitățile care se vor executa doar o singură dată, la pornirea
microcontolerului, care servește ca inițializarea tuturor componetelor platformei.
loop() – funcția care este chemată de către sistem un număr infinit de ori. În această funcție se introduc
fuctionalitățile necesare pentru a fi rulate încontinuu, atâta timp cât sistemul este conectat.
O schemă conceptuală care ilustrează programul la general este prezentată în imaginea de mai jos:

Figura 1 – Schema conceptuală a programului Arduino


Sintaxă:
void setup(void)
{
//codul scris aici ruleaza o singura data
}
void loop(void)
{
//codul scris aici ruleaza tot timpul
}

Pentru relizarea sarcinii tehnice vom avea nevoie de următoarele funcții pentru inițializarea interfeței
seriale, pinilor de intrare / ieșire, recepționarea și transmiterea datelor prin interfața serială etc.

Serial.begin() – inițializează interfața serială și setează viteza schimbului de date, în biți / s (baud).
Pentru schimbul de date sunt disponibile următoarele valori 300, 1200, 2400, 4800, 9600, 14400, 19200,
28800, 38400, 57600 și 115200 ca viteze standart.
Sintaxă:
Serial.begin(speed)
Parametrii:
speed – viteza biți / s (baud). [long]

Serial.available() – Funcția primește numărului de byți (simboluri), disponibili pentru citire din portul
serial. Acestea sunt biții care deja au venit în buferul de intrare a portului serial. Buferul are dimensiunea
maximă de 64 byți.
Sintaxă:
Serial.available(void)
Returnează:
Numărul de byți diponibili pentru citire.
Serial.read() – Citește următorul byte disponibil din buferul interfeței seriale.
Sintaxă:
Serial.read(void)
Returnează:
Următor byte disponibil sau -1 dacă lipsește.

Serial.print() - Transmite datele prin intermediul portului serial sub formă de text ASCII. Acesta
funcție poate primi diferite tipuri de date. Numerele întregi se afișează ca simboluri corespunzătoare din
tabelul ASCII. Numerele reale sunt transmise cu ajutorul a 2 simboluri ASCII, unul pentru partea intreagă și
unul pentru partea fracțională. Byții se transmit ca și simboluri cu numărul corespunzător. Simbolurile și
șirurile de simboluri se transmit în forma în care sânt.
Exemplu:
Serial.print(78) se transmite ca "78"
Serial.print(1.23456) se transmite ca "1.23"
Serial.print(byte(78)) se transmite ca "N" (în ASCII "N" corespunde numărului 78)
Serial.print('N') se transmite ca "N"
Serial.print("Hello") se transmite ca "Hello!"
Prin intermediul parametrului secundar se poate selecta sistemul numeric în care vor fi afișate datele.
Valorile posibile sânt BYTE (octet), BIN (binar), OCT (octal), DEC (zecimal), HEX (hexazecimal). Pentru
numerele reale parametrul secundar setează numărul de cifre după virgulă.
Exemplu:
Serial.print(78, BYTE) //afișează "N"
Serial.print(78, BIN) //afișează "1001110"
Serial.print(78, OCT) //afișează "116"
Serial.print(78, DEC) //afișează "78"
Serial.print(78, HEX) //afișează "4E"
Serial.println(1.23456, 0) //afișează "1"
Serial.println(1.23456, 4) //afișează "1.2346"
Sintaxă:
Serial.println(val)
Serial.println(val, format)
Parametrii:
val – datele care urmează a fi transmise prin portul serial.
format – baza pentru numerele întregi sau numarul de cifre după virgulă.

Serial.println() – Transmite datele prin portul serial în format de text ASCII cu simbolul de trecere în
rând nou (ASCII simbolul 13 sau '\r') și simbolul rândului nou (ASCII simbolul 10 sau '\n'). Parametrii și
tipurile de date pentru această funcție sunt identici cu cei pentru funcția Serial.println().
Sintaxă:
Serial.println(val)
Serial.println(val, format)
Parametrii:
val – datele care urmează a fi transmise prin portul serial.
format – baza pentru numerele întregi sau numarul de cifre după virgulă.

pinMode() – setează regimul de lucru a pinului ca intrare sau ieșire.


Sintaxă:
pinMode(pin, mode)
Parametrii:
pin – numărul pinului care va fi utilizat
mode – regimul de lucru care poate primi două valori – INPUT sau OUTPUT, intrare sau ieșire
respectiv.

digitalWrite() – Setează valoarea HIGH sau LOW la pinul de intrare ieșire. Dacă pinul a fost setat în
regim de ieșire (OUTPUT), prin intermediul funcției pinMode(), tensiunea la pinul căruia îi este setată
valoarea HIGH va fi 5V, sau egală cu 0V în cazul setării pinului în LOW.
Observație – La pinul 13 este conectat un led, care poate fi dirijat prin setarea valorilor corespunzătoare
utilizând funcțiile pinMode() și digitalWrite().
Sintaxă:
digitalWrite(pin, value)
Parametrii:
pin – numărul pinului care va fi utilizat
value – valoarea HIGH sau LOW.

delay() – Oprește derularea programului pe intervalul de timp primit ca parametru, în milisecunde.


Sintaxă:
delay(ms)
Parametrii:
ms – numărul de milisecunde, pe perioda cărora va fi sistată derularea programului. [unsigned long]

3. Design:
După analiza efectuată în punctul precetent se vor selecta elementele necesare pentru realizarea
obiectivului propus cu respectarea nemijlocită a sarcinii tehnice. Prezenta lucrare fiind una întroductivă în
programarea electronică, nu se va complica schema adaugare unor module auxiliare ci vor fi utilizate doar
modulele încorporate.
În figura prezentată mai jos sunt enumerate blocurile necesare și modalitatea de interconectare.

Figura 2 – Schema conceptuală a obectivului propus

4. Implementare:
În figurile de mai jos este prezentată schema bloc generală a programului care urmează a fi relizat dar
și schemele bloc detaliate a continutului funcților necesare.
Figura 3 – Schema bloc generală a programului

Figura 4 – Schema bloc a funcției setup()


Figura 5 – Schema bloc a funcției loop()

Figura 6 – Schema bloc a funcției aviable_data()


Figura 7 – Schema bloc a funcției blink()
Programul realizat în strictă conformitate cu shemele bloc prezentate mai sus este prezentat în anexa 1
5. Validare:

Figura 8 – Rezultatele testării programului


6. Concluzii:
_________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
___________________________

7. Bibliografie:
1. https://ro.wikipedia.org/wiki/Sistem_%C3%AEnglobat
2. https://ro.wikipedia.org/wiki/Mediu_de_dezvoltare
3. https://ro.wikipedia.org/wiki/Arduino
4. http://www.xab3.ro/produse/arduino-mega-2560-rev.3
5. http://arduino.ru/Reference/
6. http://bq.com
7. https://doc.arduino.ua/ru/prog/
8. https://www.arduino.cc/reference/en/
Anexa 1:
#define BEC 13 // Pinul la care este conectat led-ul
#define BAUDRATE 9600 // Viteza schimbului de date cu interfața serială
#define INTERVAL 1000 // Intervalul de alternanță a stătii ledului în milisecunde
#define ALTERNATIONS 3 // Numărul ciclurilor de alternanțe
void available_data(void);
void blink(void);
/* Inițializarea interfeței seriale, setarea stării pinului
responsabil de dirijarea ledului și afișarea mesajului de
cu instructiunile de utilizare a programului. */
void setup(void)
{
Serial.begin(BAUDRATE);
pinMode(BEC, OUTPUT);
digitalWrite(BEC, LOW);
Serial.println("Salut!");
Serial.println("Pentru a deconecta becul apasa 0");
Serial.println("Pentru a conecta becul apasa 1");
Serial.println("Pentru a regimul blink apasa 2\n");
}
/* Va fi chemată la infinit funcția care monitorizează starea
Interfeței seriale și răspunde cu o acțiune corespunzătoare. */
void loop(void)
{
available_data();
}
/* Monitorizează starea interfeței seriale, răspune cu un mesaj
la detectarea unei comenzi primite, decodifică și îndeplinește
comanda primită. Răspunde cu un mesaj de confirmare a îndeplinirii
comenzii. */
void available_data(void)
{
if (Serial.available() > 0)
{
switch (Serial.read())
{
case '0':
Serial.println("\nAi apasat 0");
digitalWrite(BEC, LOW);
Serial.println("Becul e deconectat");
break;
case '1':
Serial.println("\nAi apasat 1");
digitalWrite(BEC, HIGH);
Serial.println("Becul e conectat");
break;
case '2':
Serial.println("\nAi apasat 2");
Serial.println("Regimul stroboscopic");
blink();
break;
default:
Serial.println("\nComanda eronata!");
}
}
}
/* Are loc alternarea stării pinului la care este conectat
Led-ul cu un număr de cicluri prestabilit. */
void blink(void)
{
for(int i = 0; i < ALTERNATIONS; i++) {
digitalWrite(BEC, LOW);
delay(INTERVAL);
digitalWrite(BEC, HIGH);
delay(INTERVAL);
}
}
Anexa 2:

Figura 1 – Destinația pinilor plăcii de dezvoltare Arduino Nano

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