C'est un peu la suite du post sur les numéros de ports (encore merci).
Je n'ai pas réussi a faire fonctionner le code de Piem, donc, j'ai fait "à ma sauce".
Moins joli, mais, ça fonctionne bien.
Le code pour la version 1:
Je n'ai pas réussi a faire fonctionner le code de Piem, donc, j'ai fait "à ma sauce".
Moins joli, mais, ça fonctionne bien.
Le code pour la version 1:
Code:
'Clavier matricé pour Guillaume V1
'code reprogrammable, via ILS et aimant
'Lignes 1 à 4 en entrée (C.0 C.3)
'Colonnes 1 à 3 en sortie (B.3 B.5)
'Rappel des numéros de ports:
'0 à 7 pour B
'8 à 14 pour C (utile, ici, pour ScruteClav). Merci, Michel.
'Code deux chiffres plus validation (* ou #)
'G.TREELS 12/2018
#picaxe 14M2
Setfreq M16 '16Mhz
...
Symbol CTC=C.4
Symbol LedProg=B.0
Symbol ILSPROG=PinB.1
Symbol BUZ=B.2
Symbol Premier=b7
Symbol Second=b8
Symbol Valid=b9
'Premier=5
'Second=2 'pour test
Do
Read 0,Premier
Read 1,Second
Debut:
Valid=0
Gosub ScruteClav
If b6=0 Then
Goto Debut
End If
If b6=10 OR b6=12 Then
Valid=1
End If
If Valid<1 Then
If b10=0 Then
b10=b6
Else
b11=b6
End If
End If
If Valid=1 And ILSPROG=1 Then
Write 0,b10
Write 1,b11
High BUZ
Pause 1500
Low BUZ
Valid=0
b6=0
b10=0
b11=0
Do
High LedProg
Loop Until ILSPROG<1
Low LedProg
Goto debut
End if
If Valid=1 And b10=Premier And b11=Second Then
Gosub Ouvre
For b3=1 To 2
High BUZ
Pause 500
Low BUZ
Pause 500
Next b3
Valid=0
b6=0
b10=0
b11=0
End If
If Valid=1 And b10<>Premier OR b11<>Second Then
Gosub Erreur
End If
Loop
ScruteClav:
b5=0
For b3=3 To 5
High b3
Pause 10
b4=PinsC
b4=b4 AND 15
If b4>0 Then
Exit
End If
Low b3
Pause 10
Next b3
b4=PinsC
b4=b4 AND 15'pas sur de l'utilité, mais ...
b5=b3 * b4 'Jamais deux produits identiques. Chic !
Do
b4=PinsC AND 15
Loop Until b4<1
Select case b5 'Pas réussi, avec table ou lookup. Bof ...
Case 40
b6=1
Case 32
b6=2
Case 24
b6=3
Case 20
B6=4
Case 16
b6=5
Case 12
b6=6
Case 10
b6=7
Case 8
b6=8
Case 6
b6=9
Case 5
b6=10
Case 4
b6=11
Case 3
b6=12
Else
b6=0
End select
If b6>0 Then
High BUZ
Pause 500
Low BUZ
End If
b5=0
Return
Ouvre:
High CTC
Pause 500
Low CTC
b6=0
Valid=0
Return
Erreur:
b10=0
b11=0
b6=0
Valid=0
For b3=1 to 5
High BUZ
Pause 50
Low BUZ
Pause 100
High BUZ
Pause 500
Low BUZ
Next b3
Return
'code Piem:
'Pas réussi a le faire fonctionner
#rem
b2 = 1
For b3=0 To 7
b4 = pinsC and b2
if b4 <>0 then 'c'est que le bit rang b3 est à 1
gosub relache
endif
b2 = b2*2 'shift à gauche
next
End rem