This shows you the differences between two versions of the page.
pm:prj2021:amocanu:lcd_piano [2021/05/30 00:39] liviu.dragulin [Descriere generală] |
pm:prj2021:amocanu:lcd_piano [2021/05/31 21:17] (current) liviu.dragulin [Autor] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== LCD Piano====== | ====== LCD Piano====== | ||
- | <note>[[mailto:liviu.dragulin@stud.acs.upb.ro|Drăgulin Liviu-Mihai]]</note> | + | ===== Autor ===== |
+ | <note> | ||
+ | [[mailto:liviu.dragulin@stud.acs.upb.ro|Drăgulin Liviu-Mihai]]\\ | ||
+ | 334CC | ||
+ | </note> | ||
===== Introducere ===== | ===== Introducere ===== | ||
Proiectul constă în împlementarea unui pian cu 8 clape și 2 butoane de schimbare a modului. Pianul va avea trei moduri: NORMAL, RECORD și LISTEN. | Proiectul constă în împlementarea unui pian cu 8 clape și 2 butoane de schimbare a modului. Pianul va avea trei moduri: NORMAL, RECORD și LISTEN. | ||
Line 31: | Line 35: | ||
</note> | </note> | ||
Cele 8 clape ale pianului sunt reprezentate de 8 butoane care sunt conectate la pinii 3-10 în modul INPUT_PULLUP. Datorită modului INPUT_PULLUP, butoanele nu au nevoie de rezistențe. Butoanele cu care se schimbă modurile pianului sunt conecate la pinii 11, respectiv 12 tot în modul INPUT_PULLUP. Buzzer-ul este conectat la pin-ul 2; redarea sunetului se face cu ajutorul funcției **tone**.\\ | Cele 8 clape ale pianului sunt reprezentate de 8 butoane care sunt conectate la pinii 3-10 în modul INPUT_PULLUP. Datorită modului INPUT_PULLUP, butoanele nu au nevoie de rezistențe. Butoanele cu care se schimbă modurile pianului sunt conecate la pinii 11, respectiv 12 tot în modul INPUT_PULLUP. Buzzer-ul este conectat la pin-ul 2; redarea sunetului se face cu ajutorul funcției **tone**.\\ | ||
- | Comunicarea cu display-ul LCD 1602 se face cu ajutorul modului I2C prin intermediul bibliotecii LiquidCrystal_I2C.h care are la rândul ei nevoie de biblioteca Wire.h. Utilizarea EEPROM-ului se realizează cu ajutorul bibliotecii EEPROM.h. Pe prima linie a display-ului este afișat modul în care se află pianul (NORMAL, RECORD, LISTEN), iar pe a doua linie sunt este afișat: | + | Comunicarea cu display-ul LCD 1602 se face cu ajutorul modului I2C (SDA se conectează la pinul A4, iar SCL la pinul A5) prin intermediul bibliotecii LiquidCrystal_I2C.h care are la rândul ei nevoie de biblioteca Wire.h. Utilizarea EEPROM-ului se realizează cu ajutorul bibliotecii EEPROM.h. Pe prima linie a display-ului este afișat modul în care se află pianul (NORMAL, RECORD, LISTEN), iar pe a doua linie este afișat: |
* ultima clapă apăsată | * ultima clapă apăsată | ||
SAU | SAU | ||
- | * ## - atunci când nu există tastă precedentă apăsată, sau când pianul se află în modul LISTEN | + | * ## - atunci când nu există tastă precedentă apăsată sau când pianul se află în modul LISTEN |
SAU | SAU | ||
* oo - atunci când înregistrarea melodiei a început în modul RECORD | * oo - atunci când înregistrarea melodiei a început în modul RECORD | ||
- | Când pianul este în modul RECORD, melodia înregistrată precedent nu este ștearsă imediat, trebuie apăsată oricare clapă pentru a începe înregistrarea și ștergerea melodiei a fost memorată înainte.\\ | + | Când pianul este în modul RECORD, melodia înregistrată precedent nu este ștearsă imediat, trebuie apăsată oricare clapă pentru a începe înregistrarea și ștergerea melodiei memorate înainte.\\ |
În modul LISTEN, clapele pianului sunt dezactivate. Singurele butoane ce pot fi apăsate sunt cele de schimbare a modului în care se află pianul. | În modul LISTEN, clapele pianului sunt dezactivate. Singurele butoane ce pot fi apăsate sunt cele de schimbare a modului în care se află pianul. | ||
==== Funcții implementate ==== | ==== Funcții implementate ==== | ||
- | * **lcd_change_line** - schimbă o linie a buffer-ului intern programului, în care este memorat conținutul celor două linii ale lcd-ului, în funcție de ce buton este apăsat și marcheză că liniile display-ului trebuie actualizate | + | * **lcd_change_line** - funcție ce schimbă o linie a buffer-ului intern programului, în care este memorat conținutul celor două linii ale lcd-ului, în funcție de ce buton este apăsat și marcheză că liniile display-ului trebuie actualizate |
* **play_note** - funcție ce redă sunetul clapei apăsate | * **play_note** - funcție ce redă sunetul clapei apăsate | ||
* **start_recording** - funcție ce începe memorarea secvenței de clape apăsate | * **start_recording** - funcție ce începe memorarea secvenței de clape apăsate | ||
Line 56: | Line 60: | ||
[[https://github.com/liviumdragulin/lcd_piano|GitHub]]\\ | [[https://github.com/liviumdragulin/lcd_piano|GitHub]]\\ | ||
\\ | \\ | ||
- | YouTube: **TODO** | + | [[https://drive.google.com/file/d/1JBiFXFTjniZ8-KLuL_Kb1RiKoZthYCIC/view|Video]]\\ |
</note> | </note> | ||
+ | {{:pm:prj2021:amocanu:lcd_piano_demo.jpg?600|}} | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
Line 68: | Line 73: | ||
https://github.com/arduino/ArduinoCore-avr/blob/master/libraries/EEPROM/src/EEPROM.h\\ | https://github.com/arduino/ArduinoCore-avr/blob/master/libraries/EEPROM/src/EEPROM.h\\ | ||
https://www.tinkercad.com/\\ | https://www.tinkercad.com/\\ | ||
- | {{:pm:prj2021:amocanu:lcd_piano.pdf|}} | + | {{:pm:prj2021:amocanu:lcd_piano2.pdf|}} |