Ви не увійшли.
вот уже получилось. очень спосибо renoshnik и Вячеслав Азаров.
int BUTTON1_PIN = 9;
int BUTTON2_PIN = 10;
int LED_PIN = 11;
unsigned long timer;
bool button1; //переменный состояний кнопок и леда
bool button2;
bool led;
bool button1_on; //флаг нажатия кнопки 1
void setup(){
pinMode(BUTTON1_PIN, INPUT);
pinMode(BUTTON2_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
button1 = digitalRead(BUTTON1_PIN); //считываются состояния кнопок и лампочки
button2 = digitalRead(BUTTON2_PIN);
led = digitalRead(LED_PIN);
if(button1 && !button1_on) { //если кнопка1 нажата, но флаг что она была нажата не стоит
button1_on = 1; //ставим флаг что кнопка нажата
delay(20); //ждем 20мс чтоб дребезг ушел
button1 = digitalRead(BUTTON1_PIN); //проверяем нажата ли кнопка все еще
if(button1){ //если таки нажата
timer = millis(); //засекаем текущее время, т.к. в изначальном условии есть флаг -
//оно засечется только в момент нажатия на кнопку
if(!led){digitalWrite(LED_PIN,HIGH);} //если лампочка не горит, то зажигаем ее
}}
if(!button1 && button1_on) {button1_on=0;
digitalWrite(LED_PIN,LOW);} // если кнопка отжата - снимаем флаг нажатия кнопки
//и отключаем лампочку
if(button2 && led){ //а тут тупо каждый цикл пока зажата кнопка 2 при горящем леде
timer = millis(); //будет обновляться время в таймере
}
if(button2 && button1 && !led){ //если кнупку2 нажали при удерживаемой 1 и потухшем леде
delay(20); //типа дребезг
button2 = digitalRead(BUTTON1_PIN); //проверяем кнопку2
if(button2){ //если нажата
digitalWrite(LED_PIN,HIGH);
timer = millis(); //подрубаем светодиод и засекаем время
}}
if(led && millis()-timer>10000){ // если лампочка горит и время не обновлялось более 10с
digitalWrite(LED_PIN,LOW); //выключаем лампочку
}
}
http://forum.arduino.ua/viewtopic.php?id=1279
Ну и что ? В чем трудности ?
Есть у меня две кнопки и нужно после обнуления таймера выключить светодиод.
0 0 - отжаты: светодиод выключен, 10 сек таймер обнулен
1 0 - кнопка1 нажата: включить светодиод и запустить 10 сек таймер.
Если 1 0 состояние менее 10сек - светодиод горит и таймер запущен.
Если 1 0 состояние более 10сек - светодиод отключается и таймер обнуляется.
Если 1 0 состояние стало 1 1 до 10сек - светодиод оставается вкл и таймер обнуляется (горит столько сколько обе нажаты).
Если 1 0 состояние стало 1 1 после 10сек - светодиод включается а таймер оставается обнуленным.
1 1 - кнопка1 и кнопка2 нажаты: светодиод горит и таймер обнулен.
Если 1 1 состояние стало 1 0 - таймер включается и после 10сек светодиод выключается.
Если 1 1 состояние стало 0 1 - светодиод отключается и таймер обнуляется.
0 1 - светодиод выключен, 10 сек таймер обнулен.
Если 0 1 состояние стало 0 0 - светодиод выключен, 10 сек таймер обнулен(тоест ничего не делать).
Если 0 1 состояние стало 1 1 - светодиод включается а таймер оставается обнуленным.