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
TEST D'UNE MATRICE 64 LEDS à DRIVER MAX7219 PROGRAMMATION PAR PICAXE 14M2 ou 08M2
Cet afficheur peut être acheté en kit, ou tout monté. Le mien est arrivé en deux parties, une plaquette (avec le MAX7219, PCB, les connecteurs,etc) et la matrice de leds à enfiler sur les connecteurs (pas de doc, il faut choisir le sens qui fonctionne...). Le MAX7219 peut être utilisé pour gérer autre chose que l'afficheur fourni.
Programmation de l'afficheur: C'est une transposition de la programmation d'un afficheur à 8 digits standard, point décimal compris soit 8 leds. Chaque colonne est assimilée à un digit et chacun des 8 points de cette colonne est assimilé à un segment du digit.
Dans cet exemple pour les chiffres 2 et 5, la matrice est représentée couchée (c'est plus confortable):
Dans l'initialisation, les 8 digits sont définis en programmation "segments".
Les données D0 à D1, associées aux "digits" sont les leds de la colonne (représentée ici horizontalement).
1 = led allumée 0 = led éteinte Les 0 non significatifs (en tête) ne sont pas écrits.
Le code de ce test: La description des colonnes est en binaire, comme l'exemple ci dessus, une notation hexadécimale serait plus compacte. La description de chiffres n'est pas très attrayante, l'animation d'une figurine serait plus démonstrative (à faire).
;Afficheur driver MAX7219 ;Matrice de leds 8x8 ;MM 27/10/2013 ;Format des registres MAX 7219 sur 16 bits: ;|------------------------------w13------------------------------| ;|-----------b27-----------------|------------b26 ---------------| ;|-X-|-X-|-X-|-X-|--ADRESSE------|----------DONNEES--------------| ;|D15|D14|D13|D12|D11|D10|D09|D08|D07|D06|D05|D04|D03|D02|D01|D00| #picaxe 14M2 setfreq m32 symbol DIN = pinB.1 ;Entrée Data In de l'afficheur symbol LOAD = B.2 ;Entrée Load de l'afficheur symbol CLK = B.3 ;Entrée CLK de l'afficheur symbol TEST = pinC.3 symbol LEN = 1 ;durée impulsion 1ms symbol num = b1 ;colonne symbol cpt = b2 ;compteur ; b3 unité ; b4 dizaine ; b5 centaine symbol chif =b6 symbol val =b7 symbol cpt2=b8 symbol regis =w13 ;=(b27,b26) chaque bit sera envoyé dans le registre DIN =0 low LOAD low CLK ;***** description des colonnes (digits) en RAM: ;chiffre "0": table 0, (0,%1111110,%10000001,%10000001,%10000001,%1111110,0,0) ;chiffre "1": table 10,(0,%100,%10,%10000001,%11111111,%10000000,0,0) table 20,(0,%11000010,%110100001,%10010001,%10010001,%10001110,0,0) table 30,(0,%1000010,%10000001,%10001001,%10001001,%1110110,0,0) table 40,(0,%10000,%11000,%10100,%10010,%11111111,%10000,0,0) ;chiffre "5": table 50,(0,%1000111,%10000101,%10000101,%10000101,%1111001,0,0) ;animation: table 60,(0,0,0,%11000,%11000,0,0,0) table 70,(0,0,%111100,%100100,%100100,%111100,0,0) table 80,(0,%1111110,%1000010,%1000010,%1000010,%1000010,%1111110,0) table 90,(%11111111,%10000001,%10000001,%10000001,%10000001,%10000001,%10000001,%11111111) pullup %100000000000 ;activation résistance pullup sur C.3 (test) ;******** initialisation 7219 ******* b27=$09 'mode décodage b26=%00000000 'pas de décodage code B mais segments gosub shiftt b27=$0b 'limite scanner = Nbre de digits b26=$07 '$04=5 digits ,$03=4 digits,, etc... gosub shiftt b27=$0c 'shutdown mode b26=$01 '=normal (afficheur actif) gosub shiftt b27=$0a 'luminosité b26=$04 '=croissante de 0 à 15, ici c'est 4 gosub shiftt b27=$0f 'display test b26=$00 '=normal gosub shiftt ;****** Boucle d'affichage ****************** demo: val=0 ;correspond au chiffre affiché Do if test = 0 then gosub tst ;poussoir test et luminosité gosub affich pause 8000 inc val if val>5 then exit loop val=5 Do if test = 0 then gosub tst ;poussoir test et luminosité gosub affich pause 8000 dec val if val>250 then exit loop
for cpt2 =1 to 10 val=6 Do gosub affich inc val if val>9 then exit loop next goto demo
;******* Recherche caractère ****************** Affich: For num =1 to 8 ;n° de colonne b27=num ;adresse registre chif=val*10 +num-1 ;calage sur le premier octet du chiffre val readtable chif,b26 ;lecture de l'octet "donnée colonne" gosub shiftt ;affichage colonne next return ;******** Sous programme affichage ************************* ;Format du registre sur 16 bits:
;La broche DIN va prendre successivementla valeur de chaque bit de w13, scanné de gauche à droire shiftt: for cpt=1 to 16 ;test des 16 bits de w13 bit0=w13 / $8000 ;w13 = b27,b26 / %1000 0000 0000 0000: on ne garde que le 1er bit à gauche DIN=bit0 ;;on ne passe ici que si w12 <> 0, alors DIN =1 (évidemment) saut: pulsout CLK,LEN ; envoi 1 pulse horloge pour valider DIN w13=w13*2 ; on décale w13 vers la gauche pour examiner le bit suivant next cpt pulsout LOAD,LEN ;chargement du registre terminé, un pulse sur load valide le registre (commande ou affichage) return tst: ;****** test segments **************** b27=$0f 'display test b26=$01 '=tous les segments de tous les digits allumés gosub shiftt do loop while test=0 b27=$0f 'display test b26=$00 '=normal gosub shiftt return
Les autres utilisations: En enlevant la matrice, on trouve une plaque avec deux rangées de 8 connecteurs:
Les broches correspondant aux digits (ou colonnes) sont numérotées de C1 à C8 Les broches correspondant aux segments (ou lignes) sont numérotées de S0 à S7, S7 étant le point décimal. Les anodes des leds (côté court) vont sur les broches C1 àC8. Le max7219 intègre les limitations de courants.
De quoi programmer toutes sortes d'animations de leds. Les barrettes tulipes destinées aux broches de la matrice leds pourront être remplacées par des barrettes de connexion standard HE14 (acheter dans ce cas un module en kit). Un exemple d'utilisation avec le planisphère étoilé.