Помогите пожалуйста новичку !!

manhetan
Offline
Зарегистрирован: 13.05.2016

Помогите пожалуйста новичку!

Как сделать задержку включения ledPin1?

Что бы при нажатии buttonPin1 проходило 10 сек. а только потом включался ledPin1 но ledPin2 включался сразу!!

 

 

 


#define ledPin1 11    //пин выхода LED1
#define ledPin2 12    //пин выхода LED2

#define buttonPin1 7  //пин кнопки 1
#define buttonPin2 8 //пин кнопки 2

unsigned long previousMillis1 = 0;      //храним время последнего Включения светодиода 1
unsigned long previousMillis2 = 0;      //храним время последнего Включения светодиода 2
unsigned long interval = 60000;         //интервал работы светодиодов 
unsigned long interva2 = 70000;         //интервал работы светодиодов 


void setup() 
{
  //задаем режим выхода для порта, подключенного к светодиоду
  pinMode(ledPin1, OUTPUT);     
  pinMode(ledPin2, OUTPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  digitalWrite(buttonPin1, LOW);
  digitalWrite(buttonPin2, LOW);
}

void loop()
{
  delay(10);

  //Нажимаем кнопку 1 - включаеться светодиод 1
  if (digitalRead(buttonPin1) == HIGH)
  {
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, HIGH);
    previousMillis1 = millis();
    previousMillis2 = millis();  // каждый раз при нажатии кнопки отсчёт отсрочки начинаеться сначала...
  }
  // Прошло время выключаем светодиод 1
  if(millis()-previousMillis1 >= interval) 
  {
    digitalWrite(ledPin1, LOW);
    }
  if(millis()-previousMillis2 >= interva2){  
    digitalWrite(ledPin2, LOW);
  }
  
  //Нажимаем кнопку 2 - включаеться светодиод 2
  if (digitalRead(buttonPin2) == HIGH)
  {
    digitalWrite(ledPin2, HIGH);
    previousMillis2 = millis(); // каждый раз при нажатии кнопки отсчёт отсрочки начинаеться сначала...
  }
  // Прошло время выключаем светодиод 2
  if(millis()-previousMillis2 >= interva2)
  {
    digitalWrite(ledPin2, LOW);
  }
}

 

James
Offline
Зарегистрирован: 26.02.2016

26 строчку нафиг, 

 после нажатия 1 кнопки - вкл 2 диод и считаешь 10 сек с помощью милисс

, потом зажигаешь 1й.

manhetan
Offline
Зарегистрирован: 13.05.2016

Что то с millis() у меня вообще беда !! Как посчитать эти 10 сек? КАК? 

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

manhetan пишет:

Что то с millis() у меня вообще беда !! Как посчитать эти 10 сек? КАК? 

класс титановый велосипед для delay без delay().

manhetan
Offline
Зарегистрирован: 13.05.2016
#define ledPin1 11    //пин выхода LED1
#define ledPin2 12    //пин выхода LED2

#define buttonPin1 7  //пин кнопки 1
#define buttonPin2 8 //пин кнопки 2

unsigned long previousMillis1 = 0;      //храним время последнего Включения светодиода 1
unsigned long previousMillis2 = 0;
      //храним время последнего Включения светодиода 2
unsigned long interval = 30000;         //интервал работы светодиодов 
unsigned long interva2 = 60000;
byte valA; //переменная времени
byte flagA;
int timer_on = 10;

   //интервал работы светодиодов 
   
void setup() 
{
  //задаем режим выхода для портов
  pinMode(ledPin1, OUTPUT);     
  pinMode(ledPin2, OUTPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  digitalWrite(buttonPin1, LOW);
  digitalWrite(buttonPin2, LOW);
}

void loop()
{ //Нажимаем кнопку 1 - включаеться светодиод 1
  if (digitalRead(buttonPin1) == HIGH)
  { flagA=1;
   digitalWrite(ledPin2, HIGH);
   previousMillis2 = millis();}
  if (flagA==1){
    if (millis() -previousMillis1 >1000)
    {
      previousMillis1 = millis();    
      valA++;                      
    }
  }
 
  if(valA>=timer_on)
  {
    digitalWrite(ledPin1,HIGH);
    valA=0;
    flagA=0;
    
    previousMillis1 = millis();// каждый раз при нажатии кнопки отсчёт отсрочки начинаеться сначала...
  }
  // Прошло время выключаем светодиод 1 и 2
  if(millis()-previousMillis1 >= interval){
    digitalWrite(ledPin1, LOW);
    }
  if(millis()-previousMillis2 >= interva2){  
    digitalWrite(ledPin2, LOW);
  }
  
  //Нажимаем кнопку 2 - включаеться светодиод 2
  if (digitalRead(buttonPin2) == HIGH)
  {
    digitalWrite(ledPin2, HIGH);
    previousMillis2 = millis(); // каждый раз при нажатии кнопки отсчёт отсрочки начинаеться сначала...
  }
  // Прошло время выключаем светодиод 2
  if(millis()-previousMillis2 >= interva2)
  {
    digitalWrite(ledPin2, LOW);
  }
}