Помогите.. Цикл arduino

Тема в разделе "Arduino & Shields", создана пользователем DFedorov, 10 авг 2017 в 22:44.

Метки:
  1. DFedorov

    DFedorov Нуб

    Подскажите пожалуйста, у меня такая проблема: мне нужно что бы если на арудино (допустим на D8) придёт сигнал HIGH, выполнилось определенное действие(допустим, что бы зажегся светодиод на 5 секунд), но что бы это действие выполнилось только 1 раз, до того момента, пока на порту D8 не поменяется сигнал на LOW. Спасибо
     
  2. Karabas

    Karabas Гик

    Как то так
    Код (C++):
    boolean flag = true;
    int ledPin = 3; //пин со светодиодом

    /*---- Вставить в основной цикл ----*/

    if (digitalRead(8) && flag) {
      flag = !flag;
      digitalWrite (ledPin, HIGH);
      delay (5000);
      digitalWrite (ledPin, LOW);
    }

    if (!flag && !digitalRead(8)) {
      flag = !flag;
    }

    /*--------------------------------*/
     
     
  3. DFedorov

    DFedorov Нуб

    Простите меня.. я еще новичок, но как тут работает if если тут ничего не сравнивается??
     
  4. b707

    b707 Гик

    Почему не сравнивается? В таком if, как ниже - даже два сравнения, а не одно
    Код (C++):
    if (digitalRead(8) && flag) {
    В некотором смысле оператор digitalRead - это оператор сравнения, если на пине HIGH - он возвращает истинное значение, если LOW - ложное. А еще там есть логическая переменная flag, которая может быть истинной или ложной. Знак && - это оператор логического "И" Обьединяя все вместе, получаем, что условие оператора if выполнится, если digitalRead(8) вернет HIGH и оператор flag == true
     
  5. Tomasina

    Tomasina Иномирянин

    Код (C++):
    if (digitalRead(8) && flag)
    равноценно
    Код (C++):
    if (digitalRead(8) == true && flag == true)
     
  6. b707

    b707 Гик

    точнее
    Код (C++):
    if (digitalRead(8) == HIGH && flag == true)
     
  7. DFedorov

    DFedorov Нуб

    Все, понял.. Спасибо огромное!!)
     
  8. Tomasina

    Tomasina Иномирянин

    это одно и то же ;)
     
  9. b707

    b707 Гик

    в каком-то смысле да, а в каком-то нет :)