Ворота и одна кнопка

Тема в разделе "Arduino & Shields", создана пользователем teach me, 5 авг 2018.

  1. teach me

    teach me Нуб

    Всем привет! Недавно у друга увидел что его роль ворота выполняют все функции всего одной кнопкой.
    А вот у меня они управляются тремя кнопками вверх,вниз,стоп. Заглянул в Б\У "подумал может настроить можно" но нет там на плате три выхода ... вечно замкнутый стоп который размыкается по нажатию на соответствующую кнопку и вниз,вверх срабатывают от кратковременного замыкания. Т.К у ворот при подходе к концевикам отключается только двигатель а плата управления подает сигнал еще некоторое время(проверял). Решил что можно организовать откр. и закр. по времени. Посчитал что ворота поднимаются 30 сек. Вытащил радиореле,отнес домой подключил к ней ардуинку, начал пробовать.
    Но опыта у меня 0.(ардуино купил меньше месяца назад) сделал только попеременное включение ((
    Я не знаю как сделать так что бы размыкался стоп если не прошло 30 сек.
    Нацарапал я конечно полный шлак(скетч) так что даже крепить не буду.
    Собственно вопрос как можно это осуществить? Может есть примеры или статьи?
    P.S Спасибо всем кто отозвался!
    набросок.png
     
  2. teach me

    teach me Нуб

    Как я понял это сложнее чем я думаю и требует знаний которых у меня нет.Если кого заинтересует,можем обсудить цену проекта
     
  3. teach me

    teach me Нуб

    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]
     
  4. teach me

    teach me Нуб

    но как сделать принудительную остановку никак не соображу
     
  5. Mitrandir

    Mitrandir Гуру

    Конечный автомат вам в помощь
     
  6. parovoZZ

    parovoZZ Гуру

    алгоритм нарисуй на бумаге и по нему пиши программу.
     
  7. Всё-таки концевики нужно оставить. Для подстраховки, рано или поздно что нибудь сбойнет и результат может быть печален, если не остановить ворота в крайних точках
     
    Mitrandir нравится это.
  8. teach me

    teach me Нуб

    в крайних точках есть концевики но они останавливают только двигатель,плата управления по 90 сек сигнал дает в обе стороны
     
  9. a1000

    a1000 Гуру

    Уважаемый teach me! Выражайте свои желания попонятнее. Что значит
    Как организован функционал? Что происходит по нажатию кнопки?
    Ещё одно
    То-есть стоп должен размыкаться сразу, а через 30 секунд на размыкаться? Как-то не логично.
    Опишите какое оборудование вы будете использовать. А то у вас промелькнуло слово "радиореле". Как работает, чем управляется?
    Ну и какой алгоритм работы вы видите в конечном варианте? Откуда приходит сигнал управления, как контролируется положение ворот?
     
  10. b707

    b707 Гуру

    я бы еще спросил, зачем вообще этот сыр-бор. Заменить управление тремя кнопками на управление одной... А смысл? Лишние две кнопки потом продать? :)
     
    ИгорьК нравится это.