Нужна помощь в перепрограммировании без "delay"

DlackJack
Offline
Зарегистрирован: 16.02.2020

Вот код сирены придумал сам может быть туча ошибок, нужно убрать delay и заменить на millis но я не могу в нем разобраться.

Вот код: 

#include <GyverButton.h>
GButton butt1(5);
GButton butt2(6);
GButton butt3(7);
GButton butt4(8);
GButton butt5(9);


int buzzer = 3;  //переменная с номером пина динамика
int pwm;
int i = 650; 
float dy = 1;
void setup(){
  Serial.begin(9600);     
}
 
void loop() {
  butt1.tick();
  butt2.tick();
  butt3.tick();
  butt4.tick();

  if (butt1.isHold()){
    Serial.println("OFF");
    noTone(3);
  }
//            Tone 1
  if (butt2.isHold()){
    Serial.println("Code 1");
  
    for (i = 750; i < 1250; i++){
      tone(3,i);
      delay(4);
      
      }
    for (i = 1250; i > 750; i--){
      tone(3,i);
      delay(4);
      
      }
  }
//            Tone 2

  Serial.println("Code 2");
  if (butt3.isHold()){  
    for (i = 900; i < 1600; i++){
    tone (3,i);
    delayMicroseconds(165);
   }
   for (i = 1600; i > 900; i--){
    tone (3,i);
    delayMicroseconds(15);
   }
  }
//            Tone 3

  Serial.println("Code 3");
  if (butt4.isHold()){ 
   for (i = 450; i < 750; i++){
    tone (3,i);
    delayMicroseconds(20);
   }
    for (i = 750; i > 450; i--){
    tone (3,i);
    delayMicroseconds(20);
   }
  }

}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Спасибо.

-NMi-
Offline
Зарегистрирован: 20.08.2018

О, великие гайверокнопки!!!    Спасибо!!!    Хороший код!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DlackJack пишет:

Вот код ... придумал сам ... не могу в нем разобраться.

Вы - большой оригинал.

Как разберётесь, сообщите.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Спасибо за придумку! Гайверу - привет, он поможет, точно.

nik182
Offline
Зарегистрирован: 04.05.2015

Ну и до кучи. Замена делей на миллис нужна в случае, если часть программы которая использует делей тормозит выполнение каких то других операций. Для приведённой программы это не актуально. И к тому же нужно помнить про ельд. 

DlackJack
Offline
Зарегистрирован: 16.02.2020

Я использую переключатель и когда переключаю режим есть задержка, если есть ВК можешь в лс написать ссылку.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Уважаемый, у Вас скорее всего тормозит GyverButton.h - уберите ее из программы и попробуйте просто опрашивать кнопки. Скорее всего торможение исчезнет, поскольку делеи в Вашей программе абсолютно не критичны. И в будущем не пользуйтесь библиотеками Gyver*.h - очень много кривых.