Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Codigo Cofre 2
Codigo Cofre 2
h>
#include <Servo.h>
#include <EEPROM.h>
//pinos do lcd
//pino servo
Servo fechadura;
//endereço de contagens
byte tentativas = 0;
void setup() {
lcd.begin(16, 2);
fechadura.attach(A0);
//linhas do teclado
pinMode(linha0, INPUT_PULLUP);
pinMode(linha1, INPUT_PULLUP);
pinMode(linha2, INPUT_PULLUP);
pinMode(linha3, INPUT_PULLUP);
//colunas do teclado
pinMode(coluna0, OUTPUT);
pinMode(coluna1, OUTPUT);
pinMode(coluna2, OUTPUT);
pinMode(coluna3, OUTPUT);
trancar(true);
apresentacao();
void loop() {
MenuInicial();
//***********FUNÇÕES***********
void teclado() {
byte x = 0;
while (x < 4) {
if (x == 0) {
digitalWrite(coluna0, LOW);
digitalWrite(coluna1, HIGH);
digitalWrite(coluna2, HIGH);
digitalWrite(coluna3, HIGH);
if (!digitalRead(linha0)) {
if (!digitalRead(linha1)) {
if (!digitalRead(linha2)) {
if (!digitalRead(linha3)) {
if (x == 1) {
digitalWrite(coluna0, HIGH);
digitalWrite(coluna1, LOW);
digitalWrite(coluna2, HIGH);
digitalWrite(coluna3, HIGH);
if (!digitalRead(linha0)) {
if (!digitalRead(linha1)) {
if (!digitalRead(linha2)) {
if (!digitalRead(linha3)) {
if (x == 2) {
digitalWrite(coluna0, HIGH);
digitalWrite(coluna1, HIGH);
digitalWrite(coluna2, LOW);
digitalWrite(coluna3, HIGH);
if (!digitalRead(linha0)) {
if (!digitalRead(linha1)) {
if (!digitalRead(linha2)) {
if (!digitalRead(linha3)) {
if (x == 3) {
digitalWrite(coluna0, HIGH);
digitalWrite(coluna1, HIGH);
digitalWrite(coluna2, HIGH);
digitalWrite(coluna3, LOW);
if (!digitalRead(linha0)) {
tecla = 'A'; return;
if (!digitalRead(linha1)) {
if (!digitalRead(linha2)) {
if (!digitalRead(linha3)) {
x++;
tecla = 's';
void MenuInicial() {
lcd.clear();
lcd.home();
lcd.print("Menu Inicial");
lcd.setCursor(0, 1);
lcd.print(header);
while (true) {
if (press) {
if (press == 'A') {
lcd.setCursor(0, 1);
lcd.blink();
delay(150);
lcd.noBlink();
MenuAbrirCofre();
break;
lcd.setCursor(4, 1);
lcd.blink();
delay(150);
lcd.noBlink();
MenuCadastrarSenha();
break;
lcd.setCursor(8, 1);
lcd.blink();
delay(150);
lcd.noBlink();
MenuLogAcesso();
break;
bateria();
break;
trancar(true);
break;
tecla = 0;
}
void MenuAbrirCofre() {
Senha1:
byte i = 0;
lcd.clear();
lcd.home();
lcd.print("Menu Abertura");
lcd.setCursor(0, 1);
lcd.cursor();
char press;
byte x = 0;
while (x < 4) {
press = ReceberTecla();
delay(30);
if (VerificarTecla(press, 'l')) {
if (press == 'D') {
goto Senha1;
if (press == '*') {
lcd.noCursor();
senha_cadastrada = "";
MenuInicial();
if (!VerificarTecla(press, 'l')) {
temp_senha += press;
lcd.print(press);
delay(50);
lcd.setCursor(i, 1);
lcd.print("");
lcd.print('*');
x++;
i++;
press = ReceberTecla();
if (press == '#') {
lcd.clear();
if (temp_senha == senha_cadastrada) {
lcd.print("ABERTO");
EEPROM.write(addr, ++contAbertura);
trancar(false);
lcd.noCursor();
delay(500);
else {
lcd.print("ERRADA");
trancar(true);
lcd.noCursor();
delay(500);
tentativas++;
if (tentativas == 3) {
Senha:
lcd.clear();
lcd.print("Senha Mestre:");
lcd.setCursor(0, 1);
lcd.cursor();
char press;
byte i = 0;
byte x = 0;
while (x < 4) {
press = ReceberTecla();
delay(30);
if (!VerificarTecla(press, 'l')) {
run_senha += press;
lcd.print(press);
delay(50);
lcd.setCursor(i, 1);
lcd.print("");
lcd.print('*');
x++;
i++;
lcd.noCursor();
goto Senha;
if (run_senha == senha_mestre) {
tentativas = 0;
lcd.noCursor();
MenuInicial();
else{
goto Senha;
}
}
goto Senha1;
void MenuCadastrarSenha() {
lcd.clear();
lcd.print("CADASTRAR SENHA");
delay(500);
Senha:
senha_cadastrada = "";
lcd.clear();
lcd.print("Senha Mestre:");
lcd.setCursor(0, 1);
lcd.cursor();
char press;
byte i = 0;
byte x = 0;
while (x < 4) {
press = ReceberTecla();
delay(30);
if (!VerificarTecla(press, 'l')) {
run_senha += press;
lcd.print(press);
delay(50);
lcd.setCursor(i, 1);
lcd.print("");
lcd.print('*');
x++;
i++;
lcd.noCursor();
goto Senha;
lcd.noCursor();
senha_cadastrada = "";
MenuInicial();
if (run_senha == senha_mestre) {
EEPROM.write(addr2, ++contMestre);
Senha1:
senha_cadastrada = "";
lcd.clear();
lcd.print("Nova senha:");
lcd.setCursor(0, 1);
lcd.cursor();
char press;
byte i = 0;
byte x = 0;
while (x < 4) {
press = ReceberTecla();
delay(30);
if (!VerificarTecla(press, 'l')) {
senha_cadastrada += press;
lcd.print(press);
delay(50);
lcd.setCursor(i, 1);
lcd.print("");
lcd.print('*');
x++;
i++;
lcd.noCursor();
goto Senha1;
lcd.noCursor();
senha_cadastrada = "";
MenuInicial();
lcd.noCursor();
lcd.blink();
press = ReceberTecla();
if (press == '#') {
lcd.clear();
lcd.print("CADASTRADA");
lcd.noBlink();
delay(500);
else {
lcd.clear();
lcd.print("Senha incorreta");
lcd.noBlink();
delay(500);
void MenuLogAcesso() {
lcd.clear();
lcd.print("Acessos: ");
lcd.print(contAbertura);
lcd.setCursor(0, 1);
lcd.print("Mestre: ");
lcd.print(contMestre);
delay(4000);
char ReceberTecla() {
while (true) {
teclado();
teclado();
teclado();
delay(50);
return tecla;
if (modo == 'n') {
if (nums.indexOf(val) != -1)
return true;
else
return false;
if (letters.indexOf(val) != -1)
return true;
else
return false;
if (estado)
fechadura.write(180);
else
fechadura.write(90);
void apresentacao() {
lcd.setCursor(0, 0);
lcd.print("Centro Universit.");
lcd.setCursor(0, 1);
lcd.print("Eniac");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Engenharia da");
lcd.setCursor(0, 1);
lcd.print("Computacao");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistemas");
lcd.setCursor(0, 1);
lcd.print("Embarcados");
delay(2000);
lcd.setCursor(0, 0);
lcd.print("Felipe Barreiros");
lcd.setCursor(0, 1);
lcd.print("200652017");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Janayna Ribeiro");
lcd.setCursor(0, 1);
lcd.print("224512017");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Israel Souza");
lcd.setCursor(0, 1);
lcd.print("218782017");
delay(2000);
lcd.clear();
}
void bateria() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(0.0087976539589443 * analogRead(A1));
lcd.setCursor(14, 1);
lcd.print("*R");
delay(4000);