souci pour défiler du texte sur une matrice 16x16
Répondre à la discussion
Affichage des résultats 1 à 28 sur 28

souci pour défiler du texte sur une matrice 16x16



  1. #1
    darvock87

    Question souci pour défiler du texte sur une matrice 16x16


    ------

    Bonjour,

    J'ai pour projet de réaliser une matrice led 16x16 qui affichera du texte et autres motifs.

    Étant débutant avec l'arduino, j'ai essayé par moi même de créer un code pour mon projet,
    mais devant la complexité du code (ou je suis pas doué), je me suis retranché sur le net, et j'ai trouve un code fonctionnant avec deux registres à décalage 74hc595 et une matrice 8x8.
    Je souhaiterai donc modifier ce montage et ce code pour faire une matrice 16x16.

    Après quelques bidouillages sur le code je n'arrive pas à mes fins

    Je viens donc vous demandez votre aide

    Code:
    const int clockPin = 13;
    const int dataPin = 11;
    const int latchPin = 10;
    
    byte arrow[8]={0x18,0x3C,0x66,0xDB,0x18,0x18,0x18,0x18};
    byte displayBuffer[8]= {0};
      
    int fontDefinitions[480] = {
    0x00,0x00,0x00,0x00,0x00,/*space*/ // is 32 in ASCII
    0x00,0xF6,0xF6,0x00,0x00,/*!*/
    0x00,0xE0,0x00,0xE0,0x00,/*"*/
    0x28,0xFE,0x28,0xFE,0x28,/*#*/
    0x00,0x64,0xD6,0x54,0x08,/*$*/
    0xC2,0xCC,0x10,0x26,0xC6,/*%*/
    0x4C,0xB2,0x92,0x6C,0x0A,/*&*/
    0x00,0x00,0xE0,0x00,0x00,/*'*/
    0x00,0x38,0x44,0x82,0x00,/*(*/
    0x00,0x82,0x44,0x38,0x00,/*)*/
    0x88,0x50,0xF8,0x50,0x88,/***/
    0x08,0x08,0x3E,0x08,0x08,/*+*/
    0x00,0x00,0x05,0x06,0x00,/*,*/
    0x08,0x08,0x08,0x08,0x08,/*-*/
    0x00,0x00,0x06,0x06,0x00,/*.*/
    0x02,0x0C,0x10,0x60,0x80,/*/*/
    0x7C,0x8A,0x92,0xA2,0x7C,/*0*/
    0x00,0x42,0xFE,0x02,0x00,/*1*/
    0x42,0x86,0x8A,0x92,0x62,/*2*/
    0x44,0x82,0x92,0x92,0x6C,/*3*/
    0x10,0x30,0x50,0xFE,0x10,/*4*/
    0xE4,0xA2,0xA2,0xA2,0x9C,/*5*/
    0x3C,0x52,0x92,0x92,0x0C,/*6*/
    0x80,0x86,0x98,0xE0,0x80,/*7*/
    0x6C,0x92,0x92,0x92,0x6C,/*8*/
    0x60,0x92,0x92,0x94,0x78,/*9*/
    0x00,0x00,0x36,0x36,0x00,/*:*/
    0x00,0x00,0x35,0x36,0x00,/*;*/
    0x10,0x28,0x44,0x82,0x00,/*<*/
    0x28,0x28,0x28,0x28,0x28,/*=*/
    0x00,0x82,0x44,0x28,0x10,/*>*/
    0x40,0x80,0x8A,0x90,0x60,/*?*/
    0x7C,0x82,0xBA,0xBA,0x62,/*@*/
    0x3E,0x48,0x88,0x48,0x3E,/*A*/
    0xFE,0x92,0x92,0x92,0x6C,/*B*/
    0x7C,0x82,0x82,0x82,0x44,/*C*/
    0xFE,0x82,0x82,0x82,0x7C,/*D*/
    0xFE,0x92,0x92,0x92,0x82,/*E*/
    0xFE,0x90,0x90,0x90,0x80,/*F*/
    0x7C,0x82,0x82,0x8A,0x4E,/*G*/
    0xFE,0x10,0x10,0x10,0xFE,/*H*/
    0x82,0x82,0xFE,0x82,0x82,/*I*/
    0x84,0x82,0xFC,0x80,0x80,/*J*/
    0xFE,0x10,0x28,0x44,0x82,/*K*/
    0xFE,0x02,0x02,0x02,0x02,/*L*/
    0xFE,0x40,0x20,0x40,0xFE,/*M*/
    0xFE,0x60,0x10,0x0C,0xFE,/*N*/
    0x7C,0x82,0x82,0x82,0x7C,/*O*/
    0xFE,0x90,0x90,0x90,0x60,/*P*/
    0x7C,0x82,0x82,0x86,0x7E,/*Q*/
    0xFE,0x90,0x98,0x94,0x62,/*R*/
    0x64,0x92,0x92,0x92,0x4C,/*S*/
    0x80,0x80,0xFE,0x80,0x80,/*T*/
    0xFC,0x02,0x02,0x02,0xFC,/*U*/
    0xF8,0x04,0x02,0x04,0xF8,/*V*/
    0xFC,0x02,0x0C,0x02,0xFC,/*W*/
    0xC6,0x28,0x10,0x28,0xC6,/*X*/
    0xC0,0x20,0x1E,0x20,0xC0,/*Y*/
    0x86,0x8A,0x92,0xA2,0xC2,/*Z*/
    0x00,0x00,0xFE,0x82,0x00,/*[*/
    0x00,0x00,0x00,0x00,0x00,/*this should be / */
    0x80,0x60,0x10,0x0C,0x02,/*]*/
    0x20,0x40,0x80,0x40,0x20,/*^*/
    0x01,0x01,0x01,0x01,0x01,/*_*/
    0x80,0x40,0x20,0x00,0x00,/*`*/
    0x04,0x2A,0x2A,0x2A,0x1E,/*a*/
    0xFE,0x12,0x22,0x22,0x1C,/*b*/
    0x1C,0x22,0x22,0x22,0x14,/*c*/
    0x1C,0x22,0x22,0x12,0xFE,/*d*/
    0x1C,0x2A,0x2A,0x2A,0x18,/*e*/
    0x10,0x7E,0x90,0x80,0x40,/*f*/
    0x18,0x25,0x25,0x25,0x1E,/*g*/
    0xFE,0x10,0x10,0x10,0x0E,/*h*/
    0x00,0x12,0x5E,0x02,0x00,/*i*/
    0x02,0x01,0x01,0x11,0x5E,/*j*/
    0xFE,0x08,0x08,0x14,0x22,/*k*/
    0x00,0x82,0xFE,0x02,0x00,/*l*/
    0x3E,0x20,0x1C,0x20,0x1E,/*m*/
    0x3E,0x20,0x20,0x20,0x1E,/*n*/
    0x1C,0x22,0x22,0x22,0x1C,/*o*/
    0x3F,0x24,0x24,0x24,0x18,/*p*/
    0x18,0x24,0x24,0x3F,0x01,/*q*/
    0x3E,0x10,0x20,0x20,0x10,/*r*/
    0x12,0x2A,0x2A,0x2A,0x04,/*s*/
    0x00,0x10,0x3C,0x12,0x04,/*t*/
    0x3C,0x02,0x02,0x02,0x3E,/*u*/
    0x30,0x0C,0x02,0x0C,0x30,/*v*/
    0x38,0x06,0x18,0x06,0x38,/*w*/
    0x22,0x14,0x08,0x14,0x22,/*x*/
    0x38,0x05,0x05,0x05,0x3E,/*y*/
    0x22,0x26,0x2A,0x32,0x22,/*z*/
    0x00,0x10,0x6C,0x82,0x82,/*{*/
    0x00,0x00,0xFF,0x00,0x00,/*|*/
    0x04,0x02,0xFF,0x02,0x04,/*|, arrow*/
    0x82,0x82,0x6C,0x10,0x00,/*}*/
    0x08,0x10,0x18,0x08,0x10/*~*/
    };
    
    void setup() {
      pinMode(clockPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
      pinMode(latchPin, OUTPUT);
    }
    
    void loop() {
          displayString("Salut Darvock !! ceci est un test de la matrice led", 52);
         
    }
    
    void scrollBufferLeft() {
      for(int i=7; i>=0; i--) {
        displayBuffer[i+1] = displayBuffer[i];
      }
    }
    
    void addCharSliceToBuffer(char c, byte pos) {
      displayBuffer[0] = fontDefinitions[((c - 32) * 5) + pos];  
    }
    
    void displayString(char * stringToDisplay, byte stringLength) {
      for(int k = 0; k < stringLength; k++) {
        for(int j = 0; j < 5; j++) {
          addCharSliceToBuffer(stringToDisplay[k], j);
          for(int i=0; i<20; i++) drawImage(displayBuffer);
          scrollBufferLeft();
        }
          addCharSliceToBuffer(' ', 0);
          for(int i=0; i<20; i++) drawImage(displayBuffer);
          scrollBufferLeft();
      }
    }
    
    void drawImage(byte * matrix) {
      for(int i=0; i<8; i++) {
        for(int j=0; j<8; j++) { 
          digitalWrite(clockPin, LOW);
          digitalWrite(dataPin, (matrix[i]) & (1<<j) );
          digitalWrite(clockPin, HIGH);
        }
        
        for(int j=7; j>=0; j--) { 
          digitalWrite(clockPin, LOW);
          digitalWrite(dataPin, (~(1<<i)) & (1<<j) );
          digitalWrite(clockPin, HIGH);
        }
    
        digitalWrite(latchPin,LOW);
        digitalWrite(latchPin,HIGH);
      } 
    }

    -----
    Images attachées Images attachées  

  2. #2
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    Tu disposes de quoi comme hardware ? J'ai fait défiler du texte sur une matrice 8*8, pilotée par un MAX7219.

    Tu bloques où ? Faire afficher un truc statique, ou faire défiler ?

  3. #3
    darvock87

    Re : souci pour defiler du texte sur une matrice 16x16

    J'utilise deux registre à décalage 74hc595 un sert a envoyer les bits de données l'autre a rafraichir les colonnes (le schéma du montage est dans mon post)
    actuellement avec le code que j'ai j'arrive a faire défiler du texte sur une matrice 8x8.
    Or moi je souhaite faire défiler du texte sur une matrice 16x16 soit si mes calculs sont bon 4 registre à décalage 2*8 colonnes et 2*8 lignes
    et donc je veux savoir comment modifier le code pour que mes 4 74hc595 soit synchro et qu'il y en ai 2 qui envoi des bits de données et 2 qui rafraichissent les colonnes et ainsi que mon texte défile sur les 16 colonnes
    Dernière modification par darvock87 ; 17/02/2015 à 11h41.

  4. #4
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    Il vient d'où ce code ?

  5. A voir en vidéo sur Futura
  6. #5
    darvock87

    Re : souci pour defiler du texte sur une matrice 16x16


  7. #6
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    Le principal problème est que les caractères donnés ne seront pas de la bonne taille... Tu veux que ça fonctionne comment du coup ?

    L'adaptation du code va essentiellement consister à modifier les boucles de façon à "déborder" sur les matrices suivantes, en faisant attention de changer les adresses au bon moment. A priori, le multiplexage devrait fonctionner de la même façon.

  8. #7
    darvock87

    Re : souci pour defiler du texte sur une matrice 16x16

    certes les caractères ne seront pas adapté, mais quelle modification ajouter au code pour que le texte soit centrer sur la matrice et défile sur ses 16 colonnes ?
    faut il que je reprenne tout les caractères pour qu'ils soient adaptés aux 16 lignes ?

  9. #8
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    Citation Envoyé par darvock87 Voir le message
    faut il que je reprenne tout les caractères pour qu'ils soient adaptés aux 16 lignes ?
    Hé oui !! Tu peux aussi doubler (plutôt quadrupler) chaque point, mais c'est dommage...

  10. #9
    darvock87

    Re : souci pour defiler du texte sur une matrice 16x16

    L'adaptation du code va essentiellement consister à modifier les boucles de façon à "déborder" sur les matrices suivantes, en faisant attention de changer les adresses au bon moment
    tu peux développer un peu s'il te plait

  11. #10
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    Bin, dans ton code tu as des boucles qui vont de 0 à 7. Il va falloir les modifier pour qu'elles aillent de 0 à 15, vu que tu doubles le nombre de pixels horizontaux et verticaux. Mais attention, les pixels 1 à 8 correspondent à une première matrice, tandis que les pixels 9 à 16 correspondent à une autre matrice. Il va falloir en tenir compte et switcher sur les autres sorties liées à cette 2eme matrice...

  12. #11
    darvock87

    Re : souci pour defiler du texte sur une matrice 16x16

    les boucles à modifier c'est bien la fonction :

    void scrollBufferLeft() {
    for(int i=7; i>=0; i--) {
    displayBuffer[i+1] = displayBuffer[i];

    ou il faut que je remplace 7 par 15 non ? (ça définit le nombre de pixel verticaux non ?)

    a quoi servent les compteurs que l'on retrouve dans la fonction "displayString" ?

    et les compteurs de la fonction "drawImage" ?

  13. #12
    darvock87

    Re : souci pour defiler du texte sur une matrice 16x16

    Et comment fais tu pour switcher d'une matrice à une autre ?

  14. #13
    darvock87

    Re : souci pour defiler du texte sur une matrice 16x16

    Et j'ai repris tout les caractère pour les adapter à une matrice 16*16 en base 16 cela te semble t il correct ?
    Code:
    int fontDefinitions[1088] = {
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0010,0x0010,0x07F0,0x0810,0x0810,0x0810,0x0810,0x0810,0x07F0, //a
      0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x08C0,0x0C20,0x0810,0x0810,0x0810,0x0810,0x0FE0, //b
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03E0,0x0400,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0410,0x03E0, //c
      0x0000,0x0000,0x0000,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x03D0,0x0430,0x0810,0x0810,0x0810,0x0810,0x07F0, //d
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03C0,0x0420,0x0810,0x0810,0x0810,0x0FF0,0x0800,0x0800,0x0800,0x07F0, //e
      0x0000,0x0000,0x0000,0x00E0,0x0110,0x0200,0x0200,0x0200,0x0200,0x0200,0x0F80,0x0200,0x0200,0x0200,0x0200,0x0200, //f
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07F0,0x0810,0x0810,0x0810,0x0810,0x07F0,0x0010,0x0010,0x0010,0x0010,0x07E0, //g
      0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x09C0,0x0A20,0x0C10,0x0810,0x0810,0x0810,0x0810, //h
      0x0000,0x0000,0x0180,0x0180,0x0000,0x0000,0x0380,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x07E0, //i
      0x0000,0x0000,0x0060,0x0060,0x0000,0x0000,0x03E0,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0820,0x0440,0x0380, //j
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0400,0x0400,0x0420,0x0440,0x0480,0x0500,0x0600,0x0500,0x0480,0x0440,0x0420, //k
      0x0000,0x0000,0x0F80,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0FF0, //l
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0760,0x0C90,0x0888,0x0888,0x0888,0x0888,0x0808,0x0808,0x0808,0x0808, //m
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0BC0,0x0C20,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810, //n
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07F0,0x0808,0x0808,0x0808,0x0808,0x0808,0x0808,0x0808,0x07F0, //o
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0BC0,0x0C20,0x0810,0x0810,0x0820,0x0FC0,0x0800,0x0800,0x0800,0x0800, //p 
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03D0,0x0430,0x0810,0x0810,0x0410,0x03F0,0x0010,0x0010,0x0010,0x0010, //q
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x09C0,0x0A20,0x0C10,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800, //r 
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0800,0x0800,0x0800,0x07E0,0x0010,0x0010,0x0010,0x0FE0, //s
      0x0000,0x0000,0x0000,0x0000,0x0400,0x0400,0x0400,0x0400,0x1F00,0x0400,0x0400,0x0400,0x0400,0x0400,0x0420,0x03C0, //t
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0430,0x03D0, //u 
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0420,0x0240,0x0180, //v
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0808,0x0808,0x0808,0x0808,0x0888,0x0888,0x0888,0x0888,0x0550,0x0220, //w
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0808,0x0410,0x0220,0x0140,0x0080,0x0140,0x0220,0x0410,0x0808, //x
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0810,0x0810,0x0810,0x0810,0x0430,0x03D0,0x0010,0x0010,0x0010,0x0020,0x07C0, //y
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0FF0,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800,0x0FF0, //z
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0810,0x0810,0x0810,0x0810,0x0FF0,0x0810,0x0810,0x0810,0x0810,0x0810, //A
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0FE0,0x0810,0x0810,0x0810,0x0810,0x0FE0,0x0810,0x0810,0x0810,0x0810,0x0FE0, //B
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0810,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0810,0x07E0, //C 
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0F80,0x0840,0x0820,0x0810,0x0810,0x0810,0x0810,0x0810,0x0820,0x0840,0x0F80, //D
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0FF0,0x0800,0x0800,0x0800,0x0800,0x0FC0,0x0800,0x0800,0x0800,0x0800,0x0FF0, //E
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0FF0,0x0800,0x0800,0x0800,0x0800,0x0FC0,0x0800,0x0800,0x0800,0x0800,0x0800, //F
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07F0,0x0810,0x0800,0x0800,0x0800,0x08F0,0x0810,0x0810,0x0810,0x0810,0x07F0, //G
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0810,0x0810,0x0810,0x0810,0x0810,0x0FF0,0x0810,0x0810,0x0810,0x0810,0x0810, //H
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07F0,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x07F0, //I
      0x0000,0x0000,0x0000,0x0000,0x0000,0x01F0,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0840,0x0780, //J
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0840,0x0880,0x0900,0x0A20,0x0C00,0x0A20,0x0900,0x0880,0x0840,0x0820, //K
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0FF0, //L
      0x0000,0x0000,0x0000,0x0000,0x0000,0x1010,0x1830,0x1450,0x1290,0x1110,0x1110,0x1010,0x1010,0x1010,0x1010,0x1010, //M
      0x0000,0x0000,0x0000,0x0000,0x0000,0x1010,0x1010,0x1810,0x1410,0x1210,0x1110,0x1090,0x1050,0x1030,0x1010,0x1010, //N
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x07E0, //O
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0FE0,0x0810,0x0810,0x0810,0x0810,0x0FE0,0x0800,0x0800,0x0800,0x0800,0x0800, //P
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0890,0x0850,0x0820,0x07D0, //Q
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0FE0,0x0810,0x0810,0x0810,0x0810,0x0FE0,0x0900,0x0880,0x0840,0x0820,0x0810, //R
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07F0,0x0800,0x0800,0x0800,0x0800,0x07E0,0x0010,0x0010,0x0010,0x0010,0x0FE0, //S 
      0x0000,0x0000,0x0000,0x0000,0x0000,0x1FF0,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100, //T
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x07E0, //U
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0810,0x0410,0x0220,0x0140,0x0080, //V
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0808,0x0808,0x0808,0x0808,0x0808,0x0888,0x0888,0x0888,0x0888,0x0550,0x0220, //W 
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0808,0x0808,0x0410,0x0220,0x0140,0x0080,0x0140,0x0220,0x0410,0x0808,0x0808, //X
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0820,0x0820,0x0820,0x0440,0x0280,0x0100,0x0100,0x0100,0x0100,0x0100, //Y
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0FF0,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800,0x0FF0, //Z
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, //space 
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0810,0x0830,0x0850,0x0890,0x0910,0x0A10,0x0C10,0x0810,0x07E0, //0
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0100,0x0300,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x07C0, //1
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07C0,0x0810,0x0010,0x0010,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0FE0, //2
      0x0000,0x0000,0x0000,0x0000,0x0000,0x03E0,0x0410,0x0010,0x0010,0x0010,0x00E0,0x0010,0x0010,0x0010,0x0410,0x03E0, //3
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0060,0x00A0,0x0120,0x0220,0x0420,0x0820,0x0FF8,0x0020,0x0020,0x0020, //4
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0FF0,0x0800,0x0800,0x0800,0x0FE0,0x0010,0x0010,0x0010,0x0810,0x0810,0x07E0, //5
      0x0000,0x0000,0x0000,0x0000,0x0000,0x01E0,0x0200,0x0400,0x0800,0x0800,0x0FE0,0x0810,0x0810,0x0810,0x0810,0x07E0, //6 
      0x0000,0x0000,0x0000,0x0000,0x0000,0x03F0,0x0010,0x0010,0x0010,0x0020,0x0040,0x0080,0x0100,0x0100,0x0100,0x0100, //7 
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0810,0x0810,0x0810,0x0810,0x07E0,0x0810,0x0810,0x0810,0x0810,0x07E0, //8
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0810,0x0810,0x0810,0x0810,0x07F0,0x0010,0x0010,0x0020,0x0040,0x0780, //9
      0x0000,0x0000,0x0000,0x0000,0x0000,0x07F0,0x0810,0x0810,0x09F0,0x09F0,0x09E0,0x09E0,0x09E0,0x0800,0x0800,0x07F0, //@
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0180,0x0180, //.
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0000,0x0180,0x0180, //!
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0780,0x0840,0x0840,0x0040,0x0080,0x0100,0x0100,0x0000,0x0100,0x0100, //?
      0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0180,0x0180,0x0080,0x0100, //,

  15. #14
    darvock87

    Re : souci pour defiler du texte sur une matrice 16x16

    dans tout les cas je te remercie de ton aide

  16. #15
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    Toutes les boucles sont à priori à modifier...

    ou il faut que je remplace 7 par 15 non ? (ça définit le nombre de pixel verticaux non ?)
    A priori oui, mais en faisant justement attention à changer de matrice si besoin. Pour la lecture du méga tableau, pas la peine, il a déjà la bonne dimension...

    a quoi servent les compteurs que l'on retrouve dans la fonction "displayString" ?
    Ils bouclent sur la chaine de caractère à afficher, et réalisent l'appel de la fonction permettant de tracer une lettre. Pour dire "Bonjour", il appelle affiche(B), puis affiche(o), puis affiche(n)... en bouclant sur ta phrase.

    et les compteurs de la fonction "drawImage" ?
    A priori, à balayer les matrices. C'est ici qu'il va falloir passer sur les autres.

    Et comment fais tu pour switcher d'une matrice à une autre ?
    En changeant les nulméros de pins des fonctions digitalWrite :

    Code:
        digitalWrite(clockPin, LOW);
          digitalWrite(dataPin, (matrix[i]) & (1<<j) );
          digitalWrite(clockPin, HIGH);
    Mais pour ça... Il faut savoir comment tout est cablé !!

    Et j'ai repris tout les caractère pour les adapter à une matrice 16*16 en base 16 cela te semble t il correct ?
    Mon cerveau n'interprète pas les codes hexa... teste, tu verras bien !

  17. #16
    darvock87

    Re : souci pour defiler du texte sur une matrice 16x16

    Mais pour ça... Il faut savoir comment tout est cablé !!
    niveau câblage, j'utilise 3 sorties de l'arduino (13 pour le clock, 11 pour le data et 10 pour le latch ) qui vont au premier registre a décalage 74hc595 ensuite les registres suivants sont piloté par le port série du registre qui le précède (le patte 9 de mon premier registre est connecte à la patte 14 (data) de mon second registre, la patte 9 du second est branché a la patte 14 du troisième etc..) quand au latch et clock de chaque registre ils sont tous connecté ensemble.

    Dans ma logique, il me faut donc 2 registre à décalage pour mes 16 cathodes et 2 registre à décalage pour mes 16 anodes, et c'est coté programmation que je n'arrive pas a comprendre ou ce situe les lignes qui disent "ces deux registre vous rafraichissez les colonnes, et ces deux registres vous décodez les données reçues"

    Toujours dans ma logique, a partir du moment ou dans le programme je mets que j'ai 16x16 pixel, les caractères étant codé pour être adapté a 16 pixels ont peut considérer que je n'ai qu'une seul matrice pourquoi faut il donc que je switch d'une matrice à l'autre ? les registre 74hc595 ne sont ils pas capable "de ne faire qu'un" ?

  18. #17
    darvock87

    Re : souci pour defiler du texte sur une matrice 16x16

    Mais pour ça... Il faut savoir comment tout est cablé !!
    niveau câblage, j'utilise 3 sorties de l'arduino (13 pour le clock, 11 pour le data et 10 pour le latch ) qui vont au premier registre a décalage 74hc595 ensuite les registres suivants sont piloté par le port série du registre qui le précède (le patte 9 de mon premier registre est connecte à la patte 14 (data) de mon second registre, la patte 9 du second est branché a la patte 14 du troisième etc..) quand au latch et clock de chaque registre ils sont tous connecté ensemble.

    Dans ma logique, il me faut donc 2 registre à décalage pour mes 16 cathodes et 2 registre à décalage pour mes 16 anodes, comment "dire" dans le programme vous deux vous rafraichissez les colonnes et vous deux vous analysez les données à affichées ? faut il que je sépare le rafraichissement de l'analyse en prenant 3 nouvelles pattes de l'arduino ?

    Toujours dans ma logique, a partir du moment ou dans le programme je mets que j'ai 16x16 pixel, les caractères étant codé pour être adapté a 16 pixels ont peut considérer que je n'ai qu'une seul matrice pourquoi faut il donc que je switch d'une matrice à l'autre ? les registre 74hc595 ne sont ils pas capable "de ne faire qu'un" ?

  19. #18
    Gérard

    Re : souci pour defiler du texte sur une matrice 16x16

    Es-tu sûr que le 595 peut débiter assez de courant ?

    Est ce que tu connais le MAX 7219 ?

  20. #19
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    Dans ma logique, il me faut donc 2 registre à décalage pour mes 16 cathodes et 2 registre à décalage pour mes 16 anodes
    ça existe les registres à décalage ayant 16 sorties ? Si oui, ça simplifie le problème...

    comment "dire" dans le programme vous deux vous rafraichissez les colonnes et vous deux vous analysez les données à affichées ?
    C'est dans les digitalWrite déjà évoqués... Tu sais comment fonctionne en détails un registre à décalage ?

    faut il que je sépare le rafraichissement de l'analyse en prenant 3 nouvelles pattes de l'arduino ?
    Tout dépend de comment tu souhaites réaliser le câblage...

    Toujours dans ma logique, a partir du moment ou dans le programme je mets que j'ai 16x16 pixel, les caractères étant codé pour être adapté a 16 pixels ont peut considérer que je n'ai qu'une seul matrice
    Bah... Il y en a quatre physiquement... Sauf si tu utilises des registres à 16 sorties, là oui tu vas pouvoir considérer le bloc comme "unique".

    pourquoi faut il donc que je switch d'une matrice à l'autre ? les registre 74hc595 ne sont ils pas capable "de ne faire qu'un" ?
    Avec 8 sorties sur tes 74hc595, tu ne vas pas pouvoir piloter 2 afficheurs... A moins bien sûr que tu ai une autre idée en tête...?

    Citation Envoyé par Gérard Voir le message
    Est ce que tu connais le MAX 7219 ?
    +1 pour le 7219 (déjà évoqué). Il est très facile de faire des groupes de matrices, je l'ai fait pas plus tard qu'hier soir... Il faut un MAX par afficheur par contre. Mais au niveau soft, c'est peanuts !

  21. #20
    Gérard

    Re : souci pour defiler du texte sur une matrice 16x16

    http://www.ebay.fr/itm/10Pcs-Neuf-MA...E:L:OU:FR:3160

    Tu as avec ces modules, le MAX, la matrice de LED, le CI, 2 condos, 1 résistance, des connecteurs pour un prix sympathique.

  22. #21
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    J'utilise des modules très similaires... Il est très facile de les mettre en série pour afficher ce que l'on veut. Je suis en train de modifier un code existant pour faire défiler du texte. ça marche, mais ça lague un peu. Je termine d'améliorer et je poste un exemple...

  23. #22
    Gérard

    Re : souci pour defiler du texte sur une matrice 16x16

    J'ai réussi à faire défiler sur 4 matrices en utilisant des variables de 4 octets.

  24. #23
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    Avec quel hardware ?

  25. #24
    Gérard

    Re : souci pour defiler du texte sur une matrice 16x16

    Citation Envoyé par Yoruk Voir le message
    Avec quel hardware ?
    Elle est pour moi la question ?

    Des essais sur plaque sans soudure. C'est un 16F876A programmé en Basic.

  26. #25
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    Oui c'est pour toi... Je veux dire, tu as utilisé quoi comme hardware pour gérer les matrices ? MAX7219 ? Registre à décalage ?

  27. #26
    Gérard

    Re : souci pour defiler du texte sur une matrice 16x16

    Regarde le lien en #20.

  28. #27
    invite1d577638

    Re : souci pour defiler du texte sur une matrice 16x16

    Ah ok, j'ai le même matos, mais pas en CMS. Problème, mes modules sont plus gros, impossible de les ranger en carré.

    Je fais une photo à l'occaz de mon montage.

  29. #28
    Gérard

    Re : souci pour defiler du texte sur une matrice 16x16

    Citation Envoyé par Yoruk Voir le message
    Ah ok, j'ai le même matos, mais pas en CMS. Problème, mes modules sont plus gros, impossible de les ranger en carré.

    Je fais une photo à l'occaz de mon montage.
    Mais ça marche en carré avec les cms.

Discussions similaires

  1. Dans WORD, texte horizontal + texte vertical comment ?
    Par Cornemuse dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 24/01/2010, 06h28
  2. (Matlab) Extraire des données depuis un fichier texte et les placer dans une matrice
    Par invite02e128cc dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 14/12/2009, 11h09
  3. MATLAB Comment faire défiler des images?
    Par invite9f24019a dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 09/05/2008, 12h31
  4. DEBUTANT matlab lecture de fichier texte remplacement de valeur et matrice
    Par invite9524cf76 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 23/04/2008, 15h25
  5. défiler une vidéo a l'envers
    Par invite0496604c dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 01/04/2005, 20h17
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...