Официальный сайт компании Arduino по адресу arduino.cc
Электролюк на два положения
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Давно мучает идея оснащения люка своей старушки электроприводом в место весла...
Логика работы люка проста, представлена на видео http://www.youtube.com/watch?v=JZGxaFHJQNY, НО не корректно (несколько не так как мне хочется), все действия должны происходить в одно касание и есть необходимость в привязке к ЦЗ для закрытия люка автоматически при поставновке на охрану.
Аппаратно планиурю применить следующие детали:
http://www.aliexpress.com/item/Free-Shipping-1PCS-LOT-5V-2-Channel-Relay...
http://www.aliexpress.com/item/Free-Shipping-1pcs-LM2596-LM2596S-DC-DC-4...
http://www.aliexpress.com/item/Freeshipping-Nano-3-0-controller-compatib...
Привод имеет два концевика и реперный диск, при некоторых положениях которого, тот или иной концевик находится в заданном состоянии. Что хуже всего для моего понятия, это наличие перетекающего процесса 0=>1. Т.е. один концевик отвечает за контроль положения люка в состоянии "закрыт" или "сдвинут", а второй в состоянии "закрыт" или "поднят". Когда люк двигается из состояния "закрыт" в состояние "сдвинут" концевик состояний ("закрыт" или "поднят") два раза меняет своё состояние из 0=>1=>0, причём цикл заканчивается позже "отслеживаемого" на данный момент.
Попробую описать так:
Для самоуспокоения дабы если не получится не тратиться на выше указанные ардуиновские примочки, эмулирую в https://123d.circuits.io
там начал делать скетч, и познания С++ заложенные с техникума у меня закончились.
int Relay_1 = 4; // реле 1 int Relay_2 = 5; // реле 2 int Button_1 = 6; // сдвинуть - открыть в одно касание int Button_2 = 7; // сдвинуть - закрыть в одно касание int Button_3 = 8; // поднять - опустить в одно касание int Switch_1 = 9;// концевик 1 int Switch_2 = 10;// концевик 2 int CenZamok = 11;// сигнал с центрального замка, при активации подаётся (-) void setup() { pinMode (Relay_1, OUTPUT); pinMode (Relay_2, OUTPUT); pinMode (Button_1, INPUT); pinMode (Button_2, INPUT); pinMode (Button_3, INPUT); pinMode (Switch_1, INPUT); pinMode (Switch_2, INPUT); pinMode (CenZamok, INPUT); } void loop() { if (digitalRead(Button_1) == HIGH) { digitalWrite(Relay_1, HIGH); } else { digitalWrite(Relay_1, LOW); } if (digitalRead(Button_2) == HIGH) { digitalWrite(Relay_2, HIGH); } else { digitalWrite(Relay_2, LOW); } }
Схемка тут https://123d.circuits.io/circuits/1398606-
Ногу 11 на ЦЗ ещё не разводил - т.к. ещё не знаю штатную (автомобильную) полярность управления ЦЗ.
Собрал я её по принципу "минимум" - прошу не кидаться помидорами... со знаниями аппартной части всё в порядке.
Решил начать освоение Ардуины с именно такой задачи.
Есть ряд вопросов про кнопки в одно касание с зависимостью от состояния концевиков.
Пробовал через логические операторы, не вышло, решил написать за помощью сюда.
Попробуй так:
На кнопки и концевики нужен программный антидребезг и номера выходов объяви как константы, а не переменные: #define Relay_1 4
номера выходов объяви как константы, а не переменные: #define Relay_1 4