Salve a tutti signori,
mi sto cimentando nel mio primo progettino arduino che consiste in un dispositivo countdown a led (ogni tot secondi si spegne un led) fino allo scadere del tempo che fa suonare un buzzer. per spegnerlo c'è un terminale che quando inserito nel connettore da la possibilità di disattivare il timer mediande combinazione e la pressione di un tasto.
Per ora sono riuscito a realizzare il countdown ed avvio con pressione del tasto ma ho difficoltà con il terminale. Ora.
- il terminale da segnale al tester quindi i cablaggi sono corretti ma non riesco a farlo andare. potreste darmi una mano con il codice cosi da farmi imparare meglio?
vi incollo di seguito quando scritto finora.
-la combinazione sul terminale è data da dei commutatori rotativi in serie.
Quello che vorrei ottenere è:
armato il dispositivo ( che sarà una bomba sonora per softair) e premuto il pulsante sulla centralina parte il countdown.
quando i giocatori riusciranno a raggiungere il dispositivo con il terminale lo inseriscono nel connettore e dovranno inserire la combinazione (che non è altro che il passaggio in serie della corrente che alimenta arduino destinata ad un pin) e poi premere il pulsante.
Se tutto è corretto si deve spegnere tutto,mentre se è errato il countdown accelera per 2 volte al terzo tentativo di pressione errata del pulsante il buzzer suona.
La combinazione è sul pin 11
il pulsante del terminale è sul 12.
ecco il codice scritto finora:
const int PulsanteCentralina = 10;
const int led1rosso = 9;
const int led2rosso = 8;
const int led1giallo = 5;
const int led2giallo = 6;
const int led1verde = 3;
const int led2verde = 4;
const int ledARMED = 2;
const int ledDISARMED = 1;
const int Buzzer = 13;
const int Combinazione = 11;
const int PulsanteTerminale = 12;
//dichiarazione variabili. stato pulsante e buzzer.
int old_statopulsante = 0;
int old_statopulsanteterminale = 0;
int statopulsante = 0;
int statoled = 0;
int statobuzzer = 0;
int statocombinazione = 0;
int statopulsanteterminale = 0;
int CombinazioneIN = 0;
void setup () {
//definisco i pin di output
pinMode(led1verde, OUTPUT);
pinMode(led2verde, OUTPUT);
pinMode(led1giallo, OUTPUT);
pinMode(led2giallo, OUTPUT);
pinMode(led1rosso, OUTPUT);
pinMode(led2rosso, OUTPUT);
pinMode(ledARMED, OUTPUT);
pinMode(ledDISARMED, OUTPUT);
pinMode(Buzzer, OUTPUT);
//definisco i pin di input
pinMode(PulsanteCentralina, INPUT);
pinMode(PulsanteTerminale, INPUT);
pinMode(Combinazione, INPUT);
}
void loop(){
digitalWrite(ledDISARMED, HIGH);
statopulsante = digitalRead(PulsanteCentralina); //Lettura stato pulsante
//se il pulsante è premuto lo stato è HIGH e avvia il ciclo
if ((statopulsante == HIGH) && (old_statopulsante == LOW)){
statopulsante = 1 ;
delay(10);
}
//old_statopulsante = statopulsante - statopulsante;
if (statopulsante == 1) { //accendo tutti i led ed inizio il countdown
delay(5000);
digitalWrite(ledDISARMED, LOW);
digitalWrite(led1rosso, HIGH);
digitalWrite(led2rosso, HIGH);
digitalWrite(led1giallo, HIGH);
digitalWrite(led2giallo, HIGH);
digitalWrite(led1verde, HIGH);
digitalWrite(led2verde, HIGH);
digitalWrite(ledARMED, HIGH);
//countdown totale minuti 1
delay(10000);
digitalWrite(led1verde, LOW);
delay(10000);
digitalWrite(led2verde, LOW);
delay(10000);
digitalWrite(led1giallo, LOW);
delay(10000);
digitalWrite(led2giallo, LOW);
delay(10000);
digitalWrite(led1rosso, LOW);
delay(10000);
digitalWrite(led2rosso, LOW);
delay(250);
digitalWrite(Buzzer, HIGH);
delay(1000);
digitalWrite(Buzzer, LOW);
delay(500);
digitalWrite(Buzzer, HIGH);
delay(1000);
digitalWrite(Buzzer, LOW);
delay(500);
digitalWrite(Buzzer, HIGH);
delay(3000);
digitalWrite(Buzzer, LOW);
delay(500);
} else {
digitalWrite(ledDISARMED, LOW);
digitalWrite(ledARMED, LOW);
}
//tentativo inserimento pulsante. eliminiare da qua sotto per ripristinare il codice.
statopulsanteterminale = digitalRead(PulsanteTerminale); //Lettura stato pulsante terminale
//se il pulsante è premuto blocca il countdown
if ((statopulsanteterminale == LOW) && (old_statopulsanteterminale == LOW)){
statopulsanteterminale = 0 ;
delay(10);
}
if (statopulsanteterminale, == 0) {
} else {
digitalWrite(ledDISARMED, HIGH);
digitalWrite(led1rosso, LOW);
digitalWrite(led2rosso, LOW);
digitalWrite(led1giallo, LOW);
digitalWrite(led2giallo, LOW);
digitalWrite(led1verde, LOW);
digitalWrite(led2verde, LOW);
digitalWrite(ledARMED, LOW);
} //eliminare questa graffa e lasciare quella sotto per ripristinare il codice.
}
edit by mod: per favore includi il codice usando gli appositi tag
potete darmi qualche dritta? non riesco a fargli sentire il terminale.
grazie in anticipo