Как использовать часовой пояс при расчете времени?
Я пытаюсь получить предупреждение с помощью зуммера, в то время как я получаю те же значения через 3 секунды. Но первое предупреждение не ждет 3 секунд. Второе предупреждение верно. Код прилагается. Метод BlinkLED1() аналогичен методу BlinkLED2. Наверное, мне не хватает завершающего штриха. Вы не могли бы мне помочь? Заранее спасибо.
void initialsettings(double roll,double pitch){
if(level==0){
if(roll>=34 && timerstatus==false){
Timer1.initialize(3000000);
timerstatus=true;
Timer1.attachInterrupt(blinkLED);
} else{
Timer1.stop();
timerstatus=false;
level=0;
}
}else if(level==1){
if(roll<=-34 && timerstatus==false){
Timer1.initialize(3000000);
timerstatus=true;
Timer1.attachInterrupt(blinkLED2);
} else{
Timer1.stop();
timerstatus=false;
}
}else if(level==2){
}
}
void blinkLED(void)
{
noInterrupts();
Timer1.stop();
//Timer1.restart();
digitalWrite(buzzerpin,HIGH);
delay(7000);
digitalWrite(buzzerpin,LOW);
timerstatus=false;
interrupts();
if(level==0){
level=1;
Serial.println("level 1");
}
Serial.println("Sag ");
//Serial.print("\n");
}
@seda, 👍-1
1 ответ
▲ 0
Timer1.attachInterrupt(blinkLED);
...
void blinkLED(void)
{
noInterrupts();
Timer1.stop();
//Timer1.restart();
digitalWrite(buzzerpin,HIGH);
delay(7000);
digitalWrite(buzzerpin,LOW);
timerstatus=false;
interrupts();
if(level==0){
level=1;
Serial.println("level 1");
}
Serial.println("Sag ");
- Не выполняйте последовательные печати внутри процедуры обслуживания прерываний (ISR).
- Не используйте
функцию delay()
внутри ISR. - Не включайте и не выключайте прерывания внутри ISR.
- Переменные, разделяемые между ISR и основным кодом, должны быть
изменчивыми
(из вашего фрагмента я не вижу, являются ли они таковыми или нет).
Ссылка: Прерывания
,
@Nick Gammon
Смотрите также:
- Как использовать SPI на Arduino?
- Подключение HX711 к трехпроводному датчику нагрузки
- Правильное использование * и & при передаче объектов в методах.
- ISO C++ запрещает принимать адрес неквалифицированной или заключенной в скобки нестатической функции-члена для формирования указателя на функцию-член
- Как включить и выключить зуммер
- Разница между массивом char и массивом unsigned char
- Установка timer3 в режиме CTC - конфликт с сервобиблиотекой
- Печать содержимого файла SD - карты на ЖК-дисплее