Spiego cosa devo fare: premo il pulsante in pin8 ed avvio un ciclo per cui il led al pin2 si accende per 2 secondi, poi si spegne e dopo 2 secondi si accende il led al pin 3 per altri 2 secondi e si spegne anche quest'ultimo.
Bene ora per riavviare il ciclo come faccio?
non so se sbaglio qualcosa nella programmazione o mi manca a me qualche nozione...
ecco il codice:
#define LED1 2 // LED collegato al pin digitale 2
#define LED2 3 // LED collegato al pin digitale 3
#define BUTTON 8 // pin di input dove è collegato il pulsante
int val = 0; // si userà val per conservare lo stato del pin di input
int vecchio_val = 0; // si userà vecchio_val per conservare lo stato del pin di input al passo precedente
int stato = 0; // ricorda lo stato in cui si trova il led, stato = 0 led
int counter1 = 0;
int counter2 = 0;
void setup() {
pinMode(LED1, OUTPUT); // imposta il pin digitale come output
pinMode(LED2, OUTPUT); // imposta il pin digitale come output
pinMode(BUTTON, INPUT); // imposta il pin digitale come input
}
void loop() {
val = digitalRead(BUTTON); // legge il valore dell'input e lo conserva
if ((val == HIGH) && (vecchio_val == LOW)){ // controlla se è accaduto qualcosa a val
stato = 1 - stato;
delay(15); // attesa di 15 millisecondi
}
vecchio_val = val; // ricordiamo il valore precedente di val
if (stato == 1 && counter1 < 1) {
digitalWrite(LED1, HIGH); // accende il led 1
counter1 = counter1 + 1;
delay(2000);
digitalWrite(LED1, LOW);
delay(2000);
}
else {
digitalWrite(LED1, LOW); //spegne il led 1
}
if (stato == 1 && counter2 < 1) {
digitalWrite(LED2, HIGH); // accende il led 1
delay(2000);
counter2 = counter2 + 1;
digitalWrite(LED2, LOW);
delay(2000);
}
else {
digitalWrite(LED2, LOW); //spegne il led 1
}
}