IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Modifier un code d'un panneau LED d'affichage défilant


Sujet :

Arduino

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 55
    Points
    55
    Par défaut Modifier un code d'un panneau LED d'affichage défilant
    Bonjour,

    Voilà je viens vers vous afin que vous puissiez m’aidez à modifier le code Arduino ci-dessous que j’ai sous la main. En effet c’est un code fait spécialement pour piloter un panneau LED d'affichage défilant d’une dimension de 6x24

    (Voir schéma ci-dessous)

    https://drive.google.com/file/d/1Ctr...ew?usp=sharing

    Donc ma question ou ma demande est toute bête et qui s’agit bien de comment ou bien quelles sont les lignes à modifier afin que ce code me permet de piloter un panneau d’une dimension de 8x48

    (Voir schéma ci-dessous)

    https://drive.google.com/file/d/14S9...ew?usp=sharing

    Merci beaucoup par avance

    Voici le code du 6x24 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    #define BA {B01110000,B10001000,B10001000,B11111000,B10001000,B10001000}
    #define BB {B11110000,B10001000,B10001000,B11110000,B10001000,B11111000}
    #define BC {B11111000,B10000000,B10000000,B10000000,B10000000,B11111000}
    #define BD {B11110000,B10001000,B10001000,B10001000,B10001000,B11110000}
    #define BE {B11111000,B10000000,B10000000,B11110000,B10000000,B11111000}
    #define BF {B11111000,B10000000,B10000000,B11110000,B10000000,B10000000}
    #define BG {B01110000,B10001000,B10000000,B10011000,B10001000,B01110000}
    #define BH {B10001000,B10001000,B11111000,B10001000,B10001000,B10001000}
    #define BI {B11111000,B00100000,B00100000,B00100000,B00100000,B11111000}
    #define BJ {B00111000,B00010000,B00010000,B00010000,B10010000,B01100000}
    #define BM {B10001000,B11011000,B10101000,B10101000,B10001000,B10001000}
    #define BN {B10001000,B11001000,B10101000,B10101000,B10011000,B10001000}
    #define BL {B10000000,B10000000,B10000000,B10000000,B10000000,B11111000}
    #define BO {B01110000,B10001000,B10001000,B10001000,B10001000,B01110000}
    #define BP {B11110000,B10001000,B10001000,B11110000,B10000000,B10000000}
    #define BQ {B01110000,B10001000,B10101000,B10011000,B01111000,B00001000}
    #define BR {B11110000,B10001000,B10001000,B11110000,B10001000,B10001000}
    #define BS {B01110000,B10001000,B01100000,B00010000,B10001000,B01110000}
    #define BK {B10001000,B10010000,B11100000,B11100000,B10010000,B10001000}
    #define BT {B11111000,B00100000,B00100000,B00100000,B00100000,B00100000}
    #define BU {B10001000,B10001000,B10001000,B10001000,B10001000,B01110000}
    #define BV {B10001000,B10001000,B10001000,B10001000,B01010000,B00100000}
    #define BW {B10001000,B10001000,B10101000,B10101000,B10101000,B01010000}
    #define BX {B10001000,B01010000,B00100000,B00100000,B01010000,B10001000}
    #define BY {B10001000,B01010000,B00100000,B00100000,B00100000,B00100000}
    #define BZ {B11111000,B00001000,B00110000,B01100000,B10000000,B11111000}
    #define LA{B00000000,B01110000,B00001000,B01111000,B10001000,B01111000}
    #define LB{B10000000,B10000000,B10110000,B11001000,B10001000,B11110000}
    #define LC{B00000000,B01110000,B10000000,B10000000,B10001000,B01110000}
    #define LD{B00001000,B00001000,B01111000,B10001000,B10001000,B01111000}
    #define LE{B00000000,B01110000,B10001000,B11111000,B10000000,B01110000}
    #define LF{B00110000,B01001000,B01000000,B11100000,B01000000,B01000000}
    #define LG{B00000000,B01111000,B10001000,B01111000,B00001000,B01110000}
    #define LH{B10000000,B10000000,B10110000,B11001000,B10001000,B10001000}
    #define LI{B00100000,B00000000,B01100000,B00100000,B00100000,B01111000}
    #define LJ{B00010000,B00000000,B00111000,B00010000,B10010000,B01100000}
    #define LK{B10000000,B10010000,B10100000,B11000000,B10100000,B10010000}
    #define LL{B01100000,B00100000,B00100000,B00100000,B00100000,B01111000}
    #define LM{B00000000,B00000000,B11010000,B10101000,B10101000,B10001000}
    #define LN{B00000000,B00000000,B10110000,B11001000,B10001000,B10001000}
    #define LO{B00000000,B01110000,B10001000,B10001000,B10001000,B01110000}
    #define LP{B00000000,B11110000,B10001000,B11110000,B10000000,B10000000}
    #define LQ{B00000000,B01101000,B10011000,B01111000,B00001000,B00001000}
    #define LR{B00000000,B00000000,B10110000,B11001000,B10000000,B10000000}
    #define LS{B00000000,B01110000,B10000000,B01110000,B00001000,B11110000}
    #define LT{B01000000,B01000000,B11100000,B01000000,B01001000,B00110000}
    #define LU{B00000000,B00000000,B10001000,B10001000,B10011000,B01101000}
    #define LV{B00000000,B00000000,B10001000,B10001000,B01010000,B00100000}
    #define LW{B00000000,B00000000,B10001000,B10101000,B10101000,B01010000}
    #define LX{B00000000,B10001000,B01010000,B00100000,B01010000,B10001000}
    #define LY{B00000000,B10001000,B10001000,B01111000,B00001000,B01110000}
    #define LZ{B00000000,B11111000,B00010000,B00100000,B01000000,B11111000}
    #define SPACE{B00000000,B00000000,B00000000,B00000000,B00000000,B00000000}
    #define NUM0{B01110000,B10011000,B10101000,B10101000,B11001000,B01110000}
    #define NUM1{B00100000,B01100000,B10100000,B00100000,B00100000,B01110000}
    #define NUM2{B01110000,B10001000,B00001000,B01110000,B10000000,B11111000}
    #define NUM3{B11110000,B00001000,B00001000,B01111000,B00001000,B11110000}
    #define NUM4{B10001000,B10001000,B10001000,B11111000,B00001000,B00001000}
    #define NUM5{B11111000,B10000000,B11110000,B00001000,B10001000,B01110000}
    #define NUM6{B11111000,B10000000,B11111000,B10001000,B10001000,B11111000}
    #define NUM7{B11111000,B00001000,B00001000,B01111000,B00001000,B00001000}
    #define NUM8{B11111000,B10001000,B11111000,B10001000,B10001000,B11111000}
    #define NUM9{B11111000,B10001000,B11111000,B00001000,B00001000,B11111000}
    #define DEVIDE{B00001000,B00010000,B00100000,B00100000,B01000000,B10000000}
    #define TWODOTS{B01100000,B01100000,B00000000,B00000000,B01100000,B01100000}
    #define DOT{B00000000,B00000000,B00000000,B00000000,B01100000,B01100000}
    #define COMA{B00000000,B00000000,B00000000,B00110000,B00110000,B01100000}
    #define LINE{B00000000,B00000000,B11111000,B11111000,B00000000,B00000000}
    #define QUASTION{B01110000,B10001000,B00010000,B00100000,B00000000,B00100000}
    #define MARK{B00100000,B01110000,B01110000,B00100000,B00000000,B00100000}
     
    int latchPin = 10;
    int clockPin = 13;
    int dataPin = 11;
    int clock = 9;
    int Reset = 8;
    int latchPinPORTB = latchPin - 8;
    int clockPinPORTB = clockPin - 8;
    int dataPinPORTB = dataPin - 8;
    int i = 0;
    int incomingByte[44];
    long scrolling_word[6];
    int array_turn=0;
    byte patterns[100][6];
    byte dummy_array[70][6] ={BA,BB,BC,BD,BE,BF,BG,BH,BI,BJ,BK,BL,BM,BN,BO,BP,BQ,BR,BS,BT,BU,BV,BW,BX,BY,BZ,SPACE,NUM0,NUM1,NUM2,NUM3,NUM4,NUM5,NUM6,NUM7,NUM8,NUM9,DEVIDE,TWODOTS,DOT,COMA,LINE,QUASTION,MARK,LA,LB,LC,LD,LE,LF,LG,LH,LI,LJ,LK,LL,LM,LN,LO,LP,LQ,LR,LS,LT,LU,LV,LW,LX,LY,LZ};
    void setup(){
      Serial.begin(9600);
      pinMode(dataPin,OUTPUT);
      pinMode(clockPin,OUTPUT);
      pinMode(latchPin,OUTPUT);
      pinMode(clock,OUTPUT);
      pinMode(Reset,OUTPUT);
      digitalWrite(Reset,HIGH);
      digitalWrite(Reset,LOW);
      setupSPI();
    }
     
    void display_word(int loops,byte word_print[][6],int num_patterns,int delay_langth){// this function displays your symbols
      i = 0;// resets the counter fot the 4017
      for(int g=0;g<6;g++)//resets the the long int where your word goes
        scrolling_word[g] = 0;
      for(int x=0;x<num_patterns;x++){//main loop, goes over your symbols
       // you will need to find a better way to make the symbols scroll my way is limited for 24 columns
     
       for(int r=0;r<6;r++)//puts the buildes the first symbol
          scrolling_word[r] |= word_print[x][r]; 
        for (int z=0;z<6;z++){//the sctolling action
            for(int p=0;p<6;p++)
              scrolling_word[p] = scrolling_word[p] << 1;
    // end of the scrolling funcion
          for(int t=0;t<delay_langth;t++){// delay function, it just loops over the same display
            for(int y=0;y<6;y++){// scaning the display
              if(i == 6){// counting up to 6 with the 4017
                digitalWrite(Reset,HIGH);
                digitalWrite(Reset,LOW);
                i = 0;
              }
              latchOff();
              spi_transfer(make_word(0x01000000,y));// sending the data
              spi_transfer(make_word(0x00010000,y));
              spi_transfer(make_word(0x00000100,y));
              latchOn();
              delayMicroseconds(800);//waiting a bit
              latchOff();
              spi_transfer(0);// clearing the data
              spi_transfer(0);
              spi_transfer(0);
              latchOn();
              digitalWrite(clock,HIGH);//counting up with the 4017
              digitalWrite(clock,LOW);
              i++;
            }
          }
        }
      }
      finish_scroll(delay_langth);
    }
     
    void finish_scroll(int delay_scroll){// this function is the same as the funcion above, it just finishing scrolling
      for (int n=0;n<24;n++){
            for(int h=0;h<6;h++)
              scrolling_word[h] = scrolling_word[h] << 1;
          for(int w=0;w<delay_scroll;w++){
            for(int k=0;k<6;k++){
              if(i == 6){
                digitalWrite(Reset,HIGH);
                digitalWrite(Reset,LOW);
                i = 0;
              }
              latchOff();
              spi_transfer(make_word(0x01000000,k));
              spi_transfer(make_word(0x00010000,k));
              spi_transfer(make_word(0x00000100,k));
              latchOn();
              delayMicroseconds(800);
              latchOff();
              spi_transfer(0);
              spi_transfer(0);
              spi_transfer(0);
              latchOn();
              digitalWrite(clock,HIGH);
              digitalWrite(clock,LOW);
              i++;
            }
          }
        }
    }
     
    byte make_word (long posistion,byte turn){
      byte dummy_word = 0;
      for(int q=0;q<8;q++){
        if(scrolling_word[turn] & (posistion<<q))
          dummy_word |= 0x01<<q;
      }
      return dummy_word;
    }   
     
      void loop() {
     
      // send data only when you receive data:
      if(Serial.available() > 0){
        delay(100);
        incomingByte[array_turn] = Serial.read();
                    array_turn++;
      }
               else{
                 if(array_turn != 0){ 
                   for(int az=0;az<array_turn;az++){
                     if((incomingByte[az] > 64 && incomingByte[az] < 91) || (incomingByte[az] > 96 && incomingByte[az] < 123)){
                      if(incomingByte[az] > 64 && incomingByte[az] < 91){
                       for(int lal=0;lal<6;lal++)                 
                     patterns[az][lal] = dummy_array[incomingByte[az] - 65][lal];
                   }
                   else{
                     for(int lal=0;lal<6;lal++)                 
                     patterns[az][lal] = dummy_array[incomingByte[az] - 53][lal];
                   }}
                   else{
                     switch(incomingByte[az]){
                    case 32://space
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[26][lol];
                     break;
                    case 33://mark
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[43][lol];
                     break;
                    case 45://line
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[41][lol];
                     break;                 
                     case 44://coma
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[40][lol];
                     break;
                     case 46://dot
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[39][lol];
                     break;
                     case 47://dvide
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[37][lol];
                     break;
                     case 48://0
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[27][lol];
                     break;
                     case 49://1
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[28][lol];
                     break;
                     case 50://2
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[29][lol];
                     break;
                     case 51://3
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[30][lol];
                     break;
                     case 52://4
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[31][lol];
                     break;
                     case 53://5
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[32][lol];
                     break;
                     case 54://6
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[33][lol];
                     break;
                     case 55://7
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[34][lol];
                     break;
                     case 56://8
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[35][lol];
                     break;
                     case 57://9
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[36][lol];
                     break;
                     case 58://tow dots
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[38][lol];
                     break;
                     case 63://quastion
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[42][lol];
                     break;
                     default:
                     for(int lol=0;lol<6;lol++)                 
                     patterns[az][lol] = dummy_array[26][lol];
                     break; 
                     }
                   }               
                 }
               }
              display_word(1,patterns,array_turn,15);
              array_turn =0; 
             } 
           }
     
      //display_word(1,patterns,43,15);// calls for the display_pattern function and says that int loop = 15(if you do more loop the pattern whould scrrol slower).
     
    void latchOn(){
      bitSet(PORTB,latchPinPORTB);
    }
     
    void latchOff(){
      bitClear(PORTB,latchPinPORTB);
    }
     
    void setupSPI(){
      byte clr;
      SPCR |= ( (1<<SPE) | (1<<MSTR) ); // enable SPI as master
      //SPCR |= ( (1<<SPR1) | (1<<SPR0) ); // set prescaler bits
      SPCR &= ~( (1<<SPR1) | (1<<SPR0) ); // clear prescaler bits
      clr=SPSR; // clear SPI status reg
      clr=SPDR; // clear SPI data reg
      SPSR |= (1<<SPI2X); // set prescaler bits
      //SPSR &= ~(1<<SPI2X); // clear prescaler bits
     
      delay(10);
    }
    byte spi_transfer(byte data)
    {
      SPDR = data;        // Start the transmission
      while (!(SPSR & (1<<SPIF)))     // Wait the end of the transmission
      {
      };
      return SPDR;        // return the received byte, we don't need that
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Pour commencer, il faut modifier la définition des caractères pour passer d'une hauteur de 6 à 8 pixels. Solution rapide : ajouter des 0 au début et à la fin de chaque définition.

    Par exemple pour le 9, tu passes de :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    #define NUM9{B11111000,B10001000,B11111000,B00001000,B00001000,B11111000}
    À :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    #define NUM9{B00000000,B11111000,B10001000,B11111000,B00001000,B00001000,B11111000,B00000000}
    Ce qui transforme :
    11111000
    10001000
    11111000
    00001000
    00001000
    11111000
    En :
    00000000
    11111000
    10001000
    11111000
    00001000
    00001000
    11111000
    00000000
    Si tu veux un rendu plus joli, il existe des générateurs de code à partir de polices sur internet (par exemple The Dot Factory).

    Ensuite, tu peux essayer en remplaçant les 6 par des 8 et les 24 par des 48 dans le code. Si ça ne marche pas, tu n'auras pas d'autres choix que d'analyser et de bien comprendre le code pour l'adapter à la nouvelle longueur du panneau.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 55
    Points
    55
    Par défaut
    Merci beaucoup Jerome pour ce petit fil grâce à ta réponse je commence à y voir claire et comme vous m'avez dit je tacherai de changer quelques lignes du code qui concerne les 6 et les 24 et l'essayer pour voir ce que ça donnerai

    Merci encore

Discussions similaires

  1. Modifier le code d'1 evenement
    Par michka13 dans le forum Access
    Réponses: 3
    Dernier message: 24/02/2006, 10h46
  2. Pb pour modifier un code. Code vérouillé ?
    Par oz80 dans le forum Access
    Réponses: 1
    Dernier message: 03/11/2005, 14h23
  3. [NetBeans] modifier le code
    Par flonardi dans le forum NetBeans
    Réponses: 7
    Dernier message: 28/10/2005, 19h25
  4. CSS comment puis-je modifier mon code pr avoir un bord blanc
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 30/09/2005, 20h19
  5. Modifier le code après la compilation, c'est possible?
    Par marcus333 dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2005, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo