millis() и Bounce = как взаимосвязаны
- Войдите на сайт для отправки комментариев
Пнд, 11/12/2017 - 17:08
Такая ситуация.
Использую Bounce для подавления дребезга .... все работает.
Добавил в часть кода (который не связан с той частью где давим дребезг) millis() и установил время ожидания 60000 мс, после этого получил некий ступор после загрузки ардуины, который выражается в том, что та часть когда где даив дребезг и используем Bounce не хочет корректно работать (впринципе работать) пока не истечет 60 сек с загрузки ардуины ... после этого все работает нормально!!! в чем прикол и как победить, чтобы та часть кода где давим бребезг кнопки работала сразу и не зависила от millis()?
Как миллиc использовали? С вайлом поди?
ХЗ куда вы что вставили, соответственно ХЗ почему не работает. Как то так. Мы конечно понимаем, что все супер скетчи очень секретны, только с картами таро и шарами хрустальными нынче туго.(((((
Напишите без сленга))) не особо в нем пока рублю... что твы имели ввиду под свайлом?
как-то так примерно с millis()
unsignedlongtime1;time1
= millis();if(millis()-time1 > 60000){код, который должен выполняться повторно не ранее чем через 60 сек, после его пред. выполнения
time1
= millis();}
но это почему то влияет на другую часть кода, где с пом. библиотеки давим дребезг.
#include <Bounce2.h>
bouncer .attach(2);
bouncer .interval(20);
общая структура такая
if(millis()-time1 > 60000){// выполнять действие Atime1
= millis();}elseif(if (bouncer1.update()){ if (bouncer1.read()==LOW)) // тупит тут пока не пройдет 60 сек{// выполнять действие B}elseif(if (bouncer2.update()){ if (bouncer2.read()==LOW)) //// тупит тут пока не пройдет 60 сек{// выполнять действие Сelse{// выполнять действие D}Напишите без сленга
Те строчки, которые приведены, абсолютно не показывают как в скетче они используются.
Те строчки, которые приведены, абсолютно не показывают как в скетче они используются.
Так я и говорю, СЕКРЕТНО. Вдруг враги похитят и китайцам задешево продадут.
1. сделай из своего проекта небольшой код, в котором повторяется явление.
2. Опубликуй его тут, комментируя КАЖДУЮ строку - что она, по твоему мнению, делает?. Чаще всего, на этом этапе новичек уже найдет ошибку сам.
3. тогда можно будет не только исправить ошибку, но и помочь разобраться с тем, что ты не понимаешь.
=============================
Для мотивации - ОТВЕТ на вопрос заголовка темы: НИКАК не связаны millis() и bounce.
Может структура ТАКАЯ
bouncer1.update() bouncer2.update() if (millis()-time1 > 60000) { // выполнять действие A time1 = millis(); } else if(bouncer1.read()==LOW) // тупит тут пока не пройдет 60 сек { // выполнять действие B } else if(bouncer2.read()==LOW) // // тупит тут пока не пройдет 60 сек { // выполнять действие С else { // выполнять действие D }спасибо - попробую отпишусь (но вроде я так тоже пробовал)
структура такая рабочая будет?
01bouncer1.update()02bouncer2.update()0304if(Если стоп == LOW) // стоп в приоритете05{06// выполнять действие A0708}0910elseif(bouncer1.read()==LOW)// левый поворот почему то тупит тут пока не пройдет 60 секс момента запуска или с момента последнего срабатывания else11{12// выполнять действие B13}14elseif(bouncer2.read()==LOW)// правый поворот почему то тупит тут пока не пройдет 60 сек15{16// выполнять действие С17else18{if(millis()-time1 > 60000)19{// выполнять действие D (Если ускорени превышает опред. предел - воспроизводиться виз. эффект. но нужно чтобы он не выполнялся постоянно (возможен такой поток даных управления), а не раньше чем через 60 сек. от последнего его включения)20time1 = millis();}}Если скобки правильно раставите то проблем я не вижу. С библиотекой я не работал, но она использует тотже милис, так что проблема только в коде!
Инициализируйте time1 при запуске. Где и как она обявлена?
Есть в начале
unsignedlongtime1;потом в загрузкеtime1 = millis(); чтобы начать первый отсчет после загрузки
Если скобки правильно раставите то проблем я не вижу. С библиотекой я не работал, но она использует тотже милис, так что проблема только в коде!
не работает
Беда.
Такая ситуация.
Использую Bounce для подавления дребезга .... все работает.
Добавил в часть кода (который не связан с той частью где давим дребезг) millis() и установил время ожидания 60000 мс, после этого получил некий ступор после загрузки ардуины, который выражается в том, что та часть когда где даив дребезг и используем Bounce не хочет корректно работать (впринципе работать) пока не истечет 60 сек с загрузки ардуины ... после этого все работает нормально!!! в чем прикол и как победить, чтобы та часть кода где давим бребезг кнопки работала сразу и не зависила от millis()?
может покажите отформатированый полный код
решилось
так не конфликтует
как это взаимсвязано с millis(); - хз
У вас что в #4, что в #9 проблемы со скобками!!!
?
в чем прикол и как победить
может покажите отформатированый полный код
Судя по нику, он его только в 35 день показывает :)
в чем прикол и как победить
может покажите отформатированый полный код
Судя по нику, он его только в 35 день показывает :)
как раз ваших дельных советов очень не хватает...
Аппартно, через тригге шмитта?
Да. 35 фэней (11/3 рубля) - и никакой возни.
согласен, если отступать будет некуда, то так и поступлю .... но хотелось в программном варианте по тренироваться!
Вы уверены, что делитель из 4.7к и 10к даст на выходе логический ноль?