Ви не увійшли.
слушай, а ты это всё когда писал - то ?!!!
ну реле использовать как решение от дребезга это как молится богу и в паре-тройке случаев если прокатило думать что он есть
на самом деле решение с дребезгом самое простое
делаешь таймер, и 2 глобальных переменные.
в таймере накручиваешь логику: если нажата кнопка, увеличивать переменную1 до ххх, где ххх - значение в зависимости от частоты таймера иначе переменная1=0, переменная2=0. и тут же проверяешь - если значение переменной1 достигло максимума тогда переменная2=1.результатом такой логики будет ожидание заполнения переменной1 временем ххх, что исключает дребезг кнопки. и в таком случае можно не использовать фильтр в виде конденсатора, а подтягивать достоточно не внешними резисторами, а режимом "входа" ножек МК. на С это ddra=0x00, porta=0x01 - пин0 будет входом, подтянутым к +.
А то есть добавить библиотеку Debounce ну никак ни разу.
Нееее надо городить хламокод.
ну реле использовать как решение от дребезга это как молится богу и в паре-тройке случаев если прокатило думать что он есть
на самом деле решение с дребезгом самое простое
делаешь таймер, и 2 глобальных переменные.
в таймере накручиваешь логику: если нажата кнопка, увеличивать переменную1 до ххх, где ххх - значение в зависимости от частоты таймера иначе переменная1=0, переменная2=0. и тут же проверяешь - если значение переменной1 достигло максимума тогда переменная2=1.результатом такой логики будет ожидание заполнения переменной1 временем ххх, что исключает дребезг кнопки. и в таком случае можно не использовать фильтр в виде конденсатора, а подтягивать достоточно не внешними резисторами, а режимом "входа" ножек МК. на С это ddra=0x00, porta=0x01 - пин0 будет входом, подтянутым к +.
А то есть добавить библиотеку Debounce ну никак ни разу.
Нееее надо городить хламокод.
ну реле использовать как решение от дребезга это как молится богу и в паре-тройке случаев если прокатило думать что он есть
на самом деле решение с дребезгом самое простое
делаешь таймер, и 2 глобальных переменные.
в таймере накручиваешь логику: если нажата кнопка, увеличивать переменную1 до ххх, где ххх - значение в зависимости от частоты таймера иначе переменная1=0, переменная2=0. и тут же проверяешь - если значение переменной1 достигло максимума тогда переменная2=1.
результатом такой логики будет ожидание заполнения переменной1 временем ххх, что исключает дребезг кнопки. и в таком случае можно не использовать фильтр в виде конденсатора, а подтягивать достоточно не внешними резисторами, а режимом "входа" ножек МК. на С это ddra=0x00, porta=0x01 - пин0 будет входом, подтянутым к +.
ну реле использовать как решение от дребезга это как молится богу и в паре-тройке случаев если прокатило думать что он есть
на самом деле решение с дребезгом самое простое
делаешь таймер, и 2 глобальных переменные.
в таймере накручиваешь логику: если нажата кнопка, увеличивать переменную1 до ххх, где ххх - значение в зависимости от частоты таймера иначе переменная1=0, переменная2=0. и тут же проверяешь - если значение переменной1 достигло максимума тогда переменная2=1.
результатом такой логики будет ожидание заполнения переменной1 временем ххх, что исключает дребезг кнопки. и в таком случае можно не использовать фильтр в виде конденсатора, а подтягивать достоточно не внешними резисторами, а режимом "входа" ножек МК. на С это ddra=0x00, porta=0x01 - пин0 будет входом, подтянутым к +.
ну реле использовать как решение от дребезга это как молится богу и в паре-тройке случаев если прокатило думать что он есть
на самом деле решение с дребезгом самое простое
делаешь таймер, и 2 глобальных переменные.
в таймере накручиваешь логику: если нажата кнопка, увеличивать переменную1 до ххх, где ххх - значение в зависимости от частоты таймера иначе переменная1=0, переменная2=0. и тут же проверяешь - если значение переменной1 достигло максимума тогда переменная2=1.
результатом такой логики будет ожидание заполнения переменной1 временем ххх, что исключает дребезг кнопки. и в таком случае можно не использовать фильтр в виде конденсатора, а подтягивать достоточно не внешними резисторами, а режимом "входа" ножек МК. на С это ddra=0x00, porta=0x01 - пин0 будет входом, подтянутым к +.
"-есть дрожание сервы в крайних положениях" - изменить тайминги сервы, не давать ей работать за пределами допустимых углов. Вы даже не представляет как они прекрасно выгорают из-за этого Каждая серва имеет свой "тайминг" (вбить в гугле). 0-180гр. означает что ардуино пошлет свой тайминг по умолчанию и может случится так (обычно так и происходит) что серва либо не довернет до установленного угла или уйдет за пределы диапазона (вы легко это узнаете по температуре сервомотора).
upd также не забывайте про "рычаг". Если исполнительный рычаг слишком велик, а серва расчитана к примеру на 3кг/см, а вы повесили на нее рычаг 10 см с грузом 1 кг, то конечно сервомотор будет пытатся довернуть на заданый угол, но ему не будет хватать мощности сделать это, отсюда и дрожание.
на последок, дрожание также часто бывает из-за дефекта сервомотора - а именно некачественного полотна подстроечного резистора ООС внутри сервы. Действие - поменять мотор.
кнопки у вас не борются с дребезгом - отсюда могут быть проблемки с управлением
как организовано питание сервы
ну и от делеев надо уходить
и неплохо бы код приводить в читабельный вид
Совершенно верно! Могу дать дельный совет (проверено на практике) Используй реле. Борется с дребезгом без проблем. И надо уходить от delay. Когда выполняется delay arduino не реагирует на кнопки. Вместо delay можно сделать что-то типа этого:
void loop()
{
//bla_bla_bla
unsigned long a = millis()
while(millis()-1000 < a);
//bla_bla_bla
}
(вместо delay(1000).)
И ксати, можно использовать прерывания.
если брать не из дешевых, и если он включается пару раз за день, то почему и нет?)
у вас сервопривод год работать будет?
кстати насчет функции millis, насколько я понял у ее есть предел примерно 50 дней. потом счет переполняться. Как быть что бы устройство работало допустим около года?
ага
спасибо огромное. я так понял используя функцию millis() , мне понадобиться переписывать весь код.. Буду разбираться
резистор 10 ком к дребезгу контактов кнопки не имеет никакого отношения и пока эту проблему программно не решите (примеров в сети тьма, есть библиотекa Bounce) будут глюки.
от делеев избавляемся используя millis()
посмотрите пример в IDE Blink without delay
питание сервы отдельной линией идет... а насчет дребезга я кнопки подключал через подтягивающий резистор номиналом 10к. А каким образом от делеев можно уйти?