Publicado em Sem categoria

Homework – Make a program key with Arduino

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

Autor:

Prof. Dr. Cristiano Amaral