Ciao, sto utilizzando questo codice con il modulo in oggetto.
#include <Password.h>
int Q1 = 4;
int Q2 = 5;
int Q3 = 6;
int Q4 = 7;
int StD = 8;
int keypressed;
char result;
int pwdlvl = 0;
Password password = Password("8413");
void setup() {
Serial.begin(9600);
pinMode(Q1, INPUT);
pinMode(Q2, INPUT);
pinMode(Q3, INPUT);
pinMode(Q4, INPUT);
pinMode(StD, INPUT);
}
void loop() {
int toneHeard = digitalRead(StD);
if (toneHeard == HIGH) {
delay(250);
keypressed = interpret();
Serial.write(keypressed);
password.append(keypressed);
pwdlvl++;
if (pwdlvl == 4){
Serial.println();
Serial.print("Guessing password... ");
delay(500);
if (password.evaluate()){
Serial.println("Valid Password");
password.reset(); /*Reset appended password*/
pwdlvl = 0; /*Reset the number of appended digits to 0*/
}
else {
Serial.println("Invalid Password");
password.reset(); /*Reset appended password*/
pwdlvl = 0; /*Reset the number of appended digits to 0*/
}
}
}
delay(1);
}
int interpret() {
int Q1State = digitalRead(Q1);
int Q2State = digitalRead(Q2);
int Q3State = digitalRead(Q3);
int Q4State = digitalRead(Q4);
if (Q1State == HIGH && Q2State == LOW && Q3State == LOW && Q4State == LOW){result = '1' ;}
if (Q1State == LOW && Q2State == HIGH && Q3State == LOW && Q4State == LOW){result = '2' ;}
if (Q1State == HIGH && Q2State == HIGH && Q3State == LOW && Q4State == LOW){result = '3' ;}
if (Q1State == LOW && Q2State == LOW && Q3State == HIGH && Q4State == LOW){result = '4' ;}
if (Q1State == HIGH && Q2State == LOW && Q3State == HIGH && Q4State == LOW){result = '5' ;}
if (Q1State == LOW && Q2State == HIGH && Q3State == HIGH && Q4State == LOW){result = '6' ;}
if (Q1State == HIGH && Q2State == HIGH && Q3State == HIGH && Q4State == LOW){result = '7' ;}
if (Q1State == LOW && Q2State == LOW && Q3State == LOW && Q4State == HIGH){result = '8' ;}
if (Q1State == HIGH && Q2State == LOW && Q3State == LOW && Q4State == HIGH){result = '9' ;}
if (Q1State == LOW && Q2State == HIGH && Q3State == LOW && Q4State == HIGH){result = '0' ;}
return result;
}
Funziona bene, ma vorrei che il reset della password avvenisse entro tot secondi indipendentemente dal fatto che si stia digitando la password corretta o meno. In altre parole, vorrei che ci fosse un tempo determinato per digitare la password prima che avvenga il reset automatico.
Potete darmi una dritta? Grazie per l'attenzione.