Página 1 de 1

Mikroc - Problema com lógica !!!!

MensagemEnviado: 20 Fev 2009 17:41
por gilliard
:D Olá Pessoal !!!! :D

Galera, estou com problemas para desenvolver uma lógica, para um projeto meu, vou explicar oque eu quero.

Eu estou fazendo um sistema de alarme, onde o alarme é acionado por uma senha, ok. Até aqui eu consegui fazer normalmente, mas minha dúvida é.....

Eu queria fazer o seguinte....
Caso o usuário digite errado a senha, eu quero que todo o sistema trave por 4 minutos, como se fosse um castigo.
Se caso o usuário tentar desligar a força da central de alarme, para tentar burlar o sistema, tentando zerar a contagem dos 4 minutos, o PINO RB7 que esta ligado no positivo, ele detecta automaticamente a falta de energia, e grava oque sobrou dos 4 minutos na EEPROM.

Digamos que o código abaixo seja o meu IF ELSE

Código: Selecionar todos
if{

Se correta Exibe no LCD

SENHA CORRETA

(Essa parte já fiz )

}

else{

( Falta essa parte )

Se errado ( da o castigo de 4 minutos
e vigia o pino RB7, para caso a força
for cortada, grava na EEPROM
o restante dos 4 minutos de castigo.

}


Como posso fazer isso ???? Eu utilizo o MikroC como compilador.

Se alguem utilizar MikroC, me ajudem com o código !!!!

Desde já, muito obrigado pessoal !!!!

MensagemEnviado: 20 Fev 2009 21:29
por AlexsanderM
gilliard:

bem pidão vc neh xD Olha eu não sei como gravar dados na EEPROM, posso estar enganado mas acho que o pic só vai poder "gravar" dados da forma que vc quer na FLASH dele.

Agora me diz uma coisa... se alguém estiver tentando burlar o sistema de segurança está mal intencionado. Então por que ser bonzinho com ele guardando um dado referente ao tempo que ainda falta para completar o "castigo" :P ? Entendeu oq eu qro dizer? Se o cara quer entrar a força, faça ele esperar mesmo! Não se preocupe gravando essemonte de dados na memória e sim fazendo ele esperar e esperar.

Daí fica mais fácil:

Se vc conseguir gravar/atualizar a FLASH dele durante o funcionamento, crie uma função global que antes de mais nada analize se a senha foi digitada erradamente anteriormente.. Tipo assim:

Código: Selecionar todos
[busca pelo bit na FLASH] {A senha foi digitada errada anteriormente (antes do desligamento) ??
}

se a resposta for sim >> desvie o programa para sua rotina de castigo.. pode ser até um delay_ms(24000);

se a resposta for não >> continue com o fluxo normal do programa e pergunte a senha de acesso

E claro, crie também nesta ordem, uma rotina pra setar akela flag que diz que a senha foi digitada errada e gravar tal bit na FLASH, para que no próximo boot, esse bit possa ser lido e comparado.


Espero ter ajudado ou pelo menos te dado uma idéia, e se vc conseguir algum resultado (principalmente escrever na FLASH hehe) poste aki!!

Vlw!
Alexsander

MensagemEnviado: 20 Fev 2009 21:42
por gilliard
Primeiramente gostaria de agradecer ao AlexsanderM.

E quero esclarecer que não sou pidão, apenas estou pedindo ajuda, que eu saiba, isso é um forum, foi feito para pedir ajuda !!!!

Mas pbrigado pela ajuda !!!!

Gilliard B. Santos

MensagemEnviado: 20 Fev 2009 21:55
por Renie
Olá Gilliard,

Na minha opinião, uma central de alarme não pode ter "castigo"!

Ainda mais em uma central de alarme, o usuário pode estar em
situação perigosa e precise ativar/desativar com urgência a mesma,
o nervosismo é um amigo do erro, isso pode levar a senhas erradas!

O mais usual em senhas erradas é a quantidade de tentativas, se
todas forem erradas, travar o usuário!

MensagemEnviado: 20 Fev 2009 23:25
por egb
Olá Giliard,

Tenho a mesma opnião do Renie sobre o funcionamento de uma central de alarme. Vou só pentelhar com minha opnião, mas não vou ajudar com o codigo :D mesmo porque você pediu ajuda na logica.
Suponha que seu alarme controle uma fechadura.
Primeiro seria importante que a fechadura se mantivesse fechada em caso de falta de energia.
Talvez fosse interessante ir gravando na EEPROM a quantidade de tentativas frustradas, assim, o fulano não conseguiria cortar e religar a alimentação para ter infinitas tentativas. Se atingir determinado numero de tentativas frustradas, um flag gravado na EEPROM indica que deve ser tomada uma atitude mais radical como acionar sirene ou bloquear o teclado, etc.
Ou então, como disse o Renie, pode-se utilizar usuário e senha no sistema.