Программный триггер с фильтром дребезга
Приветствую!
Задача:
Есть кнопка без фиксации и реле. Нужно при одном нажатии кнопки включить реле. При втором - выключить.
Может есть у кого пример, как это реализовать?
Re: Программный триггер с фильтром дребезга
Где то здесь была схема кнопки без фиксации на 4х реле. Поиском попробуй.
Re: Программный триггер с фильтром дребезга
На Carduino можно реализовать за 5 мин. Но не бюджетно для токой функции. Если устроит могу написать код.
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
Chip
На Carduino можно реализовать за 5 мин. Но не бюджетно для токой функции. Если устроит могу написать код.
У меня в инсталляции уже есть Arduino :) Просто хочу добавить эту функцию. Был бы благодарен за помощь.
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
vladsmir
Где то здесь была схема кнопки без фиксации на 4х реле. Поиском попробуй.
На реле я знаю как сделать. Надо программный вариант.
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
Chip
На Carduino можно реализовать за 5 мин. Но не бюджетно для токой функции. Если устроит могу написать код.
А может проще пойти и купить реле задних ПТФ от ВАЗов, около 150 рублей стоит.
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
oops1
А может проще пойти и купить реле задних ПТФ от ВАЗов, около 150 рублей стоит.
Легче. Поеду в Россию и куплю.
А вообще, я спрашиваю очень конкретную вещь.
Re: Программный триггер с фильтром дребезга
Код:
unsigned char button_state;
unsigned char old_button_state;
#define BUTTON_PIN 0
#define RELAY_PIN 1
void setup()
{
button_state = digitalRead(BUTTON_PIN);
trigger_relay = 0;
}
void loop()
{
button_state = digitalRead(BUTTON_PIN);
if (button_state != old_button_state)
{
if (button_state == 0)
{
if (digitalRead(RELAY_PIN) == 1) digitalWrite(RELAY_PIN, 0);
else digitalWrite(RELAY_PIN, 1);
}
old_button_state = button_state;
}
}
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
TroyTQ
Легче. Поеду в Россию и куплю.
А вообще, я спрашиваю очень конкретную вещь.
Признаю не посмотрел на место дислокации,
У вас негде купить запчасти для Lada ? Есть же офф. дилеры.
Конкретный ответ на конкретный вопрос.
Есть кнопка есть реле.
Ответ. заменить реле.
Цитата:
Сообщение от
TroyTQ
Приветствую!
Задача:
Есть кнопка без фиксации и реле. Нужно при одном нажатии кнопки включить реле. При втором - выключить.
Может есть у кого пример, как это реализовать?
Я же не предложил вам схему на 4х реле :).
Вложений: 1
Re: Программный триггер с фильтром дребезга
Мда ... уже триггеры на процессорах делаем :eek:
вот попроще и без дребезга.
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
Urvin
....
[/code]
Не работает. Что-то подобное я сам написал.
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
xDriver
Мда ... уже триггеры на процессорах делаем :eek:
вот попроще и без дребезга.
Спасибо. Такой реализации не видел. Но в этом случае - не вариант.
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
oops1
Признаю не посмотрел на место дислокации,
У вас негде купить запчасти для Lada ? Есть же офф. дилеры.
Конкретный ответ на конкретный вопрос.
Есть кнопка есть реле.
Ответ. заменить реле.
Я же не предложил вам схему на 4х реле :).
У нас есть места, где купить запчасти для Лад. Только их надо искать...
Вам не кажется, что легче дополнить СУЩЕСТВУЮЩИЙ контроллер в инсталляции? Тем более эти сигналы заведены на плату.
Кнопку заменить - не вариант.
Re: Программный триггер с фильтром дребезга
Для начала что за кнопка ? я думаю о физической кнопке. Может она у вас программная на мониторе ?
Я иммею ввиду
22.3777
23.3777
2114.3777
Если кнопка физическая самое простое решение вашей проблемы.
http://www.niva-faq.msk.ru/tehnika/e...ary/rzptf2.jpg
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
oops1
Для начала что за кнопка ? я думаю о физической кнопке. Может она у вас программная на мониторе ?
Так точно, физическая. Маленькая смд кнопка.... Неужели трудно поверить, ну не могу я ее заменить. Стал бы городить огород...
Re: Программный триггер с фильтром дребезга
Я не предлагал поменять кнопку ;)
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
oops1
Я не предлагал поменять кнопку ;)
Сорри, моя вина. Не доглядел.
Спасибо за Ваше предложение решения проблемы. Если честно, то я даже не знал о существовании таких реле.
Но я хотел бы оставить кнопку и реле неизменными в моей задаче. Поясню. Программист из меня, как видно, никакой (учусь :)), но что-то мне подсказывает, что не должно быть сложно написать код управления. Исходя из выше сказанного и того, чтоу меня есть куча реле, свободные каналы на контроллере, предположу, что выбранный путь - самый лучший. Мне просто нужна помошь в написании кода. Еще одним плюсом является универсальность. Не удивлюсь, что через полгода придумаю что-то новое - и надо только поменять код (например, управлять этой же реле контроллером по некоторому алгоритму и по кнопке параллельно). Возможно я и ошибаюсь. Время покажет.
Еще раз, спасибо за Ваш вариант.
Re: Программный триггер с фильтром дребезга
Вот код накидал в спешке, оптимизировать некогда , сейчас убегаю.
Состояние реле будет видно на светодиоде D13
Кнопка подключается на D12 и на GND
PHP код:
unsigned char button_state;
unsigned char button_mem;
#define BUTTON 12
#define RELAY 13
void setup()
{
pinMode(RELAY,OUTPUT);
pinMode(BUTTON,INPUT);
digitalWrite(BUTTON, HIGH); //подключить внутренний подтягивающий резистор
}
void loop()
{
button_state = digitalRead(BUTTON); //прочитать состояние кнопки
delay(30); // пауза для проверки дребезга
if (digitalRead(BUTTON) == LOW && button_state == LOW && button_mem == 0)
{
digitalWrite(RELAY, HIGH);
button_mem=255; //запомнить состояние реле
while(digitalRead(BUTTON) == LOW){ delay(10);}//ждем отпускания кнопки
} else
{
if (digitalRead(BUTTON) == LOW && button_state == LOW && button_mem == 255)
{
digitalWrite(RELAY, LOW);
button_mem=0; //запомнить состояние реле
while(digitalRead(BUTTON) == LOW){ delay(10);}//ждем отпускания кнопки
}
}
}
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
xDriver
Мда ... уже триггеры на процессорах делаем :eek:
вот попроще и без дребезга.
Некоторые замечания...Чтобы при подаче питания тригер не устанавливался в неопределённое состояние, на вход R надо RC цепочку повесить....И микросхему лучше 564 серии брать...у неё разброс питания шире.
Re: Программный триггер с фильтром дребезга
Цитата:
Сообщение от
Chip
Вот код накидал в спешке, оптимизировать некогда , сейчас убегаю.
Состояние реле будет видно на светодиоде D13
Кнопка подключается на D12 и на GND
Все работает. Спасибо.