Вопрос по коду (need little help...)

Тема в разделе "Arduino & Shields", создана пользователем bytex, 21 янв 2014.

  1. bytex

    bytex Нуб

    Всем здравствуйте!
    Ув. Единомышленники!!!
    Нужна помощь в виде небольшой, я так думаю, строчке кода.
    Итак: чтобы при каком-то событии (напр. нажали кнопку) на одном из выходов появился высокий или низкий, не суть, уровень, но!!! нужно чтобы сигнал провисел некоторое время (напр. 5 сек) и вернулся в исходное состояние , самостоятельно, без участия кнопки, т.е. как задержать программно сигнал на нужное время.
    Спасибо, если кто-то поможет!!!
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    delay(5000);
    Читайте вики, смотрите видеоуроки.
     
  3. NR55RU

    NR55RU Гик

    Самый прсотеший вариант.
    Код (Text):
    digitalWrite(pin, HIGH);
    delay(1000);
    digitalWrite(pin, LOW);
    В delay() передается время задержки в микросекундах 1 сек = 1000 микросек.
    Важный момент, в момент выполнения delay() выполнение программы остановится.
     
  4. bytex

    bytex Нуб

    В моём случае не

    digitalWrite(pin, HIGH);
    delay(1000);
    digitalWrite(pin, LOW);
     
  5. bytex

    bytex Нуб

    Сорри, немного не так объяснил - жмём на кнопку (не отпускаем!!!) на выходе должна висеть "1" n-сек (кнопка нажата!!!)
     
  6. Unixon

    Unixon Оракул Модератор

    Код (Text):
    #define PIN_BTN 2
    #define PIN_OUT 3

    #define TIMEOUT 5000

    long int time_button_pressed = 0;
    int output_state = 0;

    void setup()
    {
     pinMode(PIN_BTN, INPUT);
     pinMode(PIN_OUT, OUTPUT);
     digitalWrite(PIN_OUT, LOW);
    }

    void loop()
    {
     if (output_state)
     {
      if ((millis()-time_button_pressed) > TIMEOUT)
      {
       output_state = 0;
       digitalWrite(PIN_OUT, LOW);
      }
     }
     else
     {
      if (digitalRead(PIN_BTN))
      {
       time_button_pressed = millis();
       output_state = 1;
       digitalWrite(PIN_OUT, HIGH);
      }
     }
    }
     
  7. bytex

    bytex Нуб

    Unixon, thanx, что-то похожее, буду разбираться, ещё раз спасибо!
     
  8. bytex

    bytex Нуб

    Ув. Unixon! С кодом разобрался, возможно ли вместо кнопки прикрутить на вход делитель и реализовать этот же код таким образом, чтобы допустим при напр. >2.5V на выходах были "1" и "0", а при <2.5V - "0" и "1" соответствено (напряжения условно)