Нужна помощь в перепрограммировании без "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 - очень много кривых.