Всем привет! Недавно у друга увидел что его роль ворота выполняют все функции всего одной кнопкой. А вот у меня они управляются тремя кнопками вверх,вниз,стоп. Заглянул в Б\У "подумал может настроить можно" но нет там на плате три выхода ... вечно замкнутый стоп который размыкается по нажатию на соответствующую кнопку и вниз,вверх срабатывают от кратковременного замыкания. Т.К у ворот при подходе к концевикам отключается только двигатель а плата управления подает сигнал еще некоторое время(проверял). Решил что можно организовать откр. и закр. по времени. Посчитал что ворота поднимаются 30 сек. Вытащил радиореле,отнес домой подключил к ней ардуинку, начал пробовать. Но опыта у меня 0.(ардуино купил меньше месяца назад) сделал только попеременное включение (( Я не знаю как сделать так что бы размыкался стоп если не прошло 30 сек. Нацарапал я конечно полный шлак(скетч) так что даже крепить не буду. Собственно вопрос как можно это осуществить? Может есть примеры или статьи? P.S Спасибо всем кто отозвался!
Как я понял это сложнее чем я думаю и требует знаний которых у меня нет.Если кого заинтересует,можем обсудить цену проекта
int switchPin = 3; // замыкание кнопки int led1Pin = 12; // нагрузка 1 int led2Pin = 10;// нагрузка 2 int led3Pin = 11;.// стоп int val; // Переменная для чтения статуса контактный int val2; // Переменная для чтения с задержкой / подавлением дребезга контактов статус int buttonState; // Переменная провести состояния кнопки int lightMode = 0; // Есть свет включен или выключен? void setup() { pinMode(switchPin, INPUT_PULLUP); // Установите пин в качестве входных данных pinMode(led1Pin, OUTPUT); // Установите пин в качестве выходных данных pinMode(led2Pin, OUTPUT);// Установите пин в качестве выходных данных pinMode(led3Pin, OUTPUT); digitalWrite(led3Pin, HIGH); Serial.begin(9600); // Установите последовательную связь в 9600 buttonState = digitalRead(switchPin); // читать начальное состояние } void loop(){ val = digitalRead(switchPin); // читать входное значение и сохранить его в Val delay(10); // 10 миллисекунд хорошее количество времени val2 = digitalRead(switchPin); // читать ввод снова, чтобы проверить отскоков if (val == val2) { // убедиться, что мы получили 2 показания последовательны! if (val != buttonState) { // состояние кнопки изменилось! if (val == LOW) { // проверить, если нажата кнопка if (lightMode == 0) { // эта нагрузка включена? lightMode = 1; // включить нагрузку 1 digitalWrite(led1Pin, HIGH); // нагрузка включена delay(20); // время до автовыключения digitalWrite(led1Pin, LOW); // нагрузка выключается } else { lightMode = 0; // выключить нагрузку 2 digitalWrite(led2Pin, HIGH); // нагрузка включена delay(20); // время до автовыключения digitalWrite(led2Pin, LOW); // нагрузка выключается } } } buttonState = val; // сохранить новое значение в нашей переменной } } [/code]
Всё-таки концевики нужно оставить. Для подстраховки, рано или поздно что нибудь сбойнет и результат может быть печален, если не остановить ворота в крайних точках
в крайних точках есть концевики но они останавливают только двигатель,плата управления по 90 сек сигнал дает в обе стороны
Уважаемый teach me! Выражайте свои желания попонятнее. Что значит Как организован функционал? Что происходит по нажатию кнопки? Ещё одно То-есть стоп должен размыкаться сразу, а через 30 секунд на размыкаться? Как-то не логично. Опишите какое оборудование вы будете использовать. А то у вас промелькнуло слово "радиореле". Как работает, чем управляется? Ну и какой алгоритм работы вы видите в конечном варианте? Откуда приходит сигнал управления, как контролируется положение ворот?
я бы еще спросил, зачем вообще этот сыр-бор. Заменить управление тремя кнопками на управление одной... А смысл? Лишние две кнопки потом продать?