Electromag1 Circuits électroniques et Picaxes

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
 

Décodage de clavier matriciel économique


Voici une alternative à la méthode présentée sur cette page.
Elle est économique par le nombre de broches du µC nécessaires.
Il fallait 7 broches pour un 12 touches et 8 pour un 16 touches, il n'en faut maintenant que 3 ou 4.

 
Le schéma:

Le principe est simple: les lignes sont reliées à un pont diviseur donnant 1, 2, 3, 4 volts. Sans aucun appui, le niveau des entrées LCD sont fixées à 5V par des R de 100k.
Les broches B.1 à B.4 du picaxe 14M2 sont les entrées de 4 ADC. La valeur lue sur l'ADC nous donne le numéro de la ligne et le numéro de l'ADC donne la colonne correspondante. On connait donc la touche utilisée.
Pour un clavier 12 touches, on enlève une colonne et une broche du µC est libérée. Ce qui économise 4 broches du µC dans les deux cas.

Le code:
;gestion clavier matriciel
;lignes alimentées par un diviseur de tension ; 1, 2, 3, 4 volts
;colonnes connectées à 3 ou 4 entrées ADC (12 ou 16 touches)
#picaxe 14M2
#no_data
symbol cpt=b1
symbol car=b2
symbol lec=b3
symbol num=b4
symbol LCD=B.0
dirsB=%000001        ;B.0 ne peut être qu'une sortie
    pause 1000
    serout LCD,T2400,(254,1,254,1,254,128,"Bonjour")
    pause 1000
    serout LCD,T2400,(254,1,254,128)        ;curseur col1 ligne1    
    do        
        do
            for cpt=1 to 4        ;de 1 à 4 pour le n° de broche (B.1 à B.4)                
                readadc cpt,lec
                pause 100            
                if lec <= 225 then gosub affich    ;une touche appuyée            
            next
        loop    
affich:              
        num=cpt-1        ;num de 0 à 3 pour le lookup
        select case lec
            case 25 to 74
                lookup num,("1","2","3","F"),car        ;ligne 4
            case 75 to 124
                lookup num,("4","5","6","E"),car        ;ligne 3            
            case 125 to 174
                lookup num,("7","8","9","D"),car        ;ligne 2
            case 175 to 225
                lookup num,("A","0","B","C"),car        ;ligne 1        
        endselect        
            serout LCD,T2400,(car)
        do
            readadc cpt,lec        ;attente relâchement            
        loop while lec <= 225
        pause 200            
        return
    loop




 



Créer un site
Créer un site