Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

no
2017-03-04 18:23:34

слушай, а ты это всё когда писал - то ?!!! yikes  neutral  cool

Alex Wels
2015-10-20 13:13:05
wildamd пише:

ну реле использовать как решение от дребезга это как молится богу и в паре-тройке случаев если прокатило думать что он есть big_smile

на самом деле решение с дребезгом самое простое

делаешь таймер, и 2 глобальных переменные.
в таймере накручиваешь логику: если нажата кнопка, увеличивать переменную1 до ххх, где ххх - значение в зависимости от частоты таймера иначе переменная1=0, переменная2=0. и тут же проверяешь - если значение переменной1 достигло максимума тогда переменная2=1.

результатом такой логики будет ожидание заполнения переменной1 временем ххх, что исключает дребезг кнопки. и в таком случае можно не использовать фильтр в виде конденсатора, а подтягивать достоточно не внешними резисторами, а режимом "входа" ножек МК. на С это ddra=0x00, porta=0x01 - пин0 будет входом, подтянутым к +.

А то есть добавить библиотеку Debounce ну никак ни разу.
Нееее надо городить хламокод.

Alex Wels
2015-10-20 13:12:51
wildamd пише:

ну реле использовать как решение от дребезга это как молится богу и в паре-тройке случаев если прокатило думать что он есть big_smile

на самом деле решение с дребезгом самое простое

делаешь таймер, и 2 глобальных переменные.
в таймере накручиваешь логику: если нажата кнопка, увеличивать переменную1 до ххх, где ххх - значение в зависимости от частоты таймера иначе переменная1=0, переменная2=0. и тут же проверяешь - если значение переменной1 достигло максимума тогда переменная2=1.

результатом такой логики будет ожидание заполнения переменной1 временем ххх, что исключает дребезг кнопки. и в таком случае можно не использовать фильтр в виде конденсатора, а подтягивать достоточно не внешними резисторами, а режимом "входа" ножек МК. на С это ddra=0x00, porta=0x01 - пин0 будет входом, подтянутым к +.

А то есть добавить библиотеку Debounce ну никак ни разу.
Нееее надо городить хламокод.

wildamd
2015-10-15 16:34:55

ну реле использовать как решение от дребезга это как молится богу и в паре-тройке случаев если прокатило думать что он есть big_smile

на самом деле решение с дребезгом самое простое

делаешь таймер, и 2 глобальных переменные.
в таймере накручиваешь логику: если нажата кнопка, увеличивать переменную1 до ххх, где ххх - значение в зависимости от частоты таймера иначе переменная1=0, переменная2=0. и тут же проверяешь - если значение переменной1 достигло максимума тогда переменная2=1.

результатом такой логики будет ожидание заполнения переменной1 временем ххх, что исключает дребезг кнопки. и в таком случае можно не использовать фильтр в виде конденсатора, а подтягивать достоточно не внешними резисторами, а режимом "входа" ножек МК. на С это ddra=0x00, porta=0x01 - пин0 будет входом, подтянутым к +.

wildamd
2015-10-15 16:34:27

ну реле использовать как решение от дребезга это как молится богу и в паре-тройке случаев если прокатило думать что он есть big_smile

на самом деле решение с дребезгом самое простое

делаешь таймер, и 2 глобальных переменные.
в таймере накручиваешь логику: если нажата кнопка, увеличивать переменную1 до ххх, где ххх - значение в зависимости от частоты таймера иначе переменная1=0, переменная2=0. и тут же проверяешь - если значение переменной1 достигло максимума тогда переменная2=1.

результатом такой логики будет ожидание заполнения переменной1 временем ххх, что исключает дребезг кнопки. и в таком случае можно не использовать фильтр в виде конденсатора, а подтягивать достоточно не внешними резисторами, а режимом "входа" ножек МК. на С это ddra=0x00, porta=0x01 - пин0 будет входом, подтянутым к +.

wildamd
2015-10-15 16:34:16

ну реле использовать как решение от дребезга это как молится богу и в паре-тройке случаев если прокатило думать что он есть big_smile

на самом деле решение с дребезгом самое простое

делаешь таймер, и 2 глобальных переменные.
в таймере накручиваешь логику: если нажата кнопка, увеличивать переменную1 до ххх, где ххх - значение в зависимости от частоты таймера иначе переменная1=0, переменная2=0. и тут же проверяешь - если значение переменной1 достигло максимума тогда переменная2=1.

результатом такой логики будет ожидание заполнения переменной1 временем ххх, что исключает дребезг кнопки. и в таком случае можно не использовать фильтр в виде конденсатора, а подтягивать достоточно не внешними резисторами, а режимом "входа" ножек МК. на С это ddra=0x00, porta=0x01 - пин0 будет входом, подтянутым к +.

DesignMSP
2015-06-18 20:29:05

"-есть дрожание сервы в крайних положениях" - изменить тайминги сервы, не давать ей работать за пределами допустимых углов. Вы даже не представляет как они прекрасно выгорают из-за этого  smile Каждая серва имеет свой "тайминг" (вбить в гугле). 0-180гр. означает что ардуино пошлет свой тайминг по умолчанию и может случится так (обычно так и происходит) что серва либо не довернет до установленного угла или уйдет за пределы диапазона (вы легко это узнаете по температуре сервомотора).
upd также не забывайте про "рычаг". Если исполнительный рычаг слишком велик, а серва расчитана к примеру на 3кг/см, а вы повесили на нее рычаг 10 см с грузом 1 кг, то конечно сервомотор будет пытатся довернуть на заданый угол, но ему не будет хватать мощности сделать это, отсюда и дрожание.
на последок, дрожание также часто бывает из-за дефекта сервомотора - а именно некачественного полотна подстроечного резистора ООС внутри сервы. Действие - поменять мотор.

Саша Паскаль
2015-06-16 10:43:51
vvr пише:

кнопки у вас не борются с дребезгом - отсюда могут быть проблемки с управлением
как организовано питание сервы
ну и от делеев надо уходить
и неплохо бы код приводить в читабельный вид

Совершенно верно! Могу дать дельный совет (проверено на практике) Используй реле. Борется с дребезгом без проблем. И надо уходить от delay. Когда выполняется delay arduino не реагирует на кнопки. Вместо delay можно сделать что-то типа этого:

void loop()
{
   //bla_bla_bla
  unsigned long a = millis()
  while(millis()-1000 < a);
  //bla_bla_bla
}

(вместо delay(1000).)

И ксати, можно использовать прерывания.

cako79
2015-05-17 21:16:49

если брать не из дешевых, и если он включается  пару раз за день, то почему и нет?)

vvr
2015-05-17 09:50:39

у вас сервопривод год работать будет? big_smile

cako79
2015-05-16 17:48:17

кстати насчет функции millis, насколько я понял у ее есть предел примерно  50 дней. потом счет переполняться. Как быть  что бы устройство работало допустим около года?

vvr
2015-05-12 09:18:03

ага smile

cako79
2015-05-11 13:48:41

спасибо огромное. я так понял  используя функцию  millis() , мне понадобиться переписывать весь код.. sad  Буду разбираться

vvr
2015-05-11 08:05:44

резистор 10 ком к дребезгу контактов кнопки не имеет никакого отношения и пока эту проблему программно не решите (примеров в сети тьма, есть библиотекa Bounce) будут глюки.
от делеев избавляемся используя millis()
посмотрите пример в IDE  Blink without delay

cako79
2015-05-11 00:55:32

питание сервы отдельной линией идет... а насчет дребезга я кнопки подключал через  подтягивающий резистор номиналом 10к. А каким образом от делеев  можно уйти?

Підвал форуму