This shows you the differences between two versions of the page.
pm:prj2024:ccontasel:ana_maria.diaconu02 [2024/05/27 04:46] ana_maria.diaconu02 [Software Design] |
pm:prj2024:ccontasel:ana_maria.diaconu02 [2024/05/27 09:19] (current) ana_maria.diaconu02 [Rezultate obținute] |
||
---|---|---|---|
Line 22: | Line 22: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Când un utilizator apasă un buton, această acțiune este detectată de microcontrollerul integrat în dispozitiv. Fiecare buton este mapat la o notă muzicală specifică, iar microcontrollerul, recunoscând butonul activat, inițiază redarea sunetului corespunzător acelei note. Concomitent, pe ecranul LCD se afișează nota care este redată. Sunetul persistă pentru durata în care butonul este menținut apăsat. În absența oricărei acțiuni, ecranul LCD afișează mesajul „I want to sing!”. | + | Când un utilizator apasă un buton, această acțiune este detectată de microcontrollerul integrat în dispozitiv. Fiecare buton este mapat la o notă muzicală specifică, iar microcontrollerul, recunoscând butonul activat, inițiază redarea sunetului corespunzător acelei note. Concomitent, pe ecranul LCD se afișează nota care este redată. Sunetul persistă pentru durata în care butonul este menținut apăsat. |
- | Un buton dedicat, distinct de celelalte, activează redarea unei melodii de pe cardul SD. La apăsare, melodia se redă complet, iar pe ecranul LCD se afișează „Play music!” cu un contor regresiv de la 1000 ms. Dacă timpul expiră înainte de finalul melodiei, apare mesajul „Time is up!”.În timpul redării unei melodii, apăsările altor butoane sunt ignorate, asigurând astfel o experiență auditivă neîntreruptă și clară. | + | Un buton dedicat, distinct de celelalte, activează redarea unei melodii de pe cardul SD. La apăsare, melodia se redă complet, iar pe ecranul LCD se afișează „Play music!” cand este apasat butonul apoi pe LCD se pot observa notele din care este compusă melodia și duratele lor, iar la final se afișează mesajul "Melody finished!".În timpul redării unei melodii, apăsările altor butoane sunt ignorate, asigurând astfel o experiență auditivă neîntreruptă și clară. |
<note> | <note> | ||
Line 59: | Line 59: | ||
{{:pm:prj2024:ccontasel:sch_elec_amd.png?700 |}} | {{:pm:prj2024:ccontasel:sch_elec_amd.png?700 |}} | ||
<note important>Mod de conectare pini</note> | <note important>Mod de conectare pini</note> | ||
- | **Arduino Uno:** 5V și GND (masa): Acești pini sunt folosiți pentru a alimenta alte componente care necesită 5V. | + | **Arduino Uno:** |
+ | |||
+ | 5V și GND (masa): Acești pini sunt folosiți pentru a alimenta alte componente care necesită 5V. | ||
**Display LCD:** | **Display LCD:** | ||
+ | |||
VCC la 5V de pe Arduino pentru alimentare. | VCC la 5V de pe Arduino pentru alimentare. | ||
+ | |||
GND la GND de pe Arduino. | GND la GND de pe Arduino. | ||
+ | |||
SDA la pinul A4 (SDA) pe Arduino. | SDA la pinul A4 (SDA) pe Arduino. | ||
+ | |||
SCL la pinul A5 (SCL) pe Arduino. | SCL la pinul A5 (SCL) pe Arduino. | ||
**Buzzer:** | **Buzzer:** | ||
+ | |||
Un pin se conectează la pinul digital 2 pe Arduino | Un pin se conectează la pinul digital 2 pe Arduino | ||
+ | |||
Celălalt pin se conectează la GND. | Celălalt pin se conectează la GND. | ||
**Modul de citire card SD:** | **Modul de citire card SD:** | ||
+ | |||
CS (Chip Select) - pinul 10 | CS (Chip Select) - pinul 10 | ||
+ | |||
MOSI (Master Out Slave In)- pinul 11. | MOSI (Master Out Slave In)- pinul 11. | ||
+ | |||
MISO (Master In Slave Out) - pinul 12. | MISO (Master In Slave Out) - pinul 12. | ||
+ | |||
SCK (Serial Clock) - pinul 13. | SCK (Serial Clock) - pinul 13. | ||
+ | |||
VCC se conectează la 5V. | VCC se conectează la 5V. | ||
Line 94: | Line 107: | ||
</note> | </note> | ||
=== Descrierea functiilor === | === Descrierea functiilor === | ||
+ | <note tip> | ||
1. setup() | 1. setup() | ||
Această funcție este apelată o singură dată la pornirea microcontrolerului. În aceasta: | Această funcție este apelată o singură dată la pornirea microcontrolerului. În aceasta: | ||
Line 129: | Line 142: | ||
Afișează nota corespunzătoare pe LCD. | Afișează nota corespunzătoare pe LCD. | ||
Dacă apăsarea a fost destul de lungă și pentru butonul specific, poate iniția redarea unei melodii de pe SD. | Dacă apăsarea a fost destul de lungă și pentru butonul specific, poate iniția redarea unei melodii de pe SD. | ||
+ | </note> | ||
+ | |||
+ | <note important> Mai jos se regăsesc conceptele software folosite</note> | ||
+ | <note tip> | ||
+ | |||
+ | 1. **SPI** (Serial Peripheral Interface): Aceasta este folosită implicit prin includerea bibliotecii <SPI.h> și utilizarea modulului SD, care comunica prin protocolul SPI cu microcontrolerul. | ||
+ | |||
+ | 2. **I2C** (Inter-Integrated Circuit): Utilizarea unui display LCD cu control I2C (LiquidCrystal_I2C lcd(0x27, 16, 2);), care se bazează pe comunicația I2C pentru a trimite comenzi și date către display. | ||
+ | |||
+ | 3.** UART** (Universal Asynchronous Receiver/Transmitter): Comunicarea serială prin Serial.begin(9600); este un exemplu de utilizare UART, unde microcontrolerul trimite datele la un terminal sau la un alt dispozitiv pentru debug sau afișare. | ||
+ | |||
+ | 4. **GPIO** (General Purpose Input/Output): Se utilizează pentru citirea stării butoanelor și controlul buzzerului. Pinii sunt setați ca intrări pentru butoane cu rezistențe de pull-up și ca ieșire pentru buzzer. | ||
+ | |||
+ | 5. **Timere**: Utilizarea funcției millis() pentru a măsura intervalul de timp în care un buton este apăsat și pentru a determina când să actualizeze afișajul LCD este un exemplu de utilizare a timerelor interne ale microcontrolerului. | ||
+ | </note> | ||
===== Rezultate obținute ===== | ===== Rezultate obținute ===== | ||
+ | <note tip> Modul de functionare al proiectului se poate vedea in videoclipul de mai jos</note> | ||
+ | <html> <iframe width="640" height="360" src="https://youtube.com/embed/shorts/eAchCWtF-4E" title="Proiect PM Pian Digital" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> </html> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||