Le code est introduit par un clavier 12 touches NON matriciel. Ce code de 4 chiffres est modifiable de l'extérieur à volonté.
Le matériel:
1 picaxe 08M2 (Remplace le 08M)
1 clavier non matriciel 12 touches (étanche pour l'extérieur)
1 régulateur 78L12
1 régulateur 78L05
1 transistor NPN (Ex: BC337-40)
1 pont redresseur 1A
1 diode 1n4148 ou 1n4007
1 relais 12v D.I.L
1 condensateur 470µF 25v
1 condensateur 100nF
1 condensateur 4,7nF
1 interrupteur à lames souples (I.L.S)
1 buzzer piézo
1 potentiomètre 22k
12 résistances 100Ω , 1 de 10KΩ, 1 de 47kΩ, 1 de 1k (remplace R de base de 10k sur le transistor)
Soit une dizaine d'euro plus le prix du clavier (bon clavier étanche- chez Selectronic)
Le schéma:
Le code : (modifié le 02/12/15)
Faites un copier-coller dans le "Picaxe Programming Editor 6"
Le code original est remplacé par un code plus adapté au 08M2
'Gestion de clavier 12 touches non matriciel MM code 3(011215)
'Principe:
'5 volts sont divisés en 12 paliers de 0 à 5 v par 12 R de 100 ohms
'Chaque touche est reliée à un palier
'4 paliers sont mémorisés
'Après lecture de la tension, on calcule le palier correspondant
'On compare avec les codes mémorisés
'4 bonnes comparaisons successives et on sort, sinon on boucle
' R R R R R R R R R R R R
' 0Volt ---o-+-o-+-o-+-o-+-o-+-o-+-o-+-o-+-o-+-o-+-o-+-o-+- 5volts
' Paliers 1 2 3 4 5 6 7 8 9 10 11 12
;Entrées:
;ILS sur C.3
;potar tempo sur C.1
;touches clavier sur C.4
;Sorties:
;piezzo sur C.2
;relais sur C.0
#picaxe 08M2
start0:
symbol flag=bit0
symbol NCode=pinC.3 'cotact ILS NouveauCode
symbol tempo=w13 'compteur attente
symbol tch=b4 'lecture touche par ADC 4
symbol pal=b5 ;palier
symbol memtch=b6 'mémo lecture touche
symbol rang=b7 'compteur rang d?codage
sound C.2,(124,10) 'signal passage init
read 0,b13,b12,b11,b10 'lecture du code en m?moire
'-----------------------------------------------------------
debut:
flag=0 ;flag sonnette start1
rang=0 'RAZ rang
time=0 'RAZ compteur attente
readadc C.1,tempo 'm?mo de la temporisation sortie
tempo=tempo*20 'max = 256 x 20= 5120 mS
'--------------------------------------------------------------
leccode: 'Sous programme decodage
Do
if NCode=0 then 'Si contact on,
rang=0 'envoi vers le sous prog de
time=0 'changement de
goto nouvcode 'code
endif
readadc C.4,tch 'lecture du clavier
if time >5 then ;'RAZ rang et time toutes les 5s env
rang=0
time=0
endif
loop while tch<10 'si pas de pression touche, on boucle
gosub padin ' 'touche pressée -> calcul du palier
on rang goto c0,c1,c2,c3
c0: if pal=b10 then:rang=1:goto leccode 'Apres chaque
else:goto debut
endif
c1: if pal=b11 then:rang=2:goto leccode 'bonne comparaison
else:goto debut
endif
c2:
if pal=b12 then:rang=3:goto leccode 'on avance vers
else:goto debut
endif
c3: if pal=b13 then
high C.0 'la sortie(modif 03/12/09)
sound C.2,(124,10)
pause tempo 'tempo d'ouverture
low C.0
endif
goto debut 'sinon retour d?but
'---------------------------------------------------------------
padin: 'Sous programme calcul du palier
pause 50 'attente 50ms
readadc C.4,tch 'seconde lecture apr?s 50ms pour antirebonds
memtch=tch 'memo lecture
Do: readadc C.4,tch: loop while tch>10 ;attente relachement touche
pal=memtch-10/21+1 ;transforme les tensions lues en paliers de 1 à 12
time=0 'apres chaque pression,reset du compteur attente
sound C.2,(123,10) 'beep de relachement touche
return
'-------------------------------------
nouvcode: 'Sous programme m?mo d'un nouveau code
flag=1
readadc C.4,tch 'lecture ADC4
if time=5 then
flag=0 'temps d'attente entre deux
rang=0 'touches dépassé (>5 s)
sound C.2,(110,10) 'Après les beep,
goto nouvcode 'on recommence
endif
if time>10 then start0 'temps >10s : rechargement du code initial
if tch<10 then nouvcode 'si pas de pression, on boucle
gosub padin 'touche pressée -> calcul du palier
on rang goto cod0,cod1,cod2,cod3 'm?morisation des
cod0:b10=pal:rang=1:time=0:goto nouvcode 'quatre
cod1:b11=pal:rang=2:time=0:goto nouvcode 'touches
cod2:b12=pal:rang=3:time=0:goto nouvcode 'du
cod3:b13=pal 'code
write 0,b13,b12,b11,b10 'écriture du code en m?moire
reset 'redémarrage programme
start1: ;Sonnette nouveau code
Do
if flag=1 then
sound C.2,(120,10) 'sonnette "nouveau code"->tapez lentement
pause 200
endif
loop
'____________________________________________________
Le typon : Voici une image du fichier TCI. Que vous pouvez télécharger ICI en format zip. (Att: typons rectifiés le 27/01/2011) Ouvrez l'archive pour retrouver les fichiers .tci. Avec le logiciel TCI4.3 (voir page "Fabriquer ses circuits imprimés"), imprimez le typon de votre choix, ou modifiez le, il est possible de séparer le clavier et les résistances du reste du circuit avec une liaison par câble blindé 3 conducteurs. Pour la programmation voir la page :"La famille picaxe, la programmation" | ![]() | |
Réalisation: Plusieurs typons au choix, dont un programmable directement, ajoutez un strap, deux résistances 1/8 de W ou CMS et trois picots. Le relais est a double inverseur. Un contact peut être utilisé pour la serrure, l'autre pour la sonnette. Si il n'y a pas de sonnette, relier T et T1, R et R1,C et C1. Les contacts sont alors en // pour augmenter la longévité du relais. | ![]() | |
Mémorisation et changement de code: On utilise un interrupteur à lame souple (ILS) collez sous la plaque à coté du clavier. Il se ferme en approchant un aimant de l'extérieur, un bref passage suffit. Après le fonctionnement de ce contact, le buzzer émet un bruit de sonnette continu tant que l'on est en mode "programmation" (la sonnette ralentit le cycle, faut pas aller trop vite). Appuyer alors -sans précipitation- sur quatre touches du clavier. Après la dernière touche, la sonnette s'arrête et le nouveau code est mémorisé. Vérifiez ce nouveau code. Après plus de 6 secondes entre deux touches, un beep et il faut recommencer au début du code (c'est pour recommencer en cas d'erreur). Après plus de 12 secondes entre deux touches, la procédure est abandonnée et l'ancien code est restauré. | ![]() | |
Ici, le clavier et le circuit sont reliés par une nappe, mais il est possible de souder les picots coté soudures et d'accoler clavier et circuit ou de séparer le circuit en deux avec une liaison par blindé 3 conducteurs (voir typons). | ![]() |