Kategori:

Ardunio

Başlık:

Ardunio Mega ile Ledli Piyano Yapalım

Ardunio Mega Ardunio UNO'ya göre daha güçlü mikrodenetleyici, daha çok pin sayısı, daha hızlı veri transferi gibi nedenlerden dolayı kompleks projeler için daha uygun bir seçenek. Bu proje örneğinde görüleceği üzere çok sayıda bağlantı gereksinimi gibi nedenler Ardunio Mega'ya yöneltebiliyor. Bu proje örneğinde basılan butona göre nota sesi ve led ışığı verilmesi hedeflendi.

Bu projede ilk başta her butona basıldığında RGB ledlerden farklı renk verilmesi hedeflendi. Fakat Ardunio Mega'da bulunan pwm pinlerinin yetersizliğinden dolayı dijital pinler kullanıldı. Bu yüzden istenilen renk çeşitliliği elde edilemedi. Yukarıdaki resimlerde görüldüğü gibi her nota için 1 Rgb led kullanıldı. Bu örnek proje ile notalara görsellik ve renk kazandırılması hedeflendi. 

Kullanılan Malzemeler

  • Ardunio Mega (Klon)
  • 2 adet büyük breadboard
  • 24 adet 220 Ohm Direnç (Rgb ledler için)
  • 8 adet 10K Ohm Direnç (Butonlar için)
  • 8 adet buton (8 nota için)
  • Jumper kablolar

Projenin Şeması

Kaynak Kod:


#define dok  264// kalın do. do komutu ile karışmasın diye dok yazıldı. Bunlar notaların titreşim değerleridir
#define re   297
#define mi   330
#define fa   352
#define sol  396
#define la   440
#define si   495
#define doi  528// ince do.

//butonların ve buzzerın bağlı olduğu pinleri belirliyoruz

#define Dokbuton 2
#define Rebuton 3
#define Mibuton 4
#define Fabuton 5
#define Solbuton 6
#define Labuton 7
#define Sibuton 8
#define Doibuton 9
#define buzzerpin 10


//ledlerin bağlı olduğu pinleri belirliyoruz
#define DokRed 22
#define DokGreen 23
#define DokBlue 24
#define ReRed 25
#define ReGreen 26
#define ReBlue 27
#define MiRed 28
#define MiGreen 29
#define MiBlue 30
#define FaRed 31
#define FaGreen 32
#define FaBlue 33
#define SolRed 34
#define SolGreen 35
#define SolBlue 36
#define LaRed 37
#define LaGreen 38
#define LaBlue 39
#define SiRed 40
#define SiGreen 41
#define SiBlue 42
#define DoiRed 43
#define DoiGreen 44
#define DoiBlue 45

//Butonların basılı olup olmadığını belirlemek için gerekli değişkenleri tanımlıyoruz
int buttonDokdurum = 0;
int buttonRedurum = 0;
int buttonMidurum = 0;
int buttonFadurum = 0;
int buttonSoldurum = 0;
int buttonLadurum = 0;
int buttonSidurum = 0;
int buttonDoidurum = 0;

void setup() 
{ 

//Butonladan basılma değeri alacağımız için OUTPUT olarak ayarlıyoruz
    pinMode(Dokbuton, INPUT);
    pinMode(Rebuton, INPUT);
    pinMode(Mibuton , INPUT);
    pinMode(Fabuton, INPUT);
    pinMode(Solbuton, INPUT);
    pinMode(Labuton, INPUT);
    pinMode(Sibuton , INPUT);
    pinMode(Doibuton, INPUT);
    
//RGB led pinleri output yapıyoruz
    pinMode(buzzerpin, OUTPUT);
    pinMode(DokRed, OUTPUT);
    pinMode(MiRed, OUTPUT);
    pinMode(FaRed, OUTPUT);
    pinMode(SolRed, OUTPUT);
    pinMode(LaRed, OUTPUT);
    pinMode(SiRed, OUTPUT);
    pinMode(DoiRed, OUTPUT);
    pinMode(DokGreen, OUTPUT);
    pinMode(MiGreen, OUTPUT);
    pinMode(FaGreen, OUTPUT);
    pinMode(SolGreen, OUTPUT);
    pinMode(LaGreen, OUTPUT);
    pinMode(SiGreen, OUTPUT);
    pinMode(DoiGreen, OUTPUT);
    pinMode(DokBlue, OUTPUT);
    pinMode(MiBlue, OUTPUT);
    pinMode(FaBlue, OUTPUT);
    pinMode(SolBlue, OUTPUT);
    pinMode(LaBlue, OUTPUT);
    pinMode(SiBlue, OUTPUT);
    pinMode(DoiBlue, OUTPUT);

 }
void loop() {

    //Döngü içinde butonları basılma durumlarını dinlemeye alıyoruz
    buttonDokdurum = digitalRead(Dokbuton);
    buttonRedurum = digitalRead(Rebuton);
    buttonMidurum = digitalRead(Mibuton);
    buttonFadurum = digitalRead(Fabuton);
    buttonSoldurum = digitalRead(Solbuton);
    buttonLadurum = digitalRead(Labuton);
    buttonSidurum = digitalRead(Sibuton);
    buttonDoidurum = digitalRead(Doibuton);
    //Eğer butonlar basılırda buzzerdan istenen notalar çıkacaktır 
    digitalWrite(buzzerpin,LOW);
      if (buttonDokdurum == HIGH) {

           tone(buzzerpin, dok, 100); //burada 10 buzzerin bağlı olduğu pini, dok sesin değerini, 100 çalma süresini ifade ediyor
           analogWrite(DokRed,0); 
           analogWrite(DokGreen,255);
           analogWrite(DokBlue,255);
       }
              else {
                  analogWrite(DokRed,255);  
                  analogWrite(DokGreen,255);
                  analogWrite(DokBlue,255);        
            }


       if (buttonRedurum == HIGH) {

           tone(buzzerpin, re, 100);
           analogWrite(ReRed,255);  
           analogWrite(ReGreen,0);
           analogWrite(ReBlue,255);
       }
              else {
                  analogWrite(ReRed,255);  
                  analogWrite(ReGreen,255);
                  analogWrite(ReBlue,255);       
            }

       if (buttonMidurum == HIGH) {

           tone(buzzerpin, mi, 100);
           analogWrite(MiRed,255);  
           analogWrite(MiGreen,255);
           analogWrite(MiBlue,0);
       }
              else {
                   analogWrite(MiRed,255);  
                   analogWrite(MiGreen,255);
                   analogWrite(MiBlue,255);
            }
            
       if (buttonFadurum == HIGH) {

           tone(buzzerpin, fa, 100);
           analogWrite(FaRed,0);  
           analogWrite(FaGreen,255);
           analogWrite(FaBlue,255);
       }
               else {
                    analogWrite(FaRed,255);  
                    analogWrite(FaGreen,255);
                    analogWrite(FaBlue,255);
            }
            
       if (buttonSoldurum == HIGH) {
           tone(buzzerpin, sol, 100);
           analogWrite(SolRed,255);  
           analogWrite(SolGreen,0);
           analogWrite(SolBlue,255);
       }
         else {
                     analogWrite(SolRed,255);  
                     analogWrite(SolGreen,255);
                     analogWrite(SolBlue,255);
            }
            
       if (buttonLadurum == HIGH) {
           tone(buzzerpin, la, 100);
           analogWrite(LaRed,255);  
           analogWrite(LaGreen,255);
           analogWrite(LaBlue,0);
       }
          else {
                      analogWrite(LaRed,255);  
                      analogWrite(LaGreen,255);
                      analogWrite(LaBlue,255);
            }

       if (buttonSidurum == HIGH) {
           tone(buzzerpin, si, 100);
           analogWrite(SiRed,0);  
           analogWrite(SiGreen,255);
           analogWrite(SiBlue,255);
       }
            else {
                      analogWrite(SiRed,255);  
                      analogWrite(SiGreen,255);
                      analogWrite(SiBlue,255);
            }
       if (buttonDoidurum == HIGH) {
           tone(buzzerpin, doi, 100);
           analogWrite(DoiRed,255);  
           analogWrite(DoiGreen,0);
           analogWrite(DoiBlue,255);
       }
             else {
                      analogWrite(DoiRed,255);  
                      analogWrite(DoiGreen,255);
                      analogWrite(DoiBlue,255);
            }
 }

252 views
YORUMLAR