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 :
#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

