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