home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


Problema con Serratura Elettronica
     
Autore Messaggio opzioni
Alocin





postato il:
19.01.2021, alle ore 19:39
Problema con Serratura Elettronica 

Salve a tutti!

Come da titolo ho un "piccolo " perblema con una serratura elettronica, Spiego meglio : sono giorni che cerco di realizzare una serratura a codice utilizzando un PIC16F877A ed un Keypad a 16 tasti,per quanto riguarda la parte per riconoscere quale tasto sia stato premuto non ho problemi , mentre non riesco proprio a capire come fare per impostare un codice segreto per poi inserirlo tramite keypad e quindi aprire la serratura avevo provato con una banale soluzione ovvero sommare il peso numerico di ogni tasto che compone il mio codice e poi fare una verifica tra il valore prefissato ed il codice inserito, a primo avviso funzionava ma l`inconveniente stava nel fatto che sommando appunto il peso numerico di ogni cifra anche se le digitavo al contrario o a caso il valore e sepre lo stesso. questo e il codice che ho realizzato fino ad ora:
unsigned char colMask []=
{
0b11110111, // colonna 1 posta a massa
0b11111011, // colonna 2 posta a massa
0b11111101, // colonna 3 posta a massa
0b11111110 // colonna 4 posta a massa
};
unsigned char colScan = 0; // va da 0 a 3 per scansionare le colonne
unsigned char rowMask[]=
{
0b10000000,
0b01000000,
0b00100000,
0b00010000
};
unsigned char rowScan = 0;
char code = 192; // codice composto dal peso numerico delle cifre segrete piu il peso numerico del simbolo '*' "123*"
char somma = 0; // variabile per confrontare se il codice e esatto
////////////////////////49//52//55//42//50//53//56//48//51//54//57//35//65//66//67//68
unsigned char keys[] = {'1','4','7','*','2','5','8','0','3','6','9','#','A','B','C','D'};
unsigned char keypressed = 0; // peso numerico del pulsante premuto
char keyok; // flag di pulsante premuto
void setting();
void main(void) {
setting();
LCD_INIT();
__delay_ms(100);
LCD_CLEAR();
LCD_GOTO(1,1);
LCD_PUTS("SERRATURA");
LCD_GOTO(2,1);
LCD_PUTS("ELETTRONICA");
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
LCD_CLEAR();
keyok = 0;
ledok = 0;
ledno = 1;

while(1){

LCD_GOTO(1,1);
LCD_PUTS("INSERISCI CODICE");
LCD_GOTO(2,1);
LCD_PUTS("SERRATURA CHIUSA");
for(colScan = 0; colScan < 4; colScan++){ // porto a massa una colonna alla volta
PORTB = 0xFF; // porto ad 1 tutte le colonne
PORTB &=colMask[colScan]; // porto a 0 la colonna attuale
// mi controllo le righe
for(rowScan = 0; rowScan < 4; rowScan++){
if(!(PORTB & rowMask[rowScan])){ // riga rowScan trovata a massa
__delay_ms(50); // ritardo anti rimbalzo
if(!(PORTB & rowMask[rowScan])){
keypressed = rowScan +(4*colScan);
keyok = 1;
}
}
} // fine scansione righe
}// fine scansione colonne
if (keyok ) // è stato premuto un pulsante
{
somma = somma+keys[keypressed]; // sommo i pesi numerici di ogni tasto premuto
if(keys[keypressed]=='*'){ // quando premo * effettuo la comparazione tra codice e somma
if((code - somma)== 0){ // verifico se entrambi i valori sono uguali
ledok = 1;
ledno = 0;
LCD_CLEAR();
LCD_GOTO(1,1);
LCD_PUTS("CODICE ESATTO");
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
ledok = 0;
ledno = 1;
somma = 0;
}
else{
somma = 0;
}
}



keyok=0; // resetto il flag di pulsante premuto

// rimango in un ciclo continuo fino a che il pulsante non viene rilasciato
PORTB=0b11110000;
while(PORTB != 0b11110000)
{continue;}

}
}
return;
}


ovviamente la parte che interessa a me e solo come fare ad impostare un codice segreto per poi poter inserirlo tramite keypad per sbloccare la serratura.
Grazie in anticipo per le risposte.
saluti Alocin
rcc.roberto



[pagine pubblicate]

postato il:
19.01.2021, alle ore 20:12
Una cosa bella di Grix è la casella in alto a destra con vicino scritto -cerca- se provi a scriverci -serratura- escono una decina di articoli di serrature a codice... comincia a vedere se trovi qualcosa di interessante
Alocin





postato il:
19.01.2021, alle ore 20:34
rcc.roberto:
Una cosa bella di Grix è la casella in alto a destra con vicino scritto -cerca- se provi a scriverci -serratura- escono una decina di articoli di serrature a codice... comincia a vedere se trovi qualcosa di interessante


Grazie della dritta ma ci avevo gia provato senza trovare quello che serve a me
molti progetti interessanti ma non utili al mio scopo.
Wile





postato il:
19.01.2021, alle ore 21:39
http://www.grix.it/viewer.php?page=8742

http://www.grix.it/viewer.php?page=4980
Questo articolo l'ho pubblicato io, realmente come scritto ho solo copiato due progetti e messi insieme, pero' funzionano benissimo. Tu puoi usare solo quello della tastiera adattandolo alle tue esigenze.

http://www.grix.it/viewer.php?page=6229

http://www.grix.it/viewer.php?page=1681

Io con semplice ricerca 'tastiera' ho trovato questi, magari ce ne sono altri.....basta un po' di fantasia nel digitare le parole chiave di ricerca...



Alocin





postato il:
20.01.2021, alle ore 09:25
Grazie Wile

ho dato un occhiata a queste pagine e si sono come servono a me ma c`e un piccolo problemino, sono tutti in assembler o basic, ed io conosco solo il C ( L`assembler non l`ho mai capito), cerchero ancora con altre parole chiave.

Grazie mille della dritta.
gironico




una ogni 100 livelli


postato il:
20.01.2021, alle ore 09:46
questo lo ho scritto io, per come è il software puoi inserire 4 chiavi di accesso personalizzate con nume utente e visualizzare chi la ha usato per ultimo...

lo uso da anni

http://www.grix.it/viewer.php?page=12124



La vita è troppo breve per bere vini mediocri
Alocin





postato il:
20.01.2021, alle ore 13:08
gironico:
questo lo ho scritto io, per come è il software puoi inserire 4 chiavi di accesso personalizzate con nume utente e visualizzare chi la ha usato per ultimo...

lo uso da anni

http://www.grix.it/viewer.php?page=12124


Grazie Gironico, avevo notato il tuo articolo ,ma ho provato a scaricare il file ma non me lo legge mi dice che è impossibile leggere il file.
Non è che potresti inviarmi il file sorgente in privato?
Grazie mille!!
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale