Menü

DIY Piano

10 Aralık 2017 - Arduino
DIY Piano
5 (100%) 92 votes

 

Devrenin Amacı

Piyano devresinin amacı notaların seslerini  elektronik olarak doğru bir şekilde elde etmek.

Çalışma Prensibi

  Tuş takımı üzerindeki butonlar kullanılarak giriş sinyalleri merkezi işlemciye iletilir. İşlenen sinyaller ekran ile buzzerda çıkış olarak olarak ses ve bilgi elde eder.

Kullanılan Malzemeler

 

Kaynak Kodları

#include <LiquidCrystal.h>

LiquidCrystal ekran(8, 9, 4, 5, 6, 7);

int basilan_tus = 0;
int okunan_deger = 0;
int buzzerPin = A5;

 

#define sag 0
#define yukari 1
#define asagi 2
#define sol 3
#define sec 4
#define yok 5

int tones[] = { 1915, 1700, 1519, 1432, 1275, }; //freq
int Cur_tone = 0;

byte buton_bul()
{
okunan_deger = analogRead(A0);
if (okunan_deger > 1000)”
return yok;
if (okunan_deger < 50)

return sag;
if (okunan_deger < 195)
return yukari;
if (okunan_deger < 380)
return asagi;
if (okunan_deger < 555)
return sol;
if (okunan_deger < 790)
return sec;
}

 

void setup()
{
ekran.begin(16, 2);
ekran.setCursor(0, 0);
ekran.print(“Basilan Buton: “);
pinMode(buzzerPin, OUTPUT);
}

void loop()
{
ekran.setCursor(0, 1);
basilan_tus = buton_bul();
if (okunan_deger < 50){
digitalWrite(buzzerPin , HIGH);
Cur_tone = tones[0];
delayMicroseconds(Cur_tone);

}
else if (okunan_deger >= 50){
digitalWrite(buzzerPin,LOW); //Buzzerın gücünü keserek susmasını sağladık sağladık.
delay(0);
}
ekran.setCursor(0, 1);
basilan_tus = buton_bul();
if (okunan_deger <= 195 && okunan_deger >= 50){
digitalWrite(buzzerPin , HIGH);
Cur_tone = tones[1];
delayMicroseconds(Cur_tone);

}
else if (okunan_deger > 195){
digitalWrite(buzzerPin,LOW); //Buzzerın gücünü keserek susmasını sağladık sağladık.
delay(0);
}
ekran.setCursor(0, 1);
basilan_tus = buton_bul();
if (okunan_deger <= 380 && okunan_deger >= 195){
digitalWrite(buzzerPin , HIGH);
Cur_tone = tones[2];
delayMicroseconds(Cur_tone);

}
else if (okunan_deger > 380){
digitalWrite(buzzerPin,LOW); //Buzzerın gücünü keserek susmasını sağladık sağladık.
delay(0);
}
ekran.setCursor(0, 1);
basilan_tus = buton_bul();
if (okunan_deger <= 555 && okunan_deger >= 380){
digitalWrite(buzzerPin , HIGH);
Cur_tone = tones[3];
delayMicroseconds(Cur_tone);

}
else if (okunan_deger > 555){
digitalWrite(buzzerPin,LOW); //Buzzerın gücünü keserek susmasını sağladık sağladık.
delay(0);
}
ekran.setCursor(0, 1);
basilan_tus = buton_bul();
if (okunan_deger <= 790 && okunan_deger >= 555){
digitalWrite(buzzerPin , HIGH);
Cur_tone = tones[4];
delayMicroseconds(Cur_tone);

}
else if (okunan_deger > 790){
digitalWrite(buzzerPin,LOW); //Buzzerın gücünü keserek susmasını sağladık sağladık.
delay(0);
}

 

switch (basilan_tus)
{
case sag:
{
ekran.print(“re “);
break;
}
case sol:
{
ekran.print(“si “);
break;
}
case yukari:
{
ekran.print(“fa “);
break;
}
case asagi:
{
ekran.print(“do “);
break;
}
case sec:
{
ekran.print(“la “);
break;
}
case yok:
{
ekran.print(” “);
break;
}
}
}

Devre Fotoğrafları 

 

 

 

 

 

 

 

 

 

 

 

    

Lcd Keypad Shield Datasheet


Proje Videosu

Kod Videosu

 

 

 

 

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Araç çubuğuna atla