Documente Academic
Documente Profesional
Documente Cultură
Mediul de lucru este configurat sub forma unui stand, ca n figura urmtoare:
Standul de lucru
Cteva explicaii
Nu toate aplicaiile software din jurul nostru sunt de tip Deskop (adic ruleaz pe sisteme de
calcul de tip PC), Apps (aplicaii mobile de pe telefoanele voastre Smartphone) sau pagini
WEB (fie acestea i dinamice). Unele aplicaii ruleaz n cele mai neateptate locuri: n
automobile, n maini de splat sau cuptoare cu microunde, n aparate de fotografiat, sisteme
de nregistrare la purttor pentru datele medicale i nc nenumrate altele. De fapt cele mai
multe aplicaii ruleaz n astfel de circumstane, foarte prezente n viaa noastr i fr s fim
prea contieni c de fapt tot aplicaii software sunt i acestea, fiind dezvoltate tot de ingineri
software sau informaticieni. n mediul artificial din jurul nostru sunt enorm de multe
microcontrollere care asigur funcionaliti foarte utile dar foarte specializate (s v gndii c
sunt miliarde de astfel de sisteme versus milioane de sisteme PC n jurul nostru; ntr-o locuin
Pagina 1 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
sau ntr-un automobil modern pot s fie pn la 50 de astfel de sisteme ncorporate,sau chiar
mai multe). Aceste microcontrollere sunt ncorporate, nglobate n produsele tehnice care ne
fac viaa mai uoar i tocmai de aceea se numesc sisteme ncorporate (embedded systems).
Aceste sisteme sunt destinate s asigure de-a lungul ntregului lor ciclu de existen acelai
set de funcionaliti. De aceea software-ul, odat dezvoltat i testat, de regul este transferat
ntr-o memorie fix a sistemului (este ars sau prjit - spun cei care lucreaz n acest domeniu).
Se cuvine subliniat c un sistem ncorporat este un ansamblu hardware-software i de aceea
dezvoltatorii software care construiesc programele pentru astfel de sisteme trebuie s aib
mcar un set minimal de cunotine de hardware despre microcontrollere.
Un microcontroller, pentru cei care nu tiu, este un microprocesor mai special, care
conine i circuite care permit interfaarea cu intrrile i ieirile, inclusiv de proces (spre
exemplu intrri-ieiri digitale semnale de tip 0-1 sau analogice tensiuni). De
asemenea, un microcontroller are resurse proprii (limitate) de memorie RAM i ROM.
Intrrile-ieirile digitale sunt grupate cte 8 i sunt citite prin intermediul porturilor
(informaia respectiv trebuie folosit la nivel de bit) respectiv intrrile-ieirile analogice
sunt accesate prin intermediul convertoarelor (analog-digital pentru citire, respectiv
digital-analogic pentru scriere). Convertoarele sunt citite prin intermediul unor porturi
dedicate.
Pagina 2 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
transferm programul din calculatorul-gazd (sau host) care este PC-ul, n sistemul destinaie
(numit int sau target).
Mediul utilizat conine comenzi speciale care iniiaz transferul i permit apoi lansarea n
execuie a aplicaiei n calculatorul int microcontrollerul din sistemul ncorporat.
nainte de a trece la treab, trebuie ns s fim contieni c depanarea unei aplicaii este mai
dificil dect pn acum, deoarece nu avem la dispoziie facilitile obinuite de depanare, din
moment ce programul NU ruleaz pe sistemul pe care ruleaz mediul. De aceea vom avea
grij ca eventual s introducem n program linii de cod special pentru a ne ajuta la depanare,
acestea urmnd apoi a fi comentate sau eliminate dac suntem siguri c programul
funcioneaz corect.
Exemplu pentru afiarea unui mesaj pe un ecran lcd Hitachi HD44780 de 16x2:
// includerea bibliotecii pentru afisaj:
#include <LiquidCrystal.h>
void setup() {
// setarea numrului de coloane i rnduri:
lcd.begin(16, 2);
// afiarea unui mesaj.
lcd.print("hello, world!");
}
void loop() {
//setarea cursorului pe poziia iniial
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}
Pagina 3 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
Exemplu:
Ce e de fcut la proiect ?
Studenii trebuie s vin la laborator pregtii (trebuie s fi citit i nsuit temeinic cele
de mai sus, mai ales c nu e mult i pe deasupra e i foarte interesant). Studiai n
special ce urmeaz la pag. 5, deoarece suntei la un laborator de Programare
Orientat pe Obiecte !
n continuare, asistentul va prezenta standurile cu toate componentele sale i modul
de lucru, printr-un exemplu simplu distribuit tututor. Tot el/ea v va atrage atenia
asupra unor reguli elementare de lucru (verificai de dou ori conexiunile nainte de a
porni ceva; nu zglii montajele, nu le tri pe mas, nu le ridicai n aer, nu le scpai,
nu scpai nimic pe ele, precum i alte reguli asemntoare, de bun sim)...
Asistentul va mpri teme de proiectare, cte o tem pentru 2-3 studeni. Temele sunt
toate n Anexa 2 (pag. 10).
Acetia vor studia cu atenie, de mai multe ori, ce au de fcut ! Nu rdei, cei din
industrie ne reproeaz c nu v-am obinuit s citii cu atenie - i responsabilitate - ce
e de fcut !
Mai departe, trebuie s studiai aspectele specifice periferiei utilizate (adic citii de pe
www.robofun.ro cum se vor folosi elementele necesare proiectului) i descrcai
bibliotecile i exemplele de care avei nevoie.
Vei proiecta software-ul utiliznd scheme pe hrtie (scheme logice, diagrame de stare
sau orice altceva considerai c v e de folos).
De-abia dup aceea scriei cod.
Nu uitai s inserai n cod cele necesare depanrii. n acest scop putei utiliza
instruciuni de scriere sau citire clasice, care v vor permite s afiai spre exemplu
valori n fereastra de monitorizare din IDE.
Acum e momentul s testai! Dac nu mai sunt erori de compilare, rulai aplicaia i
depanai innd cont de manifestrile programului i valorile afiate n fereastra de
comunicare.
Nu uitai c ori de cte ori modificai codul, acesta trebuie recompilat i rencrcat n
Arduino.
Pagina 4 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
Echipele de studeni vor face, fiecare, o scurt demonstraie n faa asistentului i vor
preda cte un Referat coninnd:
SUCCES !
Aplicaia din Arduino trebuie s fie realizat orientat pe obiecte. Astfel, vor trebui
definite pentru senzori sau pentru ieiri de proces, cte o clas de baz abstract i clase
derivate care s permit citiri sau ieiri, cu definirea unor funcii virtuale. Chiar dac n
aplicaie va fi doar un senzor sau
o ieire, ierarhia tot trebuie
definit, astfel fiind posibil
extinderea la ali senzori sau
ieiri, prin derivarea altor clase
pentru acestea, plecnd de la
clasa abstract, care codific
trsturi generale ale
senzorilor/ieirilor de proces,
urmnd ca particularizarea s se
fac n clasele derivate.
Exemplu orientativ
pentru senzori (figura alturat):
Pagina 5 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
// implementari
int senzor::get()
{
if (status)
{
return val_citita;
status = 0;
}
else
{
return val_anterioara;
}
}
void senzor_puls::citire()
{
// aici se implementeaza citirea reala pentru senzorul de puls
int i;
val_anterioara = val_citita;
cout << "\nSimulare citire valoare senzor puls :";
cin >> i;
val_citita = i; // simulare citirea propriu-zisa de la senzor
status = -1;
}
void senzor_pulsoximetrie::citire()
{
// aici se implementeaza citirea reala pentru senzorul de pulsoximetrie
int i;
val_anterioara = val_citita;
cout << "\nSimulare citire valoare senzor pulsoximetrie :";
cin >> i;
val_citita = i; // simulare citirea propriu-zisa de la senzor
status = -1;
}
Pagina 6 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
int main()
{
senzor *p;_
senzor_puls s_p;_
senzor_pulsoximetrie s_po;
// initializari
p = &s_p;
p->reset();
p = &s_po;
p->reset();
// citire si utilizare valoare pentru pentru senzorul de puls
p = &s_p;
p->citire(); // aici, eventual citire asincrona
cout << "\nValoarea preluata de la senzorul de puls este : "<< p->get();
// folosirea valorii la ceva, aici, afisare
// si totul inca o data pentru celalalt senzor(aproape toata secventa de cod este identica)
p = &s_po;
p->citire();
cout << "\nValoarea preluata de la senzorul de pulsoximetrie este : "<< p->get();
_getch();
return 0;
}
La ce bun ce am fcut ?
Arduino este un sistem simplu, ns ofer o foarte bun coal pentru a realiza ce nseamn
programarea unui sistem ncorporat. Vei constata c e vorba tot de programare, c scopul
final e altul dect acela de a prelua caractere de la tastatur i de a afia rezultatele unei
prelucrri pe ecran, c putei s programai (aproape) tot ce v vine n minte legat de aciuni
i funcionaliti care presupun citiri de valori din mediu i aciuni asupra mediului (acionarea
unor servomotoare) respectiv afiri pe dispozitive non-standard (afiaje, LED-uri). De aici la
sistemele industriale, profesionale, nu e dect pasul care poate fi fcut prin
(auto)perfecionare. Ceea ce ai fcut nu difer foarte mult de ce e necesar pentru un sistem
dintr-un automobil, sau o main de splat, un sistem Home automation sau altele de acest
gen. Cu alte cuvinte, suntei pregtii s v specializai pentru a aborda meserii din acest
domeniu, specifice unor companii importante din Timioara.
n plus, mai e i foarte interesant i chiar haios s faci aplicaii care s mite lucruri n faa ta
i care s semene cu ceea ce ne nconjoar ! Vedei astfel c multe din cele ce sunt artificiale,
n jurul nostru, sunt creaii inginereti i c i voi suntei n stare s facei lucruri asemntoare
sau mai bune ! De acum nainte vei fi capabili s v umplei casa cu automatizri mai simple
sau mai complexe, depinde doar de dorina, fantezia i resursele alocate !
Pagina 7 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
Noul proiect este creat din meniul principal File-> New sau prin combinaia de CTRL+N.
Structura noului proiect generat este vizibil i pe Figura 1. Structura proiectul este
asemntoare cu structura unui program realizat n orice mediu de dezvoltare pentru limbajul
C sau C++.
n aceast seciune declarm variabilele interne globale care vor fi Figura 2. Biblioteci
folosite pentru a stoca informaiile. Pe lng variabile n aceast seciune native pentru
mediul de
alocm pentru pinii modulului de dezvoltare denumirea i direcia de dezvoltare
transmitere.
Pagina 8 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
Exemplu de utilizare:
declararea unei variabile:
int sensorValue = 0; // declarea unei variabile pentru stocarea informaiilor,
Aceast funcie este utilizat pentru rularea codului principal al programului din microcontroler.
Acest cod se va rula intr-o bucl infinit care poate fi intrerupt doar de butonul RESET al
modulului Arduino sau de oprirea alimentrii.
Din meniul Tools, submeniul Board se selecteaz modelul corespunztor de modul Arduino.
Pentru a ncrca programul realizat pe modulul Arduino n primul rnd trebuie s selectm
portul de comunicare dintre calculator i modul folosind comanda din ToolsSerial Port, apoi
utilizatorul selecteaz portul serial corespunztor. Apoi se trimite programul pe modulul
Arduino prin comanda SketchUpload sau combinatia de chei CTRL+U.
Pagina 9 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
a) LED bicolor brick 3 buc, pentru afiarea strii de oprit/pornit, daca s-a pornit irigarea
b) Senzor de umiditate (simulat prin poteniometru legat la o intrare analogic)
c) Ecran LCD
d) Buton
Cerine:
La apasarea butonului se porneste/opreste sistemul.
n funcie de umiditatea msurata la un interval de timp se citete valoarea senzorului de
umiditate i se afieaz pe ecranul LCD. Dac senzorul de umiditate citete o valoare peste
un prag prestabilit udarea nu are loc n ziua current i se aprinde ledul de culoare albastra.
a) LED RGB brick 1 buc, pentru afiarea strii n care se afl sistemul anti efracie
b) Senzor magnetic Hall 1buc
c) Senzor de vibraie pentru detectarea micrii
d) Ecran LCD
e) Buton
Cerine:
La apasarea butonului se porneste/opreste sistemul.
Dac sistemul de anti efractie este activat i senzorii detecteaz o efracie aceast efracie
este semnalizat pe ecran iar LED-ul rgb se coloreaz n rou. Dac sistemul este dezarmat
si senzorii detecteaz ceva pe ecran se afieaz un mesaj care conine senzorul activat pentru
posibila bre de securitate iar senzorul RGB lumineaz in albastru. Dac sistemul este armat
si nu este nici o efractie LED-ul RGB lumineaz alternative in Rou i Albastru.
Pagina 10 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
Cerinte:
Se vor sincroniza astfel semafoarele incat atunci cand pietonii au verde, vehicolele sa aiba
rosu (atentie la decalajele de timp).
La inceputul programului ambele semafoare vor fi puse pe rosu timp de 10 secunde, dupa
care programul va incepe cu verde la pietoni (semnal audio pentru nevazatori) si rosu la
vehicole.
In caz de "cutremur" semafoarele pentru vehicole vor fi puse pe galben intermitent iar cele
pentru pietoni vor fi stinse. Semnal audio diferit pentru nevazatori.
a) Senzor Lumina Brick (sistemul se porneste automat "noaptea" - sub un anumit prag)
b) LED-uri brick (rosu, verde si albastru)
c) Minidifuzor brick (semnal audio pentru alarma)
d) Senzor vibratii brick (declansare alarma la vibratii)
e) Shield LCD 16X2 (afiseaza starea sistemului)
f) Buton
Cerinte:
Pagina 11 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte
Cerinte:
La apasarea butonului se porneste/opreste sistemul. Daca sistemul este oprit va fi aprins ledul
rosu iar daca este pornit ledul verde.
Dac sistemul este n stare activ se produce:
- afisarea unui mesaj pe LCD de alarm n caz c valorile primite de la senzorul de puls
sunt mai mari sau mai mici fa de intervalul precizat
- afisarea unui mesaj pe LCD n caz c temperatura ambiental poate crea probleme
de sntate pentru o persoana (ex. Prea cald sau prea rece)
Pagina 12 din 12