Как выполнить цикл for один раз в loop

Тема в разделе "Технологии радиолюбителя", создана пользователем Mr_dsa1, 20 июн 2018.

  1. Mr_dsa1

    Mr_dsa1 Нерд

    Всё ребята всем спасибо за помощь. Я сделал всё работает, плавное включение и выключение !
    Отдельное спасибо: DetSimen и parovoZZ за подсказку с флагами (я с помощью флагов и сделал)
    Код (C++):
    bool IsMosfetOn = false;  // мосфет выключен
    // bool IsMosfetOff = false;  // мосфет включен
    #define move_sensor 8   // датчик движения
    #define mosfet 3   // мосфет модуль
    void setup() {
      pinMode(mosfet, OUTPUT); // Объявляем пин реле как выход
      digitalWrite(mosfet, HIGH); // Выключаем мосфет - посылаем высокий сигнал
      delay(1000);
      digitalWrite(mosfet, LOW);   //Выключаем мосфет - посылаем низкий сигнал (это для тестирования что всё хорошо)
      Serial.begin(9600);
    }

    void loop() {
      int light = analogRead(A0);
      Serial.println(light);

      if ((light < 75 ) && (digitalRead(move_sensor) == HIGH ))
      {
        if (!IsMosfetOn)
        {
          for (int i = 0; i <= 255; i++)
          {
            analogWrite(3, i);
            delay(5); // ставим задержку для эффекта
            IsMosfetOn = true;
          }
        }
         }
      else if (digitalRead(move_sensor) == LOW)
      {
        if (IsMosfetOn)
        {
           for(int i=255;i>=0;i--)  // вот с этим проблема !!!!
        {
          analogWrite(3, i);
          delay(5); // ставим задержку для эффекта
          IsMosfetOn = false;
        }
       }
      }
    }

     
     
    Gritsan нравится это.
  2. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Mitrandir, Mr_dsa1 - Спасибо.