Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier. Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer. Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens). Les pages seront ajoutées ou modifiées petit à petit. Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater. Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr . Tout message reçoit une réponse Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche Pour laisser un message, allez dans le "LIVRE D'OR" Bonne visite
Serrure codée avec clavier matricé picaxe 14M2
Cette page répond à la question de dudulle76120 sur un forum d'électronique. J'ai proposé cette solution picaxe 14M2 utilisant la gestion "économique" vue sur cette page.
cahier des charges : Les codes sont introduits par un clavier 12 ou 16 touches. La clé est une suite de quatre caractères (nombres ou symboles du clavier). Initialisation par poussoir. La clé est introduite en mémoire EEPROM (non effacée hors alimentation). Relance du programme avec la nouvelle clé à la fin de la séquence d'introduction du code. En cas d'abandon de procédure, relance au bout d'un temps défini (Ex 6s) et reprise de l'ancienne clé. Les actions sont signalées par différents beeps sur buzzer piezzo. La clé actionne un relais pour activer une gâche électrique par ex. temps de fonctionnement réglable par potentiomètre.
Le schéma:
Pour un clavier 16 touches, la colonne 4 sera connectée à la broche B.4 (voir code en annexe). La sortie est ici sur B.0, pourrait être sur B.5 ou C.2. La led jaune est en option, les beep peuvent suffire. En cas de programmation hors site (sur plaque d'essais), les R de 10 et 22k sont supprimées. La broche C.5 est reliée au 0V. Une vidéo: Le code: Adapté et conforme au schéma ci dessus. Faire un copier/coller dans PE6 Fonctionne pour des claviers de 12 ou 16 touches, sans modification.
;serrure4digeco MM 22/12/21 ;clavier 12 ou 16 touches matriciel ;picaxe 14M2 ;Entrées: ;ILS ou poussoir sur C.3 ;potar tempo sur C.4 ;colonnes du clavier sur B.1,B.2,B.3,et B.4 pour un 16 touches ;Sorties: ;piezzo sur C.0 ;led jaune sur C.1 (option) ;relais sur B.0 #picaxe 14M2 symbol NCode=pinC.3 'cotact ILS NouveauCode symbol gache=pinB.0 symbol Nled=pinC.1 symbol buz=C.0 symbol potar =C.4 symbol tempo=w13 'compteur attente symbol car=b1 symbol lig=b2 symbol col=b3 symbol chx=b5 symbol rang=b7 'compteur rang décodage symbol ch0=b8 symbol ch1=b9 symbol ch2=b10 symbol ch3=b11 setfreq M16 dirsB=%110001 ;B.0 ne peut être qu'une sortie, B1 à B3 en entrées dirsC=%10 pullup %100000011110 ;pullup sur B1,à B4 et C3 sound buz,(119,30) 'signal passage init read 0,ch0,ch1,ch2,ch3 'lecture du code en mémoire EEPROM Nled=0 rang=0 'RAZ rang time=0 'RAZ compteur attente readadc potar,tempo ;lecture de la temporisation sortie tempo=tempo*50 'max = 256 x 20= 5120 mS' do ;boucle principale if NCode=0 then nouvcode 'Si appui sur le pousoir, on entre un nouveau code if time >5 then ;'RAZ rang et time toutes les 5s env rang=0 time=0 endif for col=1 to 4 ;n° de broche (B.1 à B.4)=> 4 colonnes readadc col,lig ;col est le n° de colonne, lig donne la valeur ligne pause 100 if lig <= 225 then gosub clav ;on a appuyé! valeur=>ligne lookup rang,(ch0,ch1,ch2,ch3),chx if chx=car then inc rang ;on avance dans la séquence else rang=0 ;sinon, on repart à 0 endif if rang>=4 then gosub sortie endif endif next loop ;*************************************************************** clav: col=col-1 ;col de 0 à 3, le lookup commence à 0 select case lig ;sélection ft valeur ligne case 175 to 225 ; pour 4 Volt lookup col,(1,2,3,13),car ;ligne 4 case 125 to 174 ; pour 3 Volts lookup col,(4,5,6,14),car ;ligne 3 case 75 to 124 ; pour 2 Volts lookup col,(7,8,9,15),car ;ligne 2 case 25 to 74 ; pour 1 Volts lookup col,(11,10,12,16),car ;ligne 1 endselect col=col+1 ;retour au n° de broche µC do readadc col,lig ;attente relâchement touche loop while lig <= 225 sound buz,(119,40) ;buzz action touche return sortie: ;activation gache gache=1 sound buz,(119,80) pause tempo gache=0 rang=0 time=0 return ;*************************************************************** nouvcode: 'Sous programme mémo d'un nouveau code do loop while Ncode=0 ;ttente relachement poussoir sound buz,(119,80) ;buzz entrée nouvcode rang=0 time=0 Nled=1 ;allumage led jaune ch0=0:ch1=0:ch2=0:ch3=0 do for col=1 to 4 ;n° de broche (B.1 à B.4)=> 4 colonnes readadc col,lig ;col est le n° de colonne, lig donne la valeur ligne pause 100 if time>6 then sound buz,(119,200): pause 200:sound buz,(119,50) ;buzz abandon procédure reset endif if lig <= 225 then gosub clav ;on a appuyé! valeur=>ligne if rang=0 then ch0=car elseif rang=1 then ch1=car elseif rang=2 then ch2=car elseif rang=3 then ch3=car endif inc rang if rang>= 4 then write 0,ch0,ch1,ch2,ch3 sound buz,(119,80):pause 100:sound buz,(119,80) ; buzz mémorisation nouvelle clé reset endif endif next loop