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
- Arduino Uno
- Lcd Keypad Shield
- Buzzer
- Jumper kablolarDevre Şeması
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