Doğum günü kodu

arduinoya LCD ekran ve buzzer bağlayarak önce değum günü mesajı yazacak sonra da melodi çalacak bir kod yazdım (tamamem ben yazmadım ben LCD ekrana yazdırmayı ve melodideki bazı düzeltmeleri yaptım)

  #include <LiquidCrystal.h>

int speakerPin = 8;

int length = 28; 

char notes[] = "GGAGcB GGAGdc GGxecBA yyecdc";

int beats[] = { 2, 2, 8, 8, 8, 16, 1, 2, 2, 8, 8,8, 16, 1, 2,2,8,8,8,8,16, 1,2,2,8,8,8,16 };

int temporary = 150;

void playTone(int tone, int duration) {

for (long i = 0; i < duration * 1000L; i += tone * 2) {

   digitalWrite(speakerPin, HIGH);

   delayMicroseconds(tone);

   digitalWrite(speakerPin, LOW);

   delayMicroseconds(tone);

}

}

void playNote(char note, int duration) {

char names[] = {'C', 'D', 'E', 'F', 'G', 'A', 'B',           

                 'c', 'd', 'e', 'f', 'g', 'a', 'b',

                 'x', 'y' };

int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014,

                 956,  834,  765,  593,  468,  346,  224,

                 655 , 715 };

int SPEE = 5;

// play the tone corresponding to the note name

for (int i = 0; i < 17; i++) {

   if (names[i] == note) {
    int newduration = duration/SPEE;
     playTone(tones[i], newduration);

   }

}

}

int lcd_width = 16;
int lcd_height = 2;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(lcd_width, lcd_height);
  pinMode(speakerPin, OUTPUT);
}

void loop() {
  lcd.clear();
  animasyon("iyiki dogdun", 0, 100);
  animasyon("Canim annem", 1, 100);
  delay(1000);
  lcd.clear();
  delay(500);
  animasyon("Seni Cok", 0, 100);
  animasyon("Seviyorum<3", 1, 100);
  delay(1000);
  lcd.clear();
  delay(500);
  animasyon("melodi caliniyor", 0, 100);
for (int i = 0; i < length; i++) {

   if (notes[i] == ' ') {

     delay(beats[i] * temporary); // rest

   } else {

     playNote(notes[i], beats[i] * temporary);

   }

   // pause between notes

   delay(temporary);

}

}

void animasyon(String metin, int satir, int hiz) {
  int len = metin.length();
  for (int i = 0; i < len; i++) {
    lcd.setCursor(i, satir);
    lcd.print(metin[i]);
    delay(hiz);
  }
}