Petite gestion de clavier matricé.

jojojo

Senior Member
#1
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.
shemaV1_et_V2.jpg

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
 

jojojo

Senior Member
#3
Bonjour, Michel ... :)
Quel problème ?
J'ai, bien-sûr lu ton déco clavier, sur ton site, mais, je voulais faire au mini, en lignes de code. (suis très paresseux).
Bon, là, ça fonctionne bien. Suis surtout content d'avoir trouvé que le produit lignes-colonnes n'est jamais redondant. Pratique.
 
Last edited:
Top