Acionando LED com senha

Com uma senha configurada via pela programação e 5 teclas, você poderá acionar um LED para indicar que a senha foi digitada corretamente.

Dificuldade:

Montagem:

Programação:


Material Utilizado:

Arduino Uno

Cabo USB A para B

Protoboard 400

Resistor 330Ω

Resistor 10kΩ

Chave Tactil

LED Verde

Alguns Jumpers

A Montagem

O Sketch

//Quantidade de dígitos para a senha
#define DIGITOS 4  

//LED que irá indicar que a senha foi bem sucedida

#define ledSenhaOk 8 // Declara os botões 
#define b1 3
#define b2 4
#define b3 5
#define b4 6
#define b5 7

char
senha[DIGITOS]; //Cria um vetor com a quantidade de dígitos da senha
char
senhaCorreta[DIGITOS]={   '4','2','4','2'}; //Senha que o usuário irá ter que digitar ("4242")

void setup()
{   

Serial
.begin(9600); //Inicia comunicação serial   

pinMode
(b1, INPUT); //   
pinMode
(b2, INPUT); //   
pinMode(b3, INPUT); //   
pinMode
(b4, INPUT); //   
pinMode
(b5, INPUT); //   

pinMode
(ledSenhaOk, OUTPUT); //Led que Indica Senha correta   
digitalWrite
(ledSenhaOk,LOW);

}


void
loop()
{   

Serial
.print("Por Favor, digite a senha: "); //Imprime a mensagem para a digitação da senha   

leteclado(); //Chama a função para pegar a senha ("quatros digitos, nesse exemplo")   

int
ok=0; //Inicia uma variável para a validação do dígitos da senha   

for
(int j=0; j<DIGITOS; j++) //Para todos os dígitos da senha...   
{     
if(senha[j] == senhaCorreta[j]) //... compare com sua respectiva posição no vetor...     
{                               //... da senha desejada.       
ok++; //Válida o dígito da posição     
}   

}   

Serial.println();   
if(ok == DIGITOS) //Se todos os dígitos da senha digitada forem validados...   
{     
Serial
.println("Senha Correta!"); //...imprime a mensagem, "Senha Correta!"     
Serial
.println();     
digitalWrite
(ledSenhaOk,HIGH);     
while
(1);   
}   
else
  
{     
Serial
.println("Senha Incorreta!");//Se algum dos dígitos da senha digitada estiver incorreto...     
Serial
.println(); //...imprime a mensagem, "Senha Incorreta!"     
digitalWrite
(ledSenhaOk,LOW);     
delay
(500);     
digitalWrite(ledSenhaOk,HIGH);     
delay
(500);     
digitalWrite
(ledSenhaOk,LOW);   


}

// Função que faz a leitura das teclas do teclado

void
leteclado()
{   

int
i = 0; //Variável de contagem   
while
(i<DIGITOS) //Enquanto a quantidade de dígitos da senha não for alcançado   
{     
if (digitalRead(b1)== HIGH){       
senha[i] = '1';       
//Serial.print("1");
      
i++;       
while (digitalRead (b1) ==HIGH)      
{       
}     

}     

else
if (digitalRead(b2)== HIGH){       
senha[i] = '2';       
//Serial.print("2");
      
i++;       
while
(digitalRead (b2) ==HIGH)  
{       
}     

}     

else
if (digitalRead(b3)== HIGH){       
senha[i] = '3';       
//Serial.print("3");
       
i++;       
while
(digitalRead (b3) ==HIGH)      
{       
}     

}     

else
if (digitalRead(b4)== HIGH){       
senha[i] = '4';       
//Serial.print(senha[i]);       
i++;       
while
(digitalRead (b4) ==HIGH)       
{       
}     

}     

else if (digitalRead(b5)== HIGH){       
senha[i] = '5';       
//Serial.print("5");
      
i++;       
while
(digitalRead (b5) ==HIGH)      
{       
}     

}   

}

}