Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.02.2013, 12:32   #1
vadymkyr
Junior Member
 
Регистрация: 21.02.2013
Адрес: Севастополь
Возраст: 32
Сообщений: 7
Вес репутации: 0
vadymkyr is an unknown quantity at this point
По умолчанию

работает только включение и выключение. и еще, такое впечатления, что присудствует дребезг контактов
Код:
long press
1 click
long press
1 click
long press
long press
1 click
1 click + long press
1 click
long press
1 click
1 click + long press
1 click
long press
1 click
3 click
1 click
1 click + long press
vadymkyr вне форума   Ответить с цитированием
Старый 23.02.2013, 13:32   #2
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию

Дребез контактов аппаратно - кондерами устранялся? В программе устранения дребезга. Надо понимать, что это не законченная вещь - придет железо - буду уже отлаживать, а вот насчет изменения переменной Dimmer1 посмотрю еще раз
Bulatovor вне форума   Ответить с цитированием
Старый 23.02.2013, 13:49   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Цитата:
Дребез контактов аппаратно - кондерами устранялся?
Лучше всего кондером и программно
Admin вне форума   Ответить с цитированием
Старый 24.02.2013, 11:21   #4
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию

после праздников займусь проверкой программки, пока одну ошибочку нашел вот тут
PHP код:
if(D9_RH// условие для обработки прерывания только по отпусканию кнопки   
  

    
b1millis=millis(); // фиксация времени прерывания  
    
qbutton1++; // счетчик нажатий на кнопку 1  
    
B=0// флаг о том что кнопка отжата 
  
}; 
строчка qbutton1++; // счетчик нажатий на кнопку 1 лишняя, не надо по отпусканию увеличивать количество нажатий, вышеприведенный скетч поправил
Bulatovor вне форума   Ответить с цитированием
Старый 24.02.2013, 23:14   #5
vadymkyr
Junior Member
 
Регистрация: 21.02.2013
Адрес: Севастополь
Возраст: 32
Сообщений: 7
Вес репутации: 0
vadymkyr is an unknown quantity at this point
По умолчанию

кондеры не помогают,
Добавьте пожалуйста программное устранение дребезга
vadymkyr вне форума   Ответить с цитированием
Старый 25.02.2013, 07:56   #6
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию

Я так понимаю нужно просто установить задержку по времени между срабатываниями, delay в прерывании не работает - сделать просто цикл? Это вопрос к людям.
А к vadymkyr - сколько по времени у тебя длится дребезг -какая кнопка -можешь измерить?
Bulatovor вне форума   Ответить с цитированием
Старый 25.02.2013, 21:47   #7
vadymkyr
Junior Member
 
Регистрация: 21.02.2013
Адрес: Севастополь
Возраст: 32
Сообщений: 7
Вес репутации: 0
vadymkyr is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Bulatovor Посмотреть сообщение
какая кнопка
пробовал с двумя кнопками:



эффект одинаковый.

можно как-то так попробовать
PHP код:
if (millis() - last_micros >= 300

last_micros millis(); 
Button digitalRead(9);

...

vadymkyr вне форума   Ответить с цитированием
Старый 25.02.2013, 23:04   #8
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Можно использовать встроенную библиотеку #include <util/delay.h>
Она не использует таймер
Admin вне форума   Ответить с цитированием
Старый 26.02.2013, 08:00   #9
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию

Это хорошо, только вот что-то у меня в Arduino 1.0 её нет. Попробую найти. А в целом просто её подключаем и в обработчике прерывания по PCINT первым делом ставим задержку типа delay_ms(20)( а у нас лампочка в это время не погаснет - ведь прерывания по таймеры тож не будут обрабатываться? А 20 не мало -видимо это надо подпирать эксперементальным путем приминительно к кнопке) а потом уже анализируем состояние портов
Bulatovor вне форума   Ответить с цитированием
Старый 26.02.2013, 10:07   #10
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Я обычно использую задержку от 10мс до 30мс
Можно так же использовать обычный delay()
Только при входе в обработчик нужно отключить прерывание по входу, а при выходе из обработчика снова включить
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 17 (пользователей: 0 , гостей: 17)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 03:58. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика