Arduino кнопка с самовозратом + реле
- Войдите на сайт для отправки комментариев
Есть кнопка с самовозратом. Стоит вместо обычного выключателя. По сути это обычный выключатель. Только после нажатия возвращается в исходное состояние(выкл). Есть реле, которое управляет нагрузкой. Кнопка подключена к 7 пину. Есть код, при котором свет включен только пока держишь кнопку. А нужно, чтобы нажали кнопку свет включался. Ещё раз нажал выключилось. Примеров много. Но они то не работают. То свет включается и выключается(дискотека).
void setup() { pinMode(bathroom, OUTPUT); } void loop() { if(digitalRead(14)==HIGH)//если кнопка нажата { digitalWrite(bathroom, LOW); //на пине 7 Ардуино будео логический нуль и реле замкнёт нормально разомкнутые контакты. delay(300); } else//если кнопка не нажата { digitalWrite(bathroom, HIGH); //на пине 7 Ардуино будет логическая единица и реле разомкнёт нормально разомкнутые контакты. delay(300); }
Допустим этот код, при котором у меня свет включается и выключается через 2 секунды:
int LedPin = 7; // Подключаем светодиод к порту 13 int ButPin = 14; // Подключаем кнопку к выходу 10 int flag = 0; // флаг состояния void setup() { pinMode(LedPin, OUTPUT); // Инициализируем порт "ledPin" как выходной } void loop() { if(digitalRead(ButPin) == HIGH && flag == 0) { digitalWrite(LedPin, !digitalRead(LedPin)); flag = 1; } if(digitalRead(ButPin) == LOW && flag == 1) { flag = 0; } }
Больше ничего не подключено. Пытаюсь разобраться и потом повесить ethernet шилд и кнопок побольше. Резистора нет. Выключатель schneider electric. Я думаю, что если первый код работает(когда держишь кнопку) и само не включается(когда отпущено) значит он не нужен и возможно в выключателе уже всё предусмотрено.
Помогите найти рабочий код. Пробовал пример из библиотеки IDE. Не получается.
Нет фильтрации дребезга, смотреть тему про титановый велосипед, тут на форуме - там есть класс для кнопки.
так можно?
Ещё раз: нет фильтрации дребезга. Вы понимаете, что такое дребезг? Это когда в момент нажатия кнопки контакты любят друг друга возвратно-поступательными движениями до тех пор, пока не устаканится эфир и не придёт нирвана. А до этого момента вы можете сто раз прочитать HIGH, и сто раз - LOW, поэтому и происходит, как вы описали, " То свет включается и выключается(дискотека)".
https://github.com/Klapautsiy/titanium-bicycle-for-button/wiki/titanium-...
Спасибо. Второе сообщение не я кстати писал. Вчера попробовал с классом, реле совсем не реагировало. По запарке возможно я пины не верно прописал(все выходные этим занимался + электрика). Сегодня попробую ещё. Я думаю все таки надо купить подстрочных резисторов в обычном магазине. У кнопки нет минуса. То есть я подключу перед размыкаемым контактом кнопки резистор и воткну его в землю ардуино. Верно? Ещё вопрос: Гуглю эти резистора. Они с тремя ногами. В видео на YouTube обычно два контакта у резистора. В чем разница?
Я думаю все таки надо купить подстрочных резисторов в обычном магазине. У кнопки нет минуса. То есть я подключу перед размыкаемым контактом кнопки резистор и воткну его в землю ардуино. Верно? Ещё вопрос: Гуглю эти резистора. Они с тремя ногами. В видео на YouTube обычно два контакта у резистора. В чем разница?
А можно поподробней описать как кнопка у вас сейчас подключена? Что имеется ввиду, когда вы говорите, что у кнопки нет минуса. Она одним концом подключена к Арудинке, а второй конец в воздухе висит?
Не нужен вам тут никакой резистор и тем более подстроечный. Подтяните к плюсу вход к которому цепляете кнопку.
На последний вопрос отвечать не буду, я просто плачу.
Представьте стандартный выключатель света. К нему никогда не подводят минус. Потому что он только замыкает и размыкает цепь. Минус от лампочки подключён к общей сети. Один конец выключателя (кнопки) идёт на 14 пин ардуино. Второй контакт подключён к 5v arduino. Реле к 7 пин, к 5v arduino, и к земле. И дальше реле замыкает и размыкает 220
У меня похоже все симптомы дребезга. Похоже он сильный. Из за отсутствия резистора. Возможно из за этого с классом не работало ( проверю ещё раз).
я так понимаю один конец кнопки, который идёт к 14 пин нужно заземлить через резистор. Верно?
Через резистор на землю. Параллельно кнопке или резистору конденсатор 0, 1 мкф для подавления дребезга, если лень бороться программно.
А вообще- учить
матчасть срочно!
Скорее всего это не дребезг,это 50 гц от сети(я так понял вы хотите штатную цепь 220 в переделать?)
я бы сделал проще-последовательно кнопке резистор+оптопара (ну и + пару деталей),выключатель разомкнут-оптопара не горит-ключ в оптопаре в ардуине разомкнут,нажали кнопку-зажглась оптопара-ключ ардуины замкнут-переключаем реле
где у вас будет стоять ардуина-около выключателя или около лампы?
У меня от включателя в щиток ( специально поставил) идут провода. Там роутер, arduino, raspberry. И рядом 220. Я проводку от выключателя до щитка переделываю из 220 в 5(питание от arduino). Дак ведь теперь от штатной сети все что 220 включено в реле. Эти 50 гц попадают в arduino через реле или как?
я вас неправильно понял,думал через выключатель идет 220 в
увы-помочь не могу,абсолютно не понятно как все подключено...
и не понятно какой вы конкретно скетч используете
Использовал я библиотеку титановый велосипед с гитхаба. Получилось так, что лампочка горит всегда.
Поправьте, пожалуйста код:
жёлтый - GND к арудино и к реле
Сделал фото как всё подключено и видео снял, чтобы было понятно https://www.youtube.com/watch?v=TFKl71JU8Wo
7 пин это int1 к реле(синий)
Чёрный к vcc и из него пока сделал скрутку с зелённым (vss на реле) и один провод от кнопки
Белый 14 (А0) ко второму пину кнопки.
Пока резисторы не купил, пытаюсь сделать программно.
Тебе ж сказали- учи матчасть. Без резистора у тебя ничего не будет работать. Нужна подтяжка. Либо внешняя, либо включаем внутреннюю. Если кнопка подключена к плюсу, то резистор к минусу и наоборот. У тебя уровень напряжения на входе меняется? Как контроллер поймёт, что ты кнопку нажал? Тогда учи его мысли читать.
Это у тебя не дребезг. Это антенна.
На сколько ватт резистор нужен ?
Любой мощности 1-100 Ком сопротивлением. Говорят же- можно включить внутренний подтягивающий.
Итак, все таки, кнопка у нас не силовая, а логическая (т.е. самой кнопкой мы не коммутируем 220В, а лишь изменяем логическое состояние на входе Ардуинки, которая в свою очередь управляет РЕЛЕ). Где-то в начале я именно это хотел уточнть у автора, но он начал писать что-то за лампочку, включенную в сеть.
Пожалуйста изучите вот эту страничку
https://www.arduino.cc/en/Tutorial/InputPullupSerial
а потом оставьте свою кнопку подключенной одним концом к ардуине, а второй конец УБЕРИТЕ с +5В и повесьте на землю.
а в скетче притяните вход (к которому подключена кнопка) внутренним подтягивающим резистором к питанию, как это указано в той ссылке, что я скинул.
Если после этого у вас все равно будет "дребезг" поборите его способом указаным в посте #4
Всем спасибо! Последнее сообщение от kasper007 помогло. Использовал сразу библиотеку титановый велосипед. Рабочий код в моём предыдущем посте. Мне надо было кнопку с +5В переключить на землю.
Аллилуйя!
Ещё возник вопрос по мере эксплуатации. Вотнул я три кнопки. Каждый на отдельный пин, а землю этих трёх кнопок скрутил и вставил в ардуино(GND). У меня вторая земля занята реле. И получается, что сначала всё работает. Потом через какое-то время одна из кнопок отваливается. И не работает. То есть две работает, а одна нет. После того, как повытыкаю провода/ перезагружу arduino uno опять работает какое-то время и отваливается(при чём любая - не одна и та же).
Ещё возник вопрос по мере эксплуатации. Вотнул я три кнопки. Каждый на отдельный пин, а землю этих трёх кнопок скрутил и вставил в ардуино(GND). У меня вторая земля занята реле. И получается, что сначала всё работает. Потом через какое-то время одна из кнопок отваливается. И не работает. То есть две работает, а одна нет. После того, как повытыкаю провода/ перезагружу arduino uno опять работает какое-то время и отваливается(при чём любая - не одна и та же).
Соплей! Нужно больше соплей на макетке - тогда и не такие чудеса будут ;) Контакты херовые у вас - пропаяйте всё, и не парьте людям моск.
13
Button Bpantry;
// пытошная
О_О