Go Down

Topic: Problème Led matrix Attiny2313 (Read 2894 times) previous topic - next topic

JS7777

Aug 12, 2015, 09:09 pm Last Edit: Oct 22, 2017, 02:08 am by JS7777
Bonjour,

J'ai réussi à faire afficher des lettres et symboles avec une matrix de led 8x8 1088AS Anode avec un attiny2313V comme cela (ce n'est pas ma photo) :



l'attiny est en dessous la matrix de led :

pin 1 de la matrix est au pin 2 de l'attiny
pin 2 de la matrix est au pin 3 de l'attiny
etc...
pin 16 de la matrix au pin 19 de l'attiny


Maintenant ce que j'ai fait c'est ça :



Mais comme j'inverse le sens de l'attiny2313 il faut que je modifie le code pour que la matrix n'affiche pas n'importe quoi et c'est là que j'arrive pas.

pin 1 de la matrix n'est plus au pin 2 mais au pin 19
pin 2 de la matrix n'est au pin 3 de l'attiny mais au pin 18
etc...
pin 16 de la matrix n'est au pin 19 de l'attiny mais au pin 2


Les pins (broches) du haut en été inversés avec ceux du bas et l'inverse.

Schéma matrix led :


Code qui marche sans retourner l'attiny2313 :
Code: [Select]
#include <avr/pgmspace.h>

const int row[8]={ //Row pins
1,2,11,5,10,3,15,13 };
const int col[8]={ //Column pins
9,14,7,12,0,6,16,4};

PROGMEM const byte font8x8[40][8] = { //Font matrix
  {
    0x80, 0x60, 0x18, 0x14, 0x13, 0x3C, 0xC0, 0x00      }
  ,  // Code for char A 0
  {
    0x00, 0xFF, 0x91, 0x91, 0x99, 0x66, 0x00, 0x00      }
  ,  // Code for char B 1
  {
    0x78, 0x84, 0x82, 0x81, 0x81, 0x43, 0x00, 0x00      }
  ,  // Code for char C 2
  {
    0x00, 0xFF, 0x81, 0x82, 0x82, 0x44, 0x38, 0x00      }
  ,  // Code for char D 3
  {
    0x00, 0xFF, 0x89, 0x89, 0x89, 0x89, 0x00, 0x00      }
  ,  // Code for char E 4
  {
    0x00, 0xFF, 0x09, 0x09, 0x09, 0x01, 0x00, 0x00      }
  ,  // Code for char F 5
  {
    0x78, 0x84, 0x92, 0x91, 0x91, 0x51, 0x32, 0x00      }
  ,  // Code for char G 6
  {
    0x00, 0xFF, 0x08, 0x08, 0x08, 0x08, 0xFF, 0x00      }
  ,  // Code for char H 7
  {
    0x81, 0x81, 0xFF, 0x81, 0x81, 0x00, 0x00, 0x00      }
  ,  // Code for char I 8
  {
    0x60, 0x80, 0x81, 0x81, 0xFF, 0x01, 0x01, 0x00      }
  ,  // Code for char J 9
  {
    0x00, 0xFF, 0x18, 0x24, 0x42, 0x81, 0x00, 0x00      }
  ,  // Code for char K 10
  {
    0x00, 0xFF, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00      }
  ,  // Code for char L 11
  {
    0xC0, 0x38, 0x07, 0x38, 0xC0, 0x38, 0x07, 0xF8      }
  ,  // Code for char M 12
  {
    0x00, 0xFF, 0x02, 0x0C, 0x10, 0x20, 0x40, 0xFF      }
  ,  // Code for char N 13
  {
    0x00, 0x7C, 0x82, 0x81, 0x81, 0x81, 0x41, 0x3E      }
  ,  // Code for char O 14
  {
    0x00, 0xFF, 0x21, 0x21, 0x1E, 0x00, 0x00, 0x00      }
  ,  // Code for char P 15
  {
    0x00, 0x3C, 0x42, 0x81, 0xA1, 0x41, 0x81, 0x7E      }
  ,  // Code for char Q 16
  {
    0x00, 0xFF, 0x11, 0x31, 0x4E, 0x80, 0x00, 0x00      }
  ,  // Code for char R 17
  {
    0x00, 0x40, 0x86, 0x89, 0x89, 0x89, 0x71, 0x00      }
  ,  // Code for char S 18
  {
    0x01, 0x01, 0x01, 0xFF, 0x01, 0x01, 0x01, 0x00      }
  ,  // Code for char T 19
  {
    0x00, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00      }
  ,  // Code for char U 20
  {
    0x00, 0x07, 0x78, 0x80, 0x78, 0x07, 0x00, 0x00      }
  ,  // Code for char V 21
  {
    0xFF, 0xE0, 0x30, 0x18, 0x18, 0x70, 0xC0, 0xFF      }
  ,  // Code for char W 22
  {
    0x81, 0x42, 0x24, 0x18, 0x24, 0x42, 0x81, 0x00      }
  ,  // Code for char X 23
  {
    0x01, 0x06, 0xD8, 0x30, 0x0E, 0x01, 0x00, 0x00      }
  ,  // Code for char Y 24
  {
    0xC1, 0xA1, 0x91, 0x89, 0x85, 0x83, 0x81, 0x00      }
  ,   // Code for char Z 25
  {
    0x0E, 0x1F, 0x7F, 0xFE, 0xFE, 0x7F, 0x1F, 0x0E     }
  , // Code for HEART 26
  {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00    }, // Code for SPACE 27
   
 
{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0 - 28
{0x10,0x30,0x50,0x10,0x10,0x10,0x10,0x10},//1 - 29
{0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E},//2 - 30
{0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0},//3 - 31
{0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8},//4 - 32
{0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0},//5 - 33
{0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0},//6 - 34
{0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8},//7 - 35
{0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E},//8 - 36
{0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E},//9 - 37


{0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30}, // J debout - 38
{0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C},// S debout - 39

};


void setup() {               
  for(int i=0;i<8;i++){
    pinMode(row[i], OUTPUT);    //Set row pins as output
    pinMode(col[i],OUTPUT);     //Set column pins as output
    digitalWrite(row[i], LOW);   // turn off rows
    digitalWrite(col[i], HIGH);   // turn off columns
  } 
}


void display_char(int character ){
  for (int i=0;i<8;i++){ //Cycle through columns

    byte coldata = pgm_read_byte(&font8x8[character][i]); //read column data from PROGMEM
    digitalWrite(col[i],LOW); //Allow current flow in the i'th column
    for(int j=0;j<8;j++){ //cycle through row data

      int x = bitRead(coldata,j); //Read the first bit from the byte (coldata)
      digitalWrite(row[j],x);     // Set the row to 1 or 0

    }
    delayMicroseconds(300);  //Delay for 300us between each segment/column. Don't go bellow 300us!!
    clearOutput(); //turn off display
  }

}
void clearOutput(){
  for(int i=0;i<8;i++){
    digitalWrite(row[i],LOW); //Turn off rows
    digitalWrite(col[i],HIGH); //Turn off columns
  }
}

void loop() {
  //byte msg[]={8,27,26,27,20,27,9,0,2,10,11,8,13,4}; //Message to be displayed. Numbers corresponds to the position of each letter in the font matrix.
    byte msg[]={27,38,39,35,32,33,35};                                              // In this case the message would be "I 'HEART' U JACKLINE"
for(int i = 0;i<7;i++){ // For each character in msg (total of 14 characters)
    int count=0;       
  while(count<150){
    display_char(msg[i]); //Show the same letter 250 times ~ 250*8*300us = 0.6s for each letter.
    count++;
  }
  delayMicroseconds(100); //Delay between each character for stability
}
}


Si quelqu'un peut modifier mon code ça sera gentil !

PS : Je programme l'attiny2313 avec un Arduino Uno

Merci d'avance

dfgh

un petit effort avec un papier et un crayon .........

testes avec ça
Code: [Select]

//const int row[8]={1,2,11,5,10,3,15,13 };//avant
const int row[8]={16,15,6,12,7,14,2,4 };//apres

//const int col[8]={9,14,7,12,0,6,16,4};//avant
const int col[8]={8,3,10,5,0,11,1,13};//apres

JS7777

Je te remercie, je vais tester.

J'avais comme même essayé mais je me suis emmêlé et je n'ai pas trop compris à quoi correspondait les chiffres dans le code.

dfgh


JS7777

Ça ne marche pas, cela affiche du n'importe quoi.

Je viens de voir que j'ai fait une erreur quand j'ai copié mon code sur mon premier post :

c'est plutôt :
Code: [Select]
const int row[8]={ //Row pins
16,15,11,5,10,3,2,13 };
const int col[8]={ //Column pins
9,14,7,12,0,6,1,4};



dfgh

Code: [Select]

//const int row[8]={16,15,11,5,10,3,2,13 };//avant
  const int row[8]={1,2,6,12,7,14,15,4 };//apres

[s]//const int col[8]={9,14,7,12,0,6,1,4};//avant[/s]
[s]  const int col[8]={8,3,10,5,0,11,16,13};//apres[/s]


nota :comme je ne vois pas ce que viens faire un 0 ( zéro) dans la déclaration des pinoches, je suppose que c'est un huit. et si c'est bien un huit il faut changer
//const int col[8]={9,14,7,12,0,6,1,4};//avant
  const int col[8]={8,3,10,5,9,11,16,13};//apres



JS7777

#6
Aug 13, 2015, 08:03 pm Last Edit: Aug 13, 2015, 08:03 pm by JS7777
Merci mais cela ne marche pas non plus, ça affiche n'importe quoi même en changeant le 8.

Moi aussi le 0 me semble étrange, voilà d'ou j'ai pris le code :

http://forum.arduino.cc/index.php?topic=116477.0

J'ai du changer ça :

Code: [Select]
const int row[8]={ //Row pins
  9,14,7,12,0,6,1,4};
const int col[8]={ //Column pins
  13,2,3,10,5,11,15,16};


en ça : (car ma matrix de led est anode et non cathode)

Code: [Select]
const int row[8]={ //Row pins
16,15,11,5,10,3,2,13 };
const int col[8]={ //Column pins
9,14,7,12,0,6,1,4};


Je vais retester avec l'attiny2313 à l'endroit.

JS7777

Je retester avec avec l'attiny2313 à l'endroit et cela marche correctement mais pas quand on inverse le sens.

bizarre...

dfgh

donc à l'endroit, avec cette déclaration, ca fonctionne
const int row[8]={ //Row pins
16,15,11,5,10,3,2,13 };
const int col[8]={ //Column pins
9,14,7,12,0,6,1,4};
et attiny <===>  matrice    si matrice inversée   

      2                      1                         16
      3                      2                         15
      4                      3                         14
      5                      4                         13
      6                      5                         12
      7                      6                         11
      8                      7                         10
      9                      8                           9
      10                rien                        rien
      11                rien                        rien
      12                     9                          8
      13                    10                         7
      14                    11                         6
      15                    12                         5
      16                    13                         4
      17                    14                         3
      18                    15                         2
      19                    16                         1
      20                 rien                       rien

JS7777

#9
Aug 13, 2015, 09:51 pm Last Edit: Aug 13, 2015, 09:52 pm by JS7777
C'est ca oui, ca me semble logique mais cela montre du n'importe quoi au lieu de lettre.

Par contre le 0 est étrange.

Ah mais ça ne serait pas plutôt les pins de l'attiny non ?

le 0 correspondrait a PD0 > pin 2 de l'attiny.

http://www.fibidi.com/wp-content/uploads/2012/06/attiny2313-pinout.jpg


dfgh

tu me dis que ta matrice de leds est inversée par rapport à celle faite pour le code d'origine.
que ta matrice est à anodes communes sur les colonnes alors que la matrice prévue pour le prog est à cathodes communes sur les colonnes.
effectivement, on peut penser qu'il s'agit des pinoches du µ, mais cela s'arête à 16

par contre ton schéma du µ, il comporte une numérotation qui n'a rien a voir avec la réalité de l'attiny

ce schéma est il fourni avec le prog ? tout deviendrait plus facile

JS7777

#11
Aug 13, 2015, 11:05 pm Last Edit: Aug 13, 2015, 11:18 pm by JS7777
Quote
tu me dis que ta matrice de leds est inversée par rapport à celle faite pour le code d'origine.
Plutôt l'attiny.

Quote
que ta matrice est à anodes communes sur les colonnes alors que la matrice prévue pour le prog est à cathodes communes sur les colonnes.
exact mais je l'ai modifié (attiny à l'endroit)

Quote
effectivement, on peut penser qu'il s'agit des pinoches du µ, mais cela s'arête à 16
oui mais ces pinoches ont les utilises dans le programme, si veut faire clignoter une led à la broche au pin 4 de l'attiny il faudra mettre pin 2 dans le code.
 
Quote
ce schéma est il fourni avec le prog ? tout deviendrait plus facile
Non, j'ai vu ça sur google. Vu qu'il y avait un 0 j'ai pensé à ça.


attiny <===>  matrice    si matrice inversée     attiny pin pour le code 

      2                      1                         16                  0
      3                      2                         15                  1
      4                      3                         14                  2
      5                      4                         13                  3
      6                      5                         12                  4
      7                      6                         11                  5
      8                      7                         10                  6
      9                      8                           9                  7
      10                rien                        rien
      11                rien                        rien       
      12                     9                          8                   9 
      13                    10                         7                  10
      14                    11                         6                  11
      15                    12                         5                  12
      16                    13                         4                  13
      17                    14                         3                  14
      18                    15                         2                  15
      19                    16                         1                  16
      20                 rien                       rien

dfgh

un espoir de retrouver la source?

JS7777

#13
Aug 13, 2015, 11:20 pm Last Edit: Aug 13, 2015, 11:21 pm by JS7777
Je parlais du schéma : "ce schéma est il fourni avec le prog ? tout deviendrait plus facile"

C'est moi qui a ajouté la colonne de droite:

   attiny <===>  matrice    si matrice inversée     attiny pin pour le code 

      2                      1                         16                  0
      3                      2                         15                  1
      4                      3                         14                  2
      5                      4                         13                  3
      6                      5                         12                  4
      7                      6                         11                  5
      8                      7                         10                  6
      9                      8                           9                  7
      10                rien                        rien
      11                rien                        rien       
      12                     9                          8                   9 
      13                    10                         7                  10
      14                    11                         6                  11
      15                    12                         5                  12
      16                    13                         4                  13
      17                    14                         3                  14
      18                    15                         2                  15
      19                    16                         1                  16
      20                 rien                       rien

dfgh

non, je parlais bien du schéma de l'attiny, il y a des entetes de colonne en haut, à gauche et à droite qui disent "PIN dans le CODE"

d'où ma question, ce schéma est il donné avec ton code

pour la matrice inversée ( cathode/anode )
il aurait fallu, je pense, inverser les commandes dans le code

par exemple ici
Code: [Select]

void clearOutput(){
  for(int i=0;i<8;i++){
    digitalWrite(row[i],LOW); //Turn off rows
    digitalWrite(col[i],HIGH); //Turn off columns
  }
}

Go Up