This shows you the differences between two versions of the page.
pm:prj2022:abirlica:trainer_piano [2022/05/29 13:34] maria.timbur |
pm:prj2022:abirlica:trainer_piano [2022/05/29 15:45] (current) maria.timbur [Descriere generală] |
||
---|---|---|---|
Line 2: | Line 2: | ||
===== Introducere ===== | ===== Introducere ===== | ||
+ | Povestea pianului începe la jumătatea secolului al XII-lea cu primul său strămoș - monocordul cu clape - căruia ulterior i-au fost adăugate mai multe coarde, transformându-se în mult mai cunoscutul clavicord, care funcționa printr-un mecanism de atingere a coardelor în momentul apăsării clapelor. | ||
+ | De ceva vreme se pare că beneficiile lecţiilor de pian au fost redescoperite şi din ce în ce mai mulţi copii învaţă să cânte la acest instrument muzical din nou la modă. | ||
- | Vreau sa implementez un trainer de pian, care sa arate asa: | + | Studierea pianului are multe beneficii pe care copiii le dobândesc atunci când învaţă să cânte la acest instrument, de exemplu: |
+ | * dezvoltă încrederea în sine | ||
+ | * îmbunătăţesc coordonarea | ||
+ | * ajută la concentrare | ||
+ | * ajută la dezvoltarea culturii generale | ||
+ | * imbunătățește conexiunile neuronale | ||
+ | * previne pierderea auzului și a memoriei | ||
+ | * crește imunitatea | ||
+ | * imbunătățește coordonarea | ||
+ | * corectează motrica fină la copiii cu paralizie cerebrală | ||
+ | * ajută copii cu autism | ||
+ | * ameliorează simptomele de demență | ||
- | https://www.youtube.com/watch?v=OF3Wbm6lZwQ&ab_channel=Luluetlolo. | ||
- | O sa-mi aleg o melodie si cu ajutorul unor leduri programabile voi arata treptat ce nota trebuie apasata. | + | Pentru ca lecţiile de pian revin în actualitate si timp de 5 ani am invatat si eu sa cant la pian (si chiar ma pricepeam), am zis sa-mi folosesc creativitatea si sa implementez un proiect dedicat pianului. |
- | Am ales sa am 3 randuri de led-uri astfel incat sa fie intuitiva apasarea clapelor pe pian. | ||
- | Scopul proiectului este sa ajute persoanele care invata sa cante la pian intr-un mod mai interactiv si colorat. | ||
- | Exista cateva dificultati des intalnite de catre pianistii incepatori in studierea instrumentului, printre care se numara: varsta si complexitatea instrumentului. In consecinta, foarte multi dintre acestia renunta. | ||
+ | ===== Descriere generală ===== | ||
+ | |||
+ | Am implementat un trainer de pian, care arata asa: | ||
+ | * https://www.youtube.com/watch?v=OF3Wbm6lZwQ&ab_channel=Luluetlolo | ||
+ | si ajuta persoanele care vor sa invete un cantec usor la pian. | ||
+ | |||
+ | Am ales o melodie simpla din filmul The Godfather si cu ajutorul benzii de leduri programabile am aratat treptat ce nota trebuie apasata. Am ales sa am 3 randuri de led-uri astfel incat sa fie intuitiva apasarea clapelor pe pian. | ||
+ | Scopul proiectului este sa ajute persoanele care invata sa cante la pian intr-un mod mai interactiv si colorat. | ||
+ | Exista cateva dificultati des intalnite de catre pianistii incepatori in studierea instrumentului, printre care se numara: | ||
+ | * varsta persoanelor care vor sa studieze pianul | ||
+ | * complexitatea instrumentului | ||
+ | In consecinta, foarte multi dintre acestia renunta. | ||
Consider ca proiectul are potential si poate deveni util, intrucat este o alternativa distractiva a cantatului la pian. | Consider ca proiectul are potential si poate deveni util, intrucat este o alternativa distractiva a cantatului la pian. | ||
- | ===== Descriere generală ===== | + | |
{{ :pm:prj2022:abirlica:final1.jpeg?direct&800 |}} | {{ :pm:prj2022:abirlica:final1.jpeg?direct&800 |}} | ||
Line 38: | Line 59: | ||
**Mediu de dezvoltare:** Arduino IDE | **Mediu de dezvoltare:** Arduino IDE | ||
- | **Descriere:** Pentru programarea plăcii am instalat in Arduino IDE biblioteca **Adafruit NeoPixel**. Aceasta faciliteaza setarea benzii de leduri. | + | **Descriere:** Pentru programarea plăcii am instalat in Arduino IDE biblioteca **Adafruit NeoPixel**. Aceasta faciliteaza setarea benzii de leduri. |
Am organizat led-urile sub forma urmatoare: verde - clapa alba, roșu - clapa neagră. Adica daca led-urile sunt de culoarea rosie trebuie apasata clapa neagra, iar daca led-urile sunt verzi, trebuie apasata clapa alba. | Am organizat led-urile sub forma urmatoare: verde - clapa alba, roșu - clapa neagră. Adica daca led-urile sunt de culoarea rosie trebuie apasata clapa neagra, iar daca led-urile sunt verzi, trebuie apasata clapa alba. | ||
Nota ce trebuie cântată în prezent (nota curentă) va lumina primul rând de led-uri, nota următoare pe al doilea și cea de a treia respectiv pe al treilea rând. | Nota ce trebuie cântată în prezent (nota curentă) va lumina primul rând de led-uri, nota următoare pe al doilea și cea de a treia respectiv pe al treilea rând. | ||
Line 45: | Line 65: | ||
{{ :pm:prj2022:abirlica:mt3.jpeg?direct&600 |}} | {{ :pm:prj2022:abirlica:mt3.jpeg?direct&600 |}} | ||
- | |||
{{ :pm:prj2022:abirlica:mt4.jpeg?direct&600 |}} | {{ :pm:prj2022:abirlica:mt4.jpeg?direct&600 |}} | ||
- | <spoiler Cod Sursa> | + | Am adaugat si doua butoane: |
- | <file C src.c> | + | - primul buton are rolul de **pause** |
- | #include <Adafruit_NeoPixel.h> | + | - al doilea buton are rolul de **replay** de la inceput |
- | #define PIN 6 | + | |
- | #define N_ROWS 3 | + | |
- | #define N_COLS 28 | + | |
- | #define DO 0 | + | |
- | #define RE 2 | + | |
- | #define MI 4 | + | |
- | #define FA 6 | + | |
- | #define SOL 8 | + | |
- | #define LA 10 | + | |
- | #define SI_B 11 | + | |
- | #define SI 12 | + | |
- | #define DO_2 14 | + | |
- | #define RE_2 16 | + | |
- | #define MI_B_2 17 | + | |
- | #define MI_2 18 | + | |
- | #define FA_2 20 | + | |
- | #define FA_D_2 21 | + | |
- | #define SOL_2 22 | + | |
- | #define N_LEDS (N_ROWS * N_COLS) | + | |
- | Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_GRB + NEO_KHZ800); | + | **Diagrama de activitate** |
+ | {{ :pm:prj2022:abirlica:mt15.jpeg?direct&600 |}} | ||
- | int delays[N_ROWS]; | ||
- | void erase(){ | ||
- | for(uint16_t i=0; i < strip.numPixels(); i++) { | ||
- | strip.setPixelColor(i, 0); | ||
- | } | ||
- | } | ||
- | void setup() { | + | ===== Rezultate Obţinute ===== |
- | strip.begin(); | + | |
- | strip.setBrightness(125); | + | |
- | erase(); | + | |
- | strip.show(); | + | |
- | for(int i = 0; i < N_ROWS; i++){ | + | **Videoclipuri demonstrative:** |
- | delays[i] = 1000; | + | - https://youtu.be/7fi-UQZGW0c |
- | } | + | - https://youtu.be/aaRttsjFvNE |
- | } | + | |
- | void check(){ | ||
- | erase(); | ||
- | for(int i = 0; i < strip.numPixels(); i++) { // Draw new pixel | ||
- | if(i > 0){ | ||
- | strip.setPixelColor(i - 1, 0); | ||
- | } else { | ||
- | strip.setPixelColor(N_LEDS - 1, 0); | ||
- | } | ||
- | strip.setPixelColor(i, strip.Color(32,0,0)); | ||
- | | ||
- | delay(100); | ||
- | strip.show(); | ||
- | } | ||
- | erase(); | ||
- | } | ||
- | |||
- | int getInd(int i, int j){ | ||
- | return i * N_COLS + (i%2 ? (N_COLS - j - 1) : j); | ||
- | } | ||
- | |||
- | int lastNote = -1; | ||
- | |||
- | void play(uint32_t note){ | ||
- | for(int i = 0; i < N_ROWS; i++){ | ||
- | if(i < (N_ROWS - 1)){ | ||
- | for(int j = 0; j < N_COLS; j++){ | ||
- | strip.setPixelColor(getInd(i,j), strip.getPixelColor(getInd(i + 1,j))); | ||
- | } | ||
- | } else { | ||
- | for(int j = 0; j < N_COLS; j++){ | ||
- | if((note == j) || (note == j - 1)){ | ||
- | strip.setPixelColor(getInd(i,j), strip.Color(note % 2 ? 255 : 0, note % 2 ? 0 : 255, 0)); | ||
- | } else { | ||
- | strip.setPixelColor(getInd(i,j), strip.Color(0, 0, 0)); | ||
- | } | ||
- | } | ||
- | } | ||
- | } | ||
- | strip.show(); | ||
- | delay(500); | ||
- | } | ||
- | |||
- | void play(uint32_t note, int duration){ | ||
- | for(int i = 0; i < duration; i++){ | ||
- | play(note); | ||
- | } | ||
- | } | ||
- | |||
- | void part1(){ | ||
- | play(SI); | ||
- | play(MI_2); | ||
- | play(SOL_2); | ||
- | } | ||
- | |||
- | void part2(){ | ||
- | play(FA_D_2); | ||
- | play(MI_2); | ||
- | play(SOL_2); | ||
- | play(MI_2); | ||
- | } | ||
- | |||
- | void part3(){ | ||
- | play(FA_2); | ||
- | play(MI_2); | ||
- | play(DO_2); | ||
- | play(RE_2); | ||
- | } | ||
- | |||
- | void part4(){ | ||
- | play(SI, 4); | ||
- | } | ||
- | |||
- | void part5(){ | ||
- | play(FA_D_2); | ||
- | play(MI_2); | ||
- | play(SI); | ||
- | play(SI_B); | ||
- | } | ||
- | |||
- | void part6(){ | ||
- | play(LA, 4); | ||
- | } | ||
- | |||
- | void part7(){ | ||
- | play(LA); | ||
- | play(DO_2); | ||
- | play(MI_B_2); | ||
- | } | ||
- | |||
- | void part8(){ | ||
- | play(FA_D_2, 4); | ||
- | } | ||
- | |||
- | void part9(){ | ||
- | play(MI_2, 4); | ||
- | } | ||
- | |||
- | void part10(){ | ||
- | play(MI); | ||
- | play(SOL); | ||
- | play(RE_2); | ||
- | } | ||
- | |||
- | void part11(){ | ||
- | play(DO_2); | ||
- | play(SI); | ||
- | play(RE_2); | ||
- | play(DO_2); | ||
- | } | ||
- | |||
- | void part12(){ | ||
- | play(DO_2); | ||
- | play(SI); | ||
- | play(SI); | ||
- | play(MI_B_2); | ||
- | } | ||
- | |||
- | void godfather(){ | ||
- | part1(); | ||
- | part2(); | ||
- | part3(); | ||
- | part4(); | ||
- | part1(); | ||
- | part2(); | ||
- | part5(); | ||
- | part6(); | ||
- | part7(); | ||
- | part8(); | ||
- | part7(); | ||
- | part9(); | ||
- | part10(); | ||
- | part11(); | ||
- | part12(); | ||
- | part9(); | ||
- | } | ||
- | |||
- | void loop() { | ||
- | check(); | ||
- | godfather(); | ||
- | check(); | ||
- | } | ||
- | </file> | ||
- | </spoiler> | ||
- | |||
- | ===== Rezultate Obţinute ===== | ||
{{ :pm:prj2022:abirlica:mt13.jpeg?direct&600 |}} | {{ :pm:prj2022:abirlica:mt13.jpeg?direct&600 |}} | ||
Line 257: | Line 102: | ||
De asemenea, cred ca datorită accesibilității, actualității și conceptului interesant ce va simplifica studierea pianului, proiectul meu poate fi folosit atât de cei mici cât și de cei mari. | De asemenea, cred ca datorită accesibilității, actualității și conceptului interesant ce va simplifica studierea pianului, proiectul meu poate fi folosit atât de cei mici cât și de cei mari. | ||
M-am informat si exista studii care arata ca pianul poate fi folosit ca mijloc în tratamentul unor boli mintale și psihice: | M-am informat si exista studii care arata ca pianul poate fi folosit ca mijloc în tratamentul unor boli mintale și psihice: | ||
- | + | * https://ro.approby.com/cum-terapia-muzicala-poate-beneficia-de-bolnavii-de-boala-alzheimer/ | |
- | https://ro.approby.com/cum-terapia-muzicala-poate-beneficia-de-bolnavii-de-boala-alzheimer/ | + | * https://ultrapsihologie.ro/2015/10/20/terapia-prin-muzica-pentru-copii-cu-sindromul-down-2/ |
- | + | * https://www.divahair.ro/mama_si_copilul/pianul-prietenul-copiilor-cu-autism | |
- | https://ultrapsihologie.ro/2015/10/20/terapia-prin-muzica-pentru-copii-cu-sindromul-down-2/ | + | |
- | + | ||
- | + | ||
- | https://www.divahair.ro/mama_si_copilul/pianul-prietenul-copiilor-cu-autism | + | |
**Viitoarele îmbunătățiri:** | **Viitoarele îmbunătățiri:** | ||
- | + | * Transmiterea melodiei de la calculator prin USB (folosind un format de tipul Midi). | |
- | 1. Transmiterea melodiei de la calculator prin USB (folosind un format de tipul Midi). | + | * Mărirea înălțimei și lățimei prototipului. |
- | + | * Atașarea unui microfon. | |
- | 2. Mărirea înălțimei și lățimei prototipului. | + | |
- | + | ||
- | 3. Atașarea unui microfon. | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||
<note tip> | <note tip> | ||
- | 1. 27 aprilie - Alegere proiect. | + | - 27 aprilie - Alegere proiect. |
- | + | - 3 mai - Adaugare schema bloc. | |
- | 2. 3 mai - Adaugare schema bloc. | + | - 10 mai - Adaugare schema electrica. |
- | + | - 17 mai - Implementare hardware și software. | |
- | 3. 10 mai - Adaugare schema electrica. | + | - 24 mai - Rezultate, concluzii, jurnal, bibliografie. |
- | + | ||
- | 4. 17 mai - Implementare hardware și software. | + | |
- | + | ||
- | 5. 24 mai - Rezultate, concluzii, jurnal, bibliografie. | + | |
</note> | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use | + | - https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use |
- | https://ardushop.ro/ro/electronica/331-banda-leduri-rgb-neopixels-ws2812b.html#/125-leduri_metru-60 | + | - https://ardushop.ro/ro/electronica/331-banda-leduri-rgb-neopixels-ws2812b.html#/125-leduri_metru-60 |
- | https://create.arduino.cc/projecthub/talofer99/arduino-and-addressable-led-b8403f | + | - https://create.arduino.cc/projecthub/talofer99/arduino-and-addressable-led-b8403f |
- | https://randomnerdtutorials.com/guide-for-ws2812b-addressable-rgb-led-strip-with-arduino/ | + | - https://randomnerdtutorials.com/guide-for-ws2812b-addressable-rgb-led-strip-with-arduino |
- | https://www.electroniclinic.com/arduino-ws2812b-led-strip-connection-and-code/ | + | - https://www.electroniclinic.com/arduino-ws2812b-led-strip-connection-and-code |
- | https://github.com/pololu/pololu-led-strip-arduino | + | - https://github.com/pololu/pololu-led-strip-arduin |
- | https://github.com/adafruit/Adafruit_NeoPixel | + | - {{:pm:prj2022:abirlica:arhiva_cod.zip|}} |
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||