Нужна помощь в перепрограммировании без "delay"
- Войдите на сайт для отправки комментариев
Вс, 16/02/2020 - 18:01
Вот код сирены придумал сам может быть туча ошибок, нужно убрать 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);
}
}
}
Спасибо.
О, великие гайверокнопки!!! Спасибо!!! Хороший код!
Вот код ... придумал сам ... не могу в нем разобраться.
Вы - большой оригинал.
Как разберётесь, сообщите.
Спасибо за придумку! Гайверу - привет, он поможет, точно.
Ну и до кучи. Замена делей на миллис нужна в случае, если часть программы которая использует делей тормозит выполнение каких то других операций. Для приведённой программы это не актуально. И к тому же нужно помнить про ельд.
Я использую переключатель и когда переключаю режим есть задержка, если есть ВК можешь в лс написать ссылку.
Уважаемый, у Вас скорее всего тормозит GyverButton.h - уберите ее из программы и попробуйте просто опрашивать кнопки. Скорее всего торможение исчезнет, поскольку делеи в Вашей программе абсолютно не критичны. И в будущем не пользуйтесь библиотеками Gyver*.h - очень много кривых.