UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE
ELECTRICĂ ȘI TEHNOLOGIA
INFORMAȚIEI
PROIECTAREA CU MICROPROCESOARE II
PROIECT
“Pian Digital”
Coordonator:
Prof. Vari- Kakas St. Student:
Morosan Mihaela
Anul III, TI, grupa 1631 B
Andreea
Anul III, C, grupa
2019
Cuprins
1. Specificarea temei …………………………………………………...1 pag.
2. Schema bloc…………………………………………………………. 2 pag.
3. Prezentarea modulului, a procesorului și a celorlalte componente….. 3 pag.
3.1 Modulul Arduino UNO………………………………………………............3 pag.
3.2 Breadboard…………………………………………………………………….. 5 pag.
3.3 Difuzor………………………………………………………………………….5 pag.
3.4 Buton……………………………………………………………………………5 pag.
3.5 Cablu de legătură………………………………………………………………..5 pag.
4. Schema electrică hardware……………………………………………..6 pag.
5. Schema logică a programului…………………………………………..7 pag.
6. Codul sursă……………………………………………………………..8 pag.
7. Modul de utilizare a aplicației………………………………………...11 pag.
8. Bibliografie……………………………………………………………12 pag.
1. Specificarea temei
Lucrarea ,,Programarea pianului în Arduino’’are caracter practic şi îşi propune să comandam
şi să controlam un pian utilizând platforma Arduino.
Arduino este un instrument prin care se pot realiza sisteme informatice capabile să
,,perceapă’’ şi să ,,controleze’’ lumea înconjurătoare. Acest instrument este open-sourceşi este
compus dintr-un mediu de dezvoltare (o variantă de Wiring – platforma folosită pentru procesare
multimedia) şi o placă de dezvoltare cu microcontroler AVR. Arduino poate fi folosit pentru
dezvoltarea de obiecte interactive. Informaţia este preluată de la o gamă variată de senzori şi
comutatoare, se procesează în interiorul microcontrolerului AVR, şi este transmisă către o gamă
la fel de variată de lumini, motoare, actuatoare etc
De ce Arduino?
Pe piaţă există o gamă foarte variată de sisteme de dezvoltare bazate pe microcontroller.
Avantajele pe care le are Arduino faţă de aceste sisteme sunt:
Costuri de achiziţie reduse;
Poate fi folosit pe orice sistem de operare (Linux,Windows sau MacOS);
Majoritatea plăcilor de dezvoltare fiind limitate la sistemul de operare Windows;
Un mediu de programare simplu şiuşor de învăţat;
Este open source, atât placa de dezvoltare cât şi mediul de programare.
In cazul pianului placa va emite o serie de note muzicale in functie de tasta apasata de
utilizator. La placa Arduino se vor conecta un difuzor si 8 butoane, cate una pentru fiecare nota
muzicala. Programul software va interpreta intreruperile cauzate de apasarea unui buton
determinand comanda specifica corespunzatoare butonului care a fost apasat si va reda nota
muzicala asociata butonului respectiv.
[Link] bloc
3. Prezentarea modulului, a procesorului și a celorlalte componente
Componentele folosite în proiect sunt următoarele:
a. o placă de dezvoltare Arduino
b. un breadboard
c. un difuzor
d. 8 butoane
e. cabluri de legătură
3.1 Modulul Arduino UNO
O plăcuță Arduino este compusă dintr-un microcontroler Atmel AVR de 8-, 16- sau 32-
biți cu componente complementare care facilitează programarea și încorporarea în alte circuite.
Un aspect important la Arduino este că acesta dispune de conectori standard, care permit
utilizatorului să conecteze plăcuța cu procesorul la diferite module interschimbabile numite
shield-uri. Acest aspect face Arduino o soluție simplă, permițând programarea de pe orice
computer .
La nivel conceptual, când se folosește mediul de dezvoltare integrat Arduino, programarea
tuturor plăcuțelor se face prin conexiune serială. Implementarea acesteia diferă în funcție de
versiunea hardware.
- intrare analogică: este folosită pentru citirea semnalelor nondigitale. Ex.: senzori de
temperatură, senzori de lumină, senzori de presiune, umiditate etc.
- intrare/ieşire digitală: imaginativă un întrerupător de la un bec. Acesta poate să aibă 2 stări: închis sau
deschis adică 0 sau 1.
- pwm (Pulse-widthmodulation): modulaţia în durată a impulsurilor. Poate fi utilizat pentru a îndeplini o
varietate foarte mare de sarcini, de la iluminarea LED până la controlul vitezei motoarelor electrice.
Proiectul Arduino oferă un mediu integrat de dezvoltare (IDE), care este o aplicație cross-
platform, scrisă în Java. Arduino IDE suportă limbajele de programare C și C++ folosind reguli
speciale de organizare a codului. Arduino IDE oferă o librărie software numită Wiring, din
proiectul Wiring, care oferă multe proceduri comune de intrare și ieșire.
Programarea plăcuţei Arduino în C: Modelul de programare pe care se bazează C
presupune ca programatorul ştie exact ce vrea să facă şi ştie să folosească limbajul C pentru a
obţine acel lucru. Limbajul C lasă programatorul să scrie programul într-un timp minim fără sa
intervină în calea lui. C este simplu deoarece numărul de componente al limbajului este relativ
mic. Spre exemplu dacă două funcţii ale limbajului realizează mai mult sau mai puţin acelaşi
lucru, C va include doar o funcţie. Avantaje şi dezavantaje privind utilizarea limbajului C:
este extrem de flexibil, o secvenţă putând fi codificată în mai multe moduri; aşadar putem
scrie acelaşi program în mai multe feluri, el executând aceeaşi funcţie.
permite o scriere compactă, instrucţiunile putând fi scrise pe acelaşi rând; însă acest lucru
nu este recomandat deoarece corectarea programului se face mai greu iar după o perioadă
nici creatorul nu îşi mai înţelege propriul cod.
programul poate fi scris într-o manieră apropiată de pseudocod ([Link]=fals),
conceperea algoritmilor fiind mult mai uşoară şi eficientă, permite scrierea a aproape
orice, greşelile de sintaxa fiind iminente.
C este folosit în general în proiecte de mici dimensiuni unde se pune accent pe
performanţa codului. Ex.: programarea microcontrolerelor. În orice caz limbajul C este
un limbaj de programare foarte influent şi în acelaşi timp foarte popular.
3.2 Breadboard
Breadboard-ul se foloseste pentru realizarea extrem de rapida a montajelor fara a fi
nevoie de un letcon sau pistol de lipit.
Piesele se introduc in gaurile din placa iar legaturile intre pini se realizeaza cu fire tip
tata-tata sau mama-tata.
La mijloc se pot introduce circuite integrate sau module cu doua randuri de pini, fiecare
pin putand fi rapid conectat altundeva prin cele 4 gauri asezate perpendicular pe circuit.
In laterale sunt cate doua magistrale cu legaturi orizontale care in mod normal se folosesc
pentru alimentare. Aceasta placa are cate doua magistrale independente pe fiecare parte (4 in
total).
3.3 Difuzor
La aplicarea unui semnal de 5V, modulul genereaza un sunet continuu, de frecventa fixa,
spre deosebire de buzzerul pasiv, care are nevoie de un semnal dreptunghiular.
3.4 Buton
Butonul este un tip de comutatorutilizat pentru controlul unor aparate sau numai a unor
funcții ale acestora. Butoanele sunt de diferite forme și dimensiuni și se găsesc în tot felul de
dispozitive, deși în principal în echipamentele electrice și electronice.
Butoanele sunt în general activate atunci când este apăsat cu un deget. Permite fluxul de
curent în timp ce acționat. Când nu mai este apăsat revine în poziția inițială.
Butonul unui dispozitiv electronic, de obicei, funcționează ca un întrerupătorelectric,
adică are în interior două contacte, fiind pe unul, se va activa funcția inversă in momentul acesta
care este realizat, în cazul în care acesta este un dispozitiv (normal deschis) va fi închis, în cazul
unui dispozitiv de NI (normal închis) va fi deschis.
3.5 Cabluri de legaturi
Cabluri de legaturi sunt folosite pentru proiecte de electronice şi un accesoriu pentru a fi
utilizate cu produsele noastre autentice Arduino. Firele sunt flexibile, refolosibile, uşor de a
urmări, uşor de conectat şi deconectaţ, poate fi folosit din nou şi din nou.
9. Schema electrică hardware
5. Schema logica a programului
Fig. Organigrama programului
[Link] sursă
//Arduino Piano
/*
Visit the Channel for more interesting projects
[Link]
*/
#define T_C 262
#define T_D 294
#define T_E 330
#define T_F 349
#define T_G 392
#define T_A 440
#define T_B 493
const int C = 10;
const int D = 9;
const int E = 8;
const int F = 7;
const int G = 6;
const int A = 5;
const int B = 4;
const int Buzz = 11;
const int LED = 13;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(C, INPUT);
digitalWrite(C,HIGH);
pinMode(D, INPUT);
digitalWrite(D,HIGH);
pinMode(E, INPUT);
digitalWrite(E,HIGH);
pinMode(F, INPUT);
digitalWrite(F,HIGH);
pinMode(G, INPUT);
digitalWrite(G,HIGH);
pinMode(A, INPUT);
digitalWrite(A,HIGH);
pinMode(B, INPUT);
digitalWrite(B,HIGH);
digitalWrite(LED,LOW);
}
void loop()
{
while(digitalRead(C) == LOW)
{
tone(Buzz,T_C);
digitalWrite(LED,HIGH);
}
while(digitalRead(D) == LOW)
{
tone(Buzz,T_D);
digitalWrite(LED,HIGH);
}
while(digitalRead(E) == LOW)
{
tone(Buzz,T_E);
digitalWrite(LED,HIGH);
}
while(digitalRead(F) == LOW)
{
tone(Buzz,T_F);
digitalWrite(LED,HIGH);
}
while(digitalRead(G) == LOW)
{
tone(Buzz,T_G);
digitalWrite(LED,HIGH);
}
while(digitalRead(A) == LOW)
{
tone(Buzz,T_A);
digitalWrite(LED,HIGH);
}
while(digitalRead(B) == LOW)
{
tone(Buzz,T_B);
digitalWrite(LED,HIGH);
}
noTone(Buzz);
digitalWrite(LED,LOW);
}
[Link] de utilizare a aplicației
Codul pentru Arduino. Odată ce alimentarea este activată, Arduino este pregătit să
accepte intrarea de pe butoane.
Fiecare buton este asociat cu un semnal PWM din cod. Când un buton este împins, acel
semnal este generat prin intermediul soneriei Piezo Electric. Redați câteva tonuri utilizând
diferite butoaneUn proiect distractiv numit Piano Arduino se bazează aici. Acest proiect poate fi
de ajutor în înțelegerea capacităților de sunet ale Arduino.
Bibliografie
1. Arduino Project Hub [Link]
2. Arduino Piano [Link]
3. Mini Piano [Link]
08f8b8
4. Arduino Project Handbook: 25 Practical Projects to Get You Started, Mark
Geddes, No Starch, 16 Dec. 2016 a.