Bonjour,
Je poursuis mes petits essais avec les leds.
J'avais un module 8x8 monochrome 1088BS dans mes "réserves"...Il faisait partie d'un kit pour expérimenter les applications d'un livre...MAIS le module fourni n'était pas le même que celui décrit dans le bouquin...Donc quelques chipotages pour arriver à comprendre.
NB j'ai aussi un module 8x8 avec driver jamais utilisé! Ce sera pour après!
C'était aussi une histoire d'anodes et de cathodes. Problème résolu.
Voici le sketch qui correspond (après quelques modifs de ma part à celui fourni avec le bouquin).
Il fonctionne et permet d'afficher l'une des icones (ou lettres mises sous forme de matrice) .
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
 
// Dot_matrix_ICONS.ino
 
#define Heart {{0, 1, 0, 0, 0, 1, 0, 0}, \
{1, 0, 1, 0, 1, 0, 1, 0}, \
{1, 0, 0, 1, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 1, 0, 0}, \
{0, 0, 1, 0, 1, 0, 0, 0}, \
{0, 0, 0, 1, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0} \
}
#define Arrow {{0, 0, 0, 0, 1, 0, 0, 0}, \
{0, 0, 0, 0, 0, 1, 0, 0}, \
{0, 0, 0, 0, 0, 0, 1, 0}, \
{1, 1, 1, 1, 1, 1, 1, 1}, \
{1, 1, 1, 1, 1, 1, 1, 1}, \
{0, 0, 0, 0, 0, 0, 1, 0}, \
{0, 0, 0, 0, 0, 1, 0, 0}, \
{0, 0, 0, 0, 1, 0, 0, 0} \
}
#define Anchor {{0, 0, 0, 1, 1, 0, 0, 0}, \
{0, 0, 1, 1, 1, 1, 0, 0}, \
{0, 0, 0, 1, 1, 0, 0, 0}, \
{0, 0, 0, 1, 1, 0, 0, 0}, \
{1, 0, 0, 1, 1, 0, 0, 1}, \
{1, 0, 0, 1, 1, 0, 0, 1}, \
{0, 1, 0, 1, 1, 0, 1, 0}, \
{0, 0, 1, 1, 1, 1, 0, 0} \
}
#define Space {{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0} \
}
#define J {{1, 1, 1, 1, 1, 0, 0, 0}, \
{0, 0, 0, 0, 1, 0, 0, 0}, \
{0, 0, 0, 0, 1, 0, 0, 0}, \
{0, 0, 0, 0, 1, 0, 0, 0}, \
{1, 1, 0, 0, 1, 0, 0, 0}, \ 
{1, 0, 0, 0, 1, 0, 0, 0}, \
{1, 0, 0, 0, 1, 0, 0, 0}, \
{0, 1, 1, 1, 0, 0, 0, 0}, \
}
#define E {{1, 1, 1, 1, 1, 0, 0, 0}, \
{1, 0, 0, 0, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0, 0, 0, 0}, \
{1, 1, 1, 0, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0, 0, 0, 0}, \
{1, 1, 1, 1, 1, 0, 0, 0}, \
}
//
byte column = 0;
byte LEDs[8][8];
int col[8] = {6, 11, 10, 3, 17, 4, 8, 9};
int row[8] = {2, 7, 19, 5, 13, 18, 12, 16};
byte patterns[1][8][8] = { E }; //{ Heart, Arrow, Anchor };
//
void setup()
{ for (int i = 2; i <= 19; i++) pinMode(i, OUTPUT);
for (int i = 1; i <= 8; i++) digitalWrite(col[i - 1], HIGH);
for (int i = 1; i <= 8; i++) digitalWrite(row[i - 1], HIGH);
}
//
void loop() 
{
for (int k=1; k=2;k++)
{if (k=1); 
{
clearArray();  
setPattern(0);
updateDisplay();
}
}
}
//
void clearArray()
{ for (int i = 0; i < 8; i++)
{ for (int j = 0; j < 8; j++) LEDs[i][j] = 0;
}
}
//
void setPattern(int pattern)
{ for (int i = 0; i < 8; i++)
{ for (int j = 0; j < 8; j++) LEDs[i][j] = patterns[pattern][j][i];
}
}
//
void updateDisplay()
{ 
  for(int i = 0; i<8;i++)
  {digitalWrite(col[i], HIGH);
  digitalWrite(row[i], LOW);
  }
//
column++;
if (column ==8) column = 0;
for (int r = 0; r < 8; r++)
{ if (LEDs[column][r] == 1) digitalWrite(row[r], HIGH);
else digitalWrite(row[r], LOW);
}
digitalWrite(col[column], LOW);        
}
Je ne suis pas certain que mon code s'est bien installé!!!! Je ne sais plus comment le mettre bien avec des balises code. Désolé.
Dans les premières accolades de la ligne:
byte patterns[1][8][8] = { E }; //{ Heart, Arrow, Anchor };,
je peux choisir l'icone que je veux voir apparaître sur le module. Et il y reste!
Ce que je souhaite faire c'est faire défiler plusieurs icones (dans un premier temps: une icone apparait 1 seconde, puis une autre apparait et ainsi de suite (en indiquant d'avance quelles icones doivent se succéder).
J'ai essayé 36 solutions mais rien ne marche.
Qui peut me donner une piste de solution?
Merci d'avance
Roland