Проблема с функцией Tone()

DimaGilev
Offline
Зарегистрирован: 05.03.2016
 
  for(int i(0);i<29;i++){      
    tone(Buzzar,NOTE[i]);       - //Работает  нормально
        delay(TEMP[i]);               //
    noTone(Buzzar);
   
    
 
 
 
  for(int i(0);i<29;i++){      
    tone(Buzzar,   NOTE[i],  TEMP[i]);       - //  В функцию  tone() добавляю третий параметр который отвечает за длительность ноты, и убираю  delay(TEMP[i]); . Не работает
    noTone(Buzzar);
   

 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

в функции for i++ пробегает от 0 до 28 очень быстро , поэтому вы и не услышите ничего , верните delay 

DimaGilev
Offline
Зарегистрирован: 05.03.2016

Спасибо)) получается если фунцуия tone находиться в цикле лучше писать delay. 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

От delay() лучше избавляться, только делать это надо грамотно. Например так:

if (ena && (millis()-time)>TEMP[i])
{
  time=millis();
  tone(Buzzar, NOTE[i]);
  if (++i>28) {noTone(Buzzar); i=0; ena=false;}
}

 

DimaGilev
Offline
Зарегистрирован: 05.03.2016

Спасибо)) возьму на заметку)