Изменение цвета rgb светодиода с помощью millis()
- Войдите на сайт для отправки комментариев
Вс, 31/10/2021 - 18:18
Приветствую всех! Хотел попробовать разобраться с rgb светодиодом. Нашел данный код для переключения цветов. Помогите переделать его по millis. Заранее благодарен за помощь)
#define RED 11 // присваиваем имя RED для пина 11 #define GRN 10 // присваиваем имя GRN для пина 10 #define BLU 9 // присваиваем имя BLU для пина 9 void setup() { pinMode(RED, OUTPUT); // используем Pin11 для вывода pinMode(GRN, OUTPUT); // используем Pin10 для вывода pinMode(BLU, OUTPUT); // используем Pin9 для вывода } void loop(){ // плавное включение красного и зеленого цвета for (int i = 0; i <= 255; i++) { analogWrite(RED, i); analogWrite(GRN, i); delay(10); } for (int i = 255; i >= 0; i--) { analogWrite(RED, i); analogWrite(GRN, i); delay(10); } // плавное включение красного и синего цвета for (int i = 0; i <= 255; i++) { analogWrite(RED, i); analogWrite(BLU, i); delay(10); } for (int i = 255; i >= 0; i--) { analogWrite(RED, i); analogWrite(BLU, i); delay(10); } }
Нашел данный код для переключения цветов. Помогите переделать его по millis.
А зачем? Из неприятия delay()?
Программа вполне неплохо написана и 100% выполняет свои функции.
Нужно одновременно с этим опрашивать кнопку для изменения эффекта
500р
Нужно одновременно с этим опрашивать кнопку для изменения эффекта
везде, где у тебя в коде делей - вставь опрос кнопки :) - и будет работать
Нужно одновременно с этим опрашивать кнопку для изменения эффекта
Так убрав delay() Вы все равно не опросите кнопку - for не даст.
Лучше воспользуйтесь советом #4 - 10мс погоды не сделают.
Нужно одновременно с этим опрашивать кнопку для изменения эффекта
Какого эффекта? Или каких?
Может поможет.
Тогда уж лучше использовать штатный yield()
Лучше воспользуйтесь советом #4
А ещё лучше - советом из #3
Лучше воспользуйтесь советом #4
А ещё лучше - советом из #3
поддерживаю
Тогда уж лучше использовать штатный yield()
А как же это работает?.. Нашёл такой пример:
https://www.arduino.cc/en/Reference/SchedulerYield
...в явном виде, без библиотеки
https://newbedev.com/what-is-the-secret-of-the-arduino-yield-function
yield is a "weak" function from Arduino core for AVR. I see one call for it inside wiring.c.
https://atadiat.com/en/e-yield-function-printable-class-mapping-arrays-u...
A useful usage of yield() is to be redefined in the main application code with some sensitive operation while the Arduino makes nothing except for waiting the delay to end, or even implementing some simple scheduler.
Да не просечёт это новичок. Проще завести отдельный delayKey(10), например, где выполнять delay(10), опрашивать свою кнопку и менять от неё переменную режима.
Без setjmp/longjmp выхода из цикла всё равно не будет. А с ними получится геморрой не лучше millis();
Так ведь неизвестно же когда ТС нужна смена режима. Если немедленно, то можно так: if (delayKey(10)) return; а в начале loop-а выбираешь режим.
Для сравнения проверяю по кратким нажатиям кнопки, что лучше "миллис или уиелд"
И хоть Гайвер утверждает, что легко читать кнопку - на практике не очень.
https://alexgyver.ru/lessons/time/
lilik, вы такие шары красивые делаете, кино снимаете, но код у вас... "вырви глаз", ей богу.( Вы ж, вроде, не начинающий. Ну хотя бы ^T что ли в IDE сделайте. А потом сравните со своим.
Как delay() может быть в yield() - это ж вечный кайф получается.)
Забыл автоформатирование нажать перед вставкой. Оно просто рассеивает скетч, я потом ход мыслей теряю :-)
С кайфом ясно, нарушил причинно-следственные связи.
И хоть Гайвер утверждает, что легко читать кнопку - на практике не очень.
https://alexgyver.ru/lessons/time/
Он много чего утверждает. Даже прямо и в этой статье (особо не всматривался, но кое-что в глаза бросилось сразу).
Радует, что хоть библиотеку таймера после замечаний подправил, а то ведь вообще ж ужас был.
Приветствую всех! Хотел попробовать разобраться с rgb светодиодом. Нашел данный код для переключения цветов. Помогите переделать его по millis. Заранее благодарен за помощь)
Держи камрад!
А то эти пиз.оболы те только херни натыкают.
Сам понимаешь, не проверено, ну нету у меня RGB светодиода.
Радует, что хоть библиотеку таймера после замечаний подправил, а то ведь вообще ж ужас был.
вот, а говорили, что безнадёжный, растёт однако )))
вот, а говорили, что безнадёжный, растёт однако )))
Клевета! Я, наоборот, его хвалил за старание. Пруф.
вот, а говорили, что безнадёжный, растёт однако )))
Клевета! Я, наоборот, его хвалил за старание. Пруф.
беру свои слова обратно, этот пост прошёл мимо меня )