Smart piano

Introducere

Cântatul la pian este o acțiune care stimulează atenția și memoria, îmbunătățește concentrarea, dar este și relaxantă. Însă, la început, controlul mișcărilor mâinilor pe claviatură poate părea dificil și nenatural. De aceea, scopul proiectului este de a veni în ajutorul celor care pornesc în această călătorie a muzicii, lăsându-se ghidați de un pian mai inteligent.

Descriere generala

Smart piano reprezintă o claviatură minimală de pian care își ghidează utilizatorul să apese clapele prin luminarea acestora. Astfel, în funcție de melodia dorită, clapele se for aprinde corespunzător pentru fiecare notă și vor emite un sunet în momentul în care este apăsată orice clapă. Doar atunci când utilizatorul va apăsa corect toate clapele, melodia pe care o va cânta va fi cea pe care a ales-o.

Există 2 moduri de funcționare: Free play mode și Practice mode. Prin intermediul unui ecran LCD utilizatorul va putea alege modul de utilizare și în cazul celui de-al doilea mod: melodia pe care dorește să o cânte. Prin intermediul butoanelor de control el va putea oricând să se întoarcă la meniul principal.

Hardware Design

Listă de piese

Piesă Cantitate
Placă de bază ATmega324 1
Buzzer passiv 1
LCD Nokia5110 1
Breadboard 2
Leduri x 8 8
Rezistențe 8 x 470Ω
Jumper wires

Schema electrică

Software Design

Mediu de dezvoltare

Arhiva conține:

  • Biblioteca display:
    • nokia5110.h
    • nokia5110.c
    • nokia5110_chars.h
  • Codul sursă:
    • piano.c
    • piano.h
  • Makefile
  • README

Codul e împarțit în 3 părți:

1. Funcții pentru afișarea diferitor meniuri pe display

  • Folosesc biblioteca display-ului nokia5110 pentru afișarea diferitelor meniuri în funcție de etapa în care se află utilizatorul. Pentru interacțiunea cu meniul se vor folosi butoanele de lângă display și primele 4 butoane ale pianului.
void print_start_screen(void);
void print_menu(void);
void print_practice_menu(void);
void print_songs(void);
void print_in_play_menu(void);

2. Funcții pentru controlul dispozitivelor I/O

  • Pentru citirea butoanelor sau aprinderea ledurilor. Ca butoane pentru claviatură am folosit pinii PB0-1, PD0 și PB3-7 (când am conectat și PB2 nu mai era recunoscută plăcuța de laptop).
void init_IO(void);
void switch_off_leds(void);
void switch_on_led(int pin);
int is_button_pressed(int pin);
void stop_buzzer(void);

3. Funcțiile pianului

  • Pentru aprinderea buzzerului am folosit funcția din laboratorul 0. De asemenea există câte o funcție pentru cele 2 moduri alese de utilizator.
void play_note(int note);
void practice_song(char *notes, int notes_number);
void free_play(void);

:?: Pentru mai multe detalii se poate consulta README-ul din arhivă.

Rezultate obținute

Am reușit să realizez un pian funcțional de pe care se pot învăța căteva melodii scurte (pe care le-am selectat cu greu 8-O):

  • Twinkle twinkle
  • Ode to joy
  • Titanic song
  • The scientist (Coldplay)

Live demo here: https://www.youtube.com/watch?v=-KgTNxhYBmI

Concluzii

Chiar dacă nu a ieșit ce voiam inițial (un pian cu niște clape mai umane) :-(, în final tot am obținut un pian destul de distractiv. Pe lângă partea software alte părți cu care mi-am bătut capul au fost: alegerea melodiilor și asamblarea proiectului într-o cutie care să arate cât de cât drăguț (and not so mainstream).
LOL It may be not the best, but it’s fun.

Download

Jurnal

Data Activitate
9.05 :!: Comandă prima parte din piese
14.05 :-D Sosire piese & montare display
15.05 8-) Montare butoane control & creare meniuri
16.05 8-O Montare LED-uri & încercare CapacitiveSensor
18.05 :-( Încercare CapacitiveSensor din nou → renunțare → comandă alte piese
20.05 m( Sosire piese (butoane & breadboard) și montarea claviaturii
21.05 ;-) Finisare pare soft
22.05 LOL Finisare design proiect (super cutia de bomboane)
23.05 8-) Update schema electrica, update hardware & wiki stuff

Bibliografie/Resurse

1. Resurse Hardware

2. Resurse Software

Download PDF

pm/prj2019/imatesica/smart-piano.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0