Управление пьезоизлучателем

Ниже представлен пример программы для Arduino, демонстрирующая его возможности по управлении пьезоизлучателем:

//Объявление массива мелодий
int m[]={3,5,5,3,5,5,3,4,5,6,7,2,1,2,3,5,4,3,4,5,6,7};
//Объявление массива длительности мелодий
int d[]={2,1,1,2,1,1,1,1,1,1,2,2,1,1,2,1,1,1,1,1,1,2};
void setup() {
  for (int t=0; t<2; t++){//Повторение части мелодии 2 раза
    delay(500);
    for (int i=0; i<11; i++){
      tone(8,(15-m[i])*150);//Задает мелодию
      delay(d[i]*300);//Продолжительность мелодии
      noTone(8);//Выключения звука
      delay(10);
    }
    noTone(8);
    for (int k=0; k<2; k++){//
      delay(300);
      for (int i=11; i<22; i++){
        tone(8,(15-m[i])*150);
        delay(d[i]*300);
        noTone(8);
        delay(10);
      }
      noTone(8);
    }
  }
}
void loop() {
}

Авторы программы: Георгий Терещенко и Арсан Цорионов.