Professor, bom dia!
Segue abaixo o sketch do projeto e em anexo o vídeo solicitado sobre a trava eletrônica.
#define leitura A0
#define ledVerde 9
#define ledAzul 11
#define ledVerm 13
//Escolhendo a senha
int digitos = 6; //Numeros de digitos da senha
int senha[6] = {1,2,3,4,5,6}; //Colocar novamente o numero dentro dos [] e escrever a senha nos {}
int senha2[6]; //Colocar novamente o numero dentro dos []
int tempoSafe = 1; //Tempo (em minutos) de bloqueio
int botao, valor, resultado = 0, erros = 0, x, z;
void setup() {
pinMode(9, OUTPUT);
pinMode(11, OUTPUT);
pinMode(13, OUTPUT);
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop() {
//Leitura do que for digitado
for(x = 0; x < digitos; x++){
senha2[x] = botoes();
if(senha2[x] == 10){ x = x – 1; }
else{
Serial.print(senha2[x]);
if(x < digitos – 1){ Serial.print(” – “); }
delay(500);
}
digitalWrite(ledAzul, LOW);
}
//Comparacao com a senha escolhida
for(x = 0; x < digitos; x++){
if(senha[x] == senha2[x]){ resultado = resultado + 1; }
}
//Resultado final
if(resultado == digitos){
Serial.println();
Serial.println(“Acertou”);
Serial.println();
erros = 0;
digitalWrite(ledVerde, HIGH);
delay(1000);
digitalWrite(ledVerde, LOW);
}
else{
Serial.println();
Serial.println(“Errou”);
Serial.println();
erros = erros + 1;
digitalWrite(ledVerm, HIGH);
delay(1000);
digitalWrite(ledVerm, LOW);
}
if(erros == 3){ seguranca(); }
resultado = 0;
}
//Funcao de leitura dos digitos
int botoes() {
digitalWrite(11, HIGH);
valor = analogRead(leitura);
if(valor > 99 && valor < 105){ botao = 1; }
else if(valor > 109 && valor < 115){ botao = 2; }
else if(valor > 124 && valor < 130){ botao = 3; }
else if(valor > 140 && valor < 148){ botao = 4; }
else if(valor > 165 && valor < 172){ botao = 5; }
else if(valor > 200 && valor < 205){ botao = 6; }
else if(valor > 250 && valor < 255){ botao = 7; }
else if(valor > 335 && valor < 340){ botao = 8; }
else if(valor > 507 && valor < 512){ botao = 9; }
else if(valor > 900){ botao = 0; }
else if(valor == 0){ botao = 10; }
return botao;
}
//Bloqueio em caso de muitas tentativas
void seguranca() {
Serial.print(“Bloqueado por “);
Serial.print(tempoSafe);
if(tempoSafe == 1){ Serial.println(” minuto”); }
if(tempoSafe > 1){ Serial.println(” minutos”); }
Serial.println();
for(z = 0; z < tempoSafe*15; z++){
digitalWrite(ledVerm, HIGH);
delay(500);
digitalWrite(ledVerm, LOW);
delay(500);
}
erros = 0;
}
Ivo Lima de Moraes