Помогите пожалуйста новичку !!
- Войдите на сайт для отправки комментариев
Пт, 13/05/2016 - 22:27
Помогите пожалуйста новичку!
Как сделать задержку включения 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);
}
}
26 строчку нафиг,
после нажатия 1 кнопки - вкл 2 диод и считаешь 10 сек с помощью милисс
, потом зажигаешь 1й.
Что то с millis() у меня вообще беда !! Как посчитать эти 10 сек? КАК?
Что то с millis() у меня вообще беда !! Как посчитать эти 10 сек? КАК?
класс титановый велосипед для delay без delay().
#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); } }