Как один раз проиграть мелоию?

varvik85
Offline
Зарегистрирован: 28.01.2013

Здравствуйте!
Подскажите новичку, пожалуйста. Задумка такая, как только срабатывает датчик проигрывается один раз мелодия.Датчик в виде сопротивления.Программа определяет сопротивление и если оно нужного номинала проигрывает один раз мелодию.Но проблема в том ,что если датчик будет включен постоянно то мелодия будет постоянно повторятся, а мне нужно чтоб она сработала один раз. Как сделать чтоб она сработала разово?

#include "pitches.h"
int a = 0;
byte f = 0;
int melody[] = {
NOTE_C4, NOTE_E4,NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5,};

int noteDurations[] = {

8, 8, 8, 4,8,4 };

void setup () {
  
  pinMode (A0, INPUT_PULLUP);
  pinMode(13, OUTPUT);

}

void loop () {

 a = analogRead(A0);

if (a > 300  && a < 370)
{
  f = 0;
}
else
{
 f = 1;  
}

 if (f == 0) 
{
 musika(); 
}

}

void musika() {
  for (int thisNote = 0; thisNote < 8; thisNote++) {

int noteDuration = 1000/noteDurations[thisNote];

tone (10, melody[thisNote],noteDuration);

int pauseBetweenNotes = noteDuration * 1.30;
delay (pauseBetweenNotes);

// stop the tone playing:

noTone (10);

}
}
Andrey-S
Offline
Зарегистрирован: 02.01.2015

 Прочитайте вот этот пост к примеру (желательно весь, но можно со фразы "Теперь рассмотрим вариант, когда нам нужно сделать лишь одно действие по одному нажатию кнопки") http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku  и засуньте условие в 31 строку

varvik85
Offline
Зарегистрирован: 28.01.2013

ОГРОМНОЕ САААСИБО!