Помогите с скетчем 2 светодиода одна кнопка

Тема в разделе "Arduino & Shields", создана пользователем KiVor, 5 окт 2015.

  1. Адам

    Адам Нерд

    НЕ МОГУ НАПИСАТЬ МИГАНИЕ СВЕТОДИОДА ПРИ ОТКРЫТИЕ И ЗАКРЫТИЕ ВОРОТ

    pinMode(10, OUTPUT); // МИГАЛКА
    // Таймер после которого светодиоды гаснут
    #define TIME_LED_OFF 3000 // 3 сек
    unsignedlongint time_led_off;
    // Таймер для антидребезга кнопки, его можно поставить меньше, но не суть
    #define TIME_BUTTON 100 // 100 мс
    unsignedlongint time_button;

    int state;
    int val;// флаг для однократного выполнения действия

    void setup()
    {
    pinMode(12, OUTPUT);// светодиод 1
    pinMode(13, OUTPUT);// светодиод 2
    pinMode(11, INPUT);// кнопка
    }

    void loop()
    {
    // Нажимаем кнопку и считываем состояние кнопки только после 100 мс, когда дребезг контактов кнопки устаканился
    if(millis()- time_button > TIME_BUTTON)
    {
    // Нажимаем кнопку
    if(digitalRead(11)== HIGH)
    {
    // Если нажали кнопку, то выполним только одно действие
    if(val !=1)// если val НЕ равна 1, а изначально она 0, то
    {
    state +=1;// выполняем какие-то действия
    // сбрасываем таймер для светодиодов
    time_led_off = millis();
    val =1;// присваиваем переменной val =1, что не даст циклу выполнится многократно
    }
    }
    else
    {
    // выполнять другие действия мы можем, только после того,
    // как кнопка была отпущена (digitalRead(11) == LOW)
    val =0;
    time_button = millis();// сбросим таймер антидребезга кнопки
    }
    }
    // дальше по порядку
    // первое нажатие включает светодиод 1
    if(state ==1)
    {
    digitalWrite(12, HIGH);
    // выключает по таймеру
    if(millis()- time_led_off > TIME_LED_OFF)
    {
    digitalWrite(12, LOW);
    state =2;
    }
    }
    // второе нажатие - досрочно выключает первый светодиод
    if(state ==2)
    {
    digitalWrite(12, LOW);
    }
    // третье нажатие включает второй светик
    if(state ==3)
    {
    digitalWrite(13, HIGH);
    // отключает его по таймеру
    if(millis()- time_led_off > TIME_LED_OFF)
    {
    digitalWrite(13, LOW);
    state =0;
    }
    }
    // четвертое нажатие отключает светик досрочно
    if(state ==4)
    {
    digitalWrite(13, LOW);
    state =0;// возвращаемся в начало
    }
    }

    как написать этот скетч наоборот, чтоб включение светодиода реле включался а не наоборот

    у меня реле работает наоборот , свободном положении реле замкнута
     
    Последнее редактирование модератором: 11 дек 2019
  2. asam

    asam Гик

    А как же ваше заявление пару часов назад на ардуино.ру -

     
    Andrey12 нравится это.
  3. asam

    asam Гик

    Так в чем конкретно вопрос? Что бы вам сектч написали по вашему алгоритму?
     
  4. asam

    asam Гик

    Пример какого кода? Работа с кнопками? Манипулирования пинами? Работы с миллис?
    Куча примеров находится в самом Ардуино IDE. File -> examples.
     
  5. asam

    asam Гик

  6. DetSimen

    DetSimen Guest

    Сначала придёца многачитать.
     
  7. parovoZZ

    parovoZZ Гуру

    а потом удивляться, почему на столе вроде как и работает, а в машине - нет. AVR не позиционируется как МК для работы в составе ЭБУ. Прежде всего из-за очень простой схемы осциллятора.
     
  8. b707

    b707 Гуру

    если с английским плохо.... то можно начать с языка :) А потом, может, и втянетесь - и ардуина не нужна будет. изучение иностранных языков - дело не менее увлекательное. чем занятия электроникой :))))
     
    Andrey12, DetSimen и ИгорьК нравится это.