включение и выключение с отсрочкой

dimOnOff
Offline
Зарегистрирован: 21.04.2015

dimOnOff
Offline
Зарегистрирован: 21.04.2015

Помогите, пожалуйста, реализовать алгоритм включения и выключения с задержкой

int sensorPin = A5;         // контакт фоторезистора

long previousMillis_1 = 0;   
long previousMillis_2 = 0;  
long interval_1 = 10000;     // задержка включения
long interval_2 = 5000;      // задержка выключения

unsigned int sensorValue = 0;   
int ret_1;  // переменная 1 
int ret_2;  // переменная 2 


void setup()
{

 pinMode(12, OUTPUT);          // устанавливает режим работы светодиода фоторезистора 
 pinMode(13, OUTPUT);          // устанавливает режим работы нагрузки

}   


void loop() 
{
//  ВКЛЮЧЕНИЕ //

sensorValue = analogRead(sensorPin);  // считываем значение с фоторезистора
if(sensorValue < map(analogRead(A0),53,910,0,1000) +50 )

  {
    digitalWrite(12, HIGH);
     ret_1 =  sensorValue; 
 

     if (millis() - previousMillis_1 > interval_1) 
{
  previousMillis_1 = millis();   // запоминаем текущее время

      if(sensorValue < map(analogRead(A0),53,910,0,1000) +50)
             {
                 ret_2 =  sensorValue;

                      if (ret_2 <= ret_1) 
                     {
 //==========================================================                    
                     digitalWrite(13, HIGH);       // включаем светодиод                 
 //===========================================================
                    ret_1=0;
                    ret_2=0;  
                    }
               }
            }              
  }          
 
 
 
 
           
//  ВЫКЛЮЧЕНИЕ //
if(sensorValue > map(analogRead(A0),53,910,0,1000))  
  {
     
     digitalWrite(12, LOW);     //выключаем светодиод фоторезистора
     ret_1 =  sensorValue; 

   
     if (millis() - previousMillis_2 > interval_2) 
{
  previousMillis_2 = millis();   // запоминаем текущее время

      if(sensorValue >  map(analogRead(A0),53,910,0,1000))
             {
                 ret_2 =  sensorValue;

                      if (ret_2 >= ret_1) 
                     {
 //==========================================================                    
                     digitalWrite(13, LOW);       // ... иначе — выключаем светодиод                  
//===========================================================
                    ret_1=0;
                    ret_2=0;  
                    }
             }
          }              
  } 
   
  }