Мелодия при выполнении условия !

sp34
Offline
Зарегистрирован: 05.03.2013


 

 // Мелодия(ноты):
int pz = A0; // Устанавливаем пьезоизлучатель на pin A0
int melody[] = {
 NOTE_A6, NOTE_C7, NOTE_D7, NOTE_F7, NOTE_G7, NOTE_A7, NOTE_C8, NOTE_DS8, 
 NOTE_A6, NOTE_C7, NOTE_D7, NOTE_F7, NOTE_G7, NOTE_A7, NOTE_C8, NOTE_DS8};
int noteDurations[] = {
 2,3,4,5,6,7,8,2,9,8,7,6,5,4,3,6}; 
 
void setup (void) {
 
 // Проигрываем каждую ноту мелодии
 for (int thisNote = 0; thisNote < 16; thisNote++) 
 {
 // Чтоб узнать длительность ноты в миллисекундах, делим секунду на тип ноты:
 int noteDuration = 1000/noteDurations[thisNote];
 // Играем ноту
 tone(pz , melody[thisNote],noteDuration);
 
 // Задержка между нотами
 int pauseBetweenNotes = noteDuration / 10;
 delay(pauseBetweenNotes);
 }
}
 
Имеется вот такой звук при загрузке дуни.
Как прописав все это в loop , запретить проигрование по кругу до выполнение какого либо условия и если условие выполнилось то проиграть однократно ?
 
 
timur2008
Offline
Зарегистрирован: 06.03.2013

Поставить булевский флаг который бы указывал проигрывалась ли уже мелодия или нет. Т.е.

  if((нужное условие)&&( УЖЕПРОИГРЫВАЛАСЬ)

     {

           запуск мелодии; 

           УЖЕПРОИГРЫВАЛАСЬ = FALSE; 

    }

sp34
Offline
Зарегистрирован: 05.03.2013

Спасибо получилось !

leshak
Offline
Зарегистрирован: 29.09.2011