Ir ao conteúdo
  • Cadastre-se

Criar funçao para nova senha, projeto fechadura digital.


jorgeletronico

Posts recomendados

Ola galera,estou programando uma fechadura digital,ja fiz a logica de leitura de senha e verificaçao.Consiste em receber em um vetor a senha q é digitada no teclado e apos pressionado * verificar se é igual a senha salva na memoria

Esta parte tranquilo.Agora qro bolar uma logica para trocar senha,e salvar memoria eeprom,porém somente se inserir a senha master.Alguem ai tem uma ideia,andei tentando umas aqui mais nao ficaram muito boas.Pode ser o pseudo codigo mesmo,depois passo para c.

Link para o comentário
Compartilhar em outros sites

tá e irmão,porque esperar ate segunda ne kkkkkkkkkk


#include <16F628A.h> //O PIC utilizado, obrigatório!
#fuses intrc_io, nowdt, noprotect, put, nobrownout, nomclr, nolvp, nocpd
#define col1 pin_a0 //coluna a0 a a2
#define col2 pin_a1
#define col3 pin_a2
#define lin1 pin_a3// linhas
#define lin2 pin_a4
#define lin3 pin_a6
#define lin4 pin_a7
#define rele pin_b2
#use delay(clock=4000000)
#include <flex_lcd.c>
//variaveis globais
int16 q=0;

unsigned int8 teclado (void){
output_low(col1);
output_high(col2);
output_high(col3);
delay_ms(10);
if(!input(lin1)){
return 1;
}else if(!input(lin2)){
return 4;
}else if(!input(lin3)){
return 7;
}else if(!input(lin4)){
return 11;//*
}
output_high(col1);
output_low(col2);
output_high(col3);
delay_ms(10);
if(!input(lin1)){
return 2;
}else if(!input(lin2)){
return 5;
}else if(!input(lin3)){
return 8;
}else if(!input(lin4)){
return 0;
}
output_high(col1);
output_high(col2);
output_low(col3);
delay_ms(10);
if(!input(lin1)){
return 3;
}else if(!input(lin2)){
return 6;
}else if(!input(lin3)){
return 9;
}else if(!input(lin4)){
return 12;//#
}
return 255;
}
void bipe(){
output_toggle(pin_b3);
delay_ms(75);
output_toggle(pin_b3);
}
#int_TIMER1
void temp1s(void)
{
q++;
set_timer1 (3036); //Preload do Timer1
}

void main(){
unsigned int32 nova[3];
unsigned int32 master[3];
unsigned int32 senha[3];
unsigned int32 senha1[3];
int x=1,i=0,j=0,y=0,tentativas=0,block=0,trava=0;
int aux=0,layout,w=0,trava1=0;
unsigned int8 tecla;
lcd_init();
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8); //Configurao do Timer1 para clock interno = 1E6 dividido por 8
set_timer1 (3036);
enable_interrupts(INT_TIMER1); //Habilita interrupo timer1
enable_interrupts(global);

senha[0]=1;
senha[1]=2;
senha[2]=3;
master[0]=4;
master[1]=5;
master[2]=6;
write_eeprom(0,senha[0]);
write_eeprom(1,senha[1]);
write_eeprom(2,senha[2]);
write_eeprom(3,master[0]);
write_eeprom(4,master[1]);
write_eeprom(5,master[2]);
layout=1;

while(true){
tecla=teclado();
if(layout==1){
if(block==1){
lcd_putc("\p\f Senha Master");}
else{
lcd_putc("\p\fDIGITE SENHA + *");
delay_ms(150);
}
}
if(x==1){
if((tecla!=255)&&(tecla!=12)){
bipe();
trava1=1;
layout=0;
nova[i]=tecla;
senha1[i]=tecla;
if(i>3){
i=0;
x=0;
trava1=0;
trava=0;
}

i++;
lcd_gotoxy(6+i,2);
lcd_putc("*");
delay_ms(200);
}
}
if(tecla==11){
delay_ms(50);
if(block==1){
layout=0;
x=0;
lcd_putc("\fTranca Bloqueada");
delay_ms(1000);
lcd_putc("\finsira senha\n master + #");
delay_ms(1000);
lcd_putc("\fpara desbloqueio");
delay_ms(1000);
aux=0;
i=0;
w=1;
x=1;
layout=1;
trava=1;
tentativas=0;
}
}
if((tecla==11)&&(trava==0)){
delay_ms(50);
for(j=0;j<3;j++){
if(senha1[j]==read_eeprom(j)){
aux++;
}
if(aux==3){
lcd_putc("\p\f BEM\n VINDO!");
delay_ms(1000);
lcd_putc("\f Senha valida");
delay_ms(1000);
lcd_putc("\f Acesso \n permitido*****");
delay_ms(1000);
output_high(rele);
delay_ms(1000);
output_low(rele);
aux=0;
i=0;
w=1;
x=1;
layout=1;
tentativas=0;
}
}

if((aux!=3)&&(w==0)){
lcd_putc("\f Senha invalida");
delay_ms(1000);
lcd_putc("\fInsira a senha\nnovamente");
delay_ms(1000);
aux=0;
i=0;
j=0;
x=1;
layout=1;
tentativas++;
}
w=0;
}
if(tentativas==3){

lcd_putc("\f Tentativas\n excedidas!");
delay_ms(1000);
lcd_putc("\fPorta \n bloqueada!");
delay_ms(1000);
lcd_putc("\fInsira senha \nMaster + #");
delay_ms(1000);
block=1;
trava=1;
trava1=0;
bipe();
delay_ms(1000);
output_high(pin_b3);
// delay_ms(100);
// bipe();
// delay_ms(100);
// bipe();
// delay_ms(100);
// bipe();
// delay_ms(100);
// bipe();
// delay_ms(100);
// bipe();
// delay_ms(3000);
layout=1;
tentativas=0;
aux=0;
}
if(tecla==12){
layout=0;
y=1;}
if(y==1){
delay_ms(50);
for(j=0;j<3;j++){
if(senha1[j]==read_eeprom(3+j)){
aux++;
}
if(aux==3){
x=0;
lcd_putc("\fPorta desbloqueada");
delay_ms(1000);
lcd_putc("\finsira novamente\n a senha");
delay_ms(700);
output_low(pin_b3);
aux=0;
i=0;
w=1;
x=1;
layout=1;
block=0;
tentativas=0;
trava=0;
}
}

if((aux!=3)&&(w==0)){
lcd_putc("\f Senha Master\n Incorreta");
delay_ms(1000);
lcd_putc("\fAcesso restrito");
delay_ms(1000);
aux=0;
i=0;
j=0;
x=1;
layout=1;
}
w=0;


y=0;
}

}
}









Link para o comentário
Compartilhar em outros sites

tá e irmão,porque esperar ate segunda ne kkkkkkkkkk


#include <16F628A.h> //O PIC utilizado, obrigatório!
#fuses intrc_io, nowdt, noprotect, put, nobrownout, nomclr, nolvp, nocpd
#define col1 pin_a0 //coluna a0 a a2
#define col2 pin_a1
#define col3 pin_a2
#define lin1 pin_a3// linhas
#define lin2 pin_a4
#define lin3 pin_a6
#define lin4 pin_a7
#define rele pin_b2
#use delay(clock=4000000)
#include <flex_lcd.c>
//variaveis globais
int16 q=0;

unsigned int8 teclado (void){
output_low(col1);
output_high(col2);
output_high(col3);
delay_ms(10);
if(!input(lin1)){
return 1;
}else if(!input(lin2)){
return 4;
}else if(!input(lin3)){
return 7;
}else if(!input(lin4)){
return 11;//*
}
output_high(col1);
output_low(col2);
output_high(col3);
delay_ms(10);
if(!input(lin1)){
return 2;
}else if(!input(lin2)){
return 5;
}else if(!input(lin3)){
return 8;
}else if(!input(lin4)){
return 0;
}
output_high(col1);
output_high(col2);
output_low(col3);
delay_ms(10);
if(!input(lin1)){
return 3;
}else if(!input(lin2)){
return 6;
}else if(!input(lin3)){
return 9;
}else if(!input(lin4)){
return 12;//#
}
return 255;
}
void bipe(){
output_toggle(pin_b3);
delay_ms(75);
output_toggle(pin_b3);
}
#int_TIMER1
void temp1s(void)
{
q++;
set_timer1 (3036); //Preload do Timer1
}

void main(){
unsigned int32 nova[3];
unsigned int32 master[3];
unsigned int32 senha[3];
unsigned int32 senha1[3];
int x=1,i=0,j=0,y=0,tentativas=0,block=0,trava=0;
int aux=0,layout,w=0,trava1=0;
unsigned int8 tecla;
lcd_init();
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8); //Configurao do Timer1 para clock interno = 1E6 dividido por 8
set_timer1 (3036);
enable_interrupts(INT_TIMER1); //Habilita interrupo timer1
enable_interrupts(global);

senha[0]=1;
senha[1]=2;
senha[2]=3;
master[0]=4;
master[1]=5;
master[2]=6;
write_eeprom(0,senha[0]);
write_eeprom(1,senha[1]);
write_eeprom(2,senha[2]);
write_eeprom(3,master[0]);
write_eeprom(4,master[1]);
write_eeprom(5,master[2]);
layout=1;

while(true){
tecla=teclado();
if(layout==1){
if(block==1){
lcd_putc("\p\f Senha Master");}
else{
lcd_putc("\p\fDIGITE SENHA + *");
delay_ms(150);
}
}
if(x==1){
if((tecla!=255)&&(tecla!=12)){
bipe();
trava1=1;
layout=0;
nova[i]=tecla;
senha1[i]=tecla;
if(i>3){
i=0;
x=0;
trava1=0;
trava=0;
}

i++;
lcd_gotoxy(6+i,2);
lcd_putc("*");
delay_ms(200);
}
}
if(tecla==11){
delay_ms(50);
if(block==1){
layout=0;
x=0;
lcd_putc("\fTranca Bloqueada");
delay_ms(1000);
lcd_putc("\finsira senha\n master + #");
delay_ms(1000);
lcd_putc("\fpara desbloqueio");
delay_ms(1000);
aux=0;
i=0;
w=1;
x=1;
layout=1;
trava=1;
tentativas=0;
}
}
if((tecla==11)&&(trava==0)){
delay_ms(50);
for(j=0;j<3;j++){
if(senha1[j]==read_eeprom(j)){
aux++;
}
if(aux==3){
lcd_putc("\p\f BEM\n VINDO!");
delay_ms(1000);
lcd_putc("\f Senha valida");
delay_ms(1000);
lcd_putc("\f Acesso \n permitido*****");
delay_ms(1000);
output_high(rele);
delay_ms(1000);
output_low(rele);
aux=0;
i=0;
w=1;
x=1;
layout=1;
tentativas=0;
}
}

if((aux!=3)&&(w==0)){
lcd_putc("\f Senha invalida");
delay_ms(1000);
lcd_putc("\fInsira a senha\nnovamente");
delay_ms(1000);
aux=0;
i=0;
j=0;
x=1;
layout=1;
tentativas++;
}
w=0;
}
if(tentativas==3){

lcd_putc("\f Tentativas\n excedidas!");
delay_ms(1000);
lcd_putc("\fPorta \n bloqueada!");
delay_ms(1000);
lcd_putc("\fInsira senha \nMaster + #");
delay_ms(1000);
block=1;
trava=1;
trava1=0;
bipe();
delay_ms(1000);
output_high(pin_b3);
// delay_ms(100);
// bipe();
// delay_ms(100);
// bipe();
// delay_ms(100);
// bipe();
// delay_ms(100);
// bipe();
// delay_ms(100);
// bipe();
// delay_ms(3000);
layout=1;
tentativas=0;
aux=0;
}
if(tecla==12){
layout=0;
y=1;}
if(y==1){
delay_ms(50);
for(j=0;j<3;j++){
if(senha1[j]==read_eeprom(3+j)){
aux++;
}
if(aux==3){
x=0;
lcd_putc("\fPorta desbloqueada");
delay_ms(1000);
lcd_putc("\finsira novamente\n a senha");
delay_ms(700);
output_low(pin_b3);
aux=0;
i=0;
w=1;
x=1;
layout=1;
block=0;
tentativas=0;
trava=0;
}
}

if((aux!=3)&&(w==0)){
lcd_putc("\f Senha Master\n Incorreta");
delay_ms(1000);
lcd_putc("\fAcesso restrito");
delay_ms(1000);
aux=0;
i=0;
j=0;
x=1;
layout=1;
}
w=0;


y=0;
}

}
}









tem como manda o circuito?? fica mais fácil porque já testo direto no proteus

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!