Expected '}' before numeric constant

Fermé
Magikscubes - Modifié le 21 déc. 2020 à 17:43
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 21 déc. 2020 à 21:30
Bonjour,



Configuration: Windows / Chrome 87.0.4280.88


J'ai une erreur sur un programme Arduino, je souhaiterai savoir si c'est possible de le résoudre.
voila mon programme : (l'erreur se trouvant a #define data_ascii_A 0x02,0x0C,0x18,0x68,0x68,0x18,0x0C,0x02)
#define display_array_size 8
#define data_null 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
#define data_ascii_A 0x02,0x0C,0x18,0x68,0x68,0x18,0x0C,0x02
#define data_ascii_C 0x00,0x3C,0x66,0x42,0x42,0x42,0x2C,0x00
#define data_ascii_D 0x00,0x7E,0x42,0x42,0x42,0x66,0x3C,0x00
#define data_ascii_E 0x00,0x7E,0x52,0x52,0x52,0x52,0x52,0x42
#define data_ascii_I 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00
#define data_ascii_R 0x41,0x21,0x11,0x39,0x41,0x41,0x41,0x7f
#define data_ascii_0 0x7f,0x41,0x41,0x41,0x41,0x41,0x41,0x7f
#define data_ascii_M 0x41,0x41,0x41,0x41,0x41,0x49,0x55,0x63
// display array
byte data_ascii[][display_array_size] =
{
data_null,
47
data_ascii_A, data_ascii_R, data_ascii_C, data_ascii_D, data_ascii_E, data_ascii_I, data_ascii_0, data_ascii_M};
const int row1 = 2;
const int row2 = 3;
const int row3 = 4;
const int row4 = 5;
const int row5 = 17;
const int row6 = 16;
const int row7 = 15;
const int row8 = 14;

const int col1 = 6;
const int col2 = 7;
const int col3 = 8;
const int col4 = 9;
const int col5 = 10;
const int col6 = 11;
const int col7 = 12;
const int col8 = 13;
void displayNum(byte rowNum,int colNum)
{
int j;
byte temp = rowNum;
for(j=2;j<6;j++)
{
digitalWrite(j, LOW);
}
digitalWrite(row5, LOW);
digitalWrite(row6, LOW);
digitalWrite(row7, LOW);
digitalWrite(row8, LOW);
for(j=6;j<14;j++)
{
digitalWrite(j, HIGH); }
switch(colNum)
48
{
case 1: digitalWrite(col1, LOW); break;
case 2: digitalWrite(col2, LOW); break;
case 3: digitalWrite(col3, LOW); break;
case 4: digitalWrite(col4, LOW); break;
case 5: digitalWrite(col5, LOW); break;
case 6: digitalWrite(col6, LOW); break;
case 7: digitalWrite(col7, LOW); break;
case 8: digitalWrite(col8, LOW); break;
default: break;
}
for(j = 1 ;j < 9; j++)
{
temp = (0x80)&(temp) ;
if(temp==0)
{
temp = rowNum<<j;
continue;
}
switch(j)
{
case 1: digitalWrite(row1, HIGH); break;
case 2: digitalWrite(row2, HIGH); break;
case 3: digitalWrite(row3, HIGH); break;
case 4: digitalWrite(row4, HIGH); break;
case 5: digitalWrite(row5, HIGH); break;
case 6: digitalWrite(row6, HIGH); break;
case 7: digitalWrite(row7, HIGH); break;
case 8: digitalWrite(row8, HIGH); break;
default: break;
}
temp = rowNum<<j;
}
}
void setup(){
int i = 0 ;
for(i=2;i<18;i++)
{
pinMode(i, OUTPUT);
}
for(i=2;i<18;i++) {
digitalWrite(i, LOW);
49
}
}
void loop(){
int t1;
int l;
int arrage;
for(arrage=0;arrage<10;arrage++)
{
for(l=0;l<512;l++)
{
for(t1=0;t1<8;t1++)
{
displayNum(data_ascii[arrage][t1],(t1+1));
}
}
}
}

2 réponses

NHenry Messages postés 15163 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 1 novembre 2024 345
21 déc. 2020 à 18:53
Je remarque juste que sur :
#define data_null 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
#define data_ascii_A 0x02,0x0C,0x18,0x68,0x68,0x18,0x0C,0x02

Le premier tu as mis des espaces entre les valeurs et pas à la ligne suivante.

0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
21 déc. 2020 à 21:30
Bonjour,

Les espaces n'ont aucune signification particulière en C, par contre tu as oublié de mettre une virgule après le 47 et il faut aussi mettre les 7 autres nombres qui manquent; A moins que 47 ne soit de trop. Une autre notation possible (elle insérera 7 valeurs nulles après le 47) :
byte data_ascii[][display_array_size] = 
{
    {data_null},
    {47},
    {data_ascii_A}, {data_ascii_R}, {data_ascii_C}, {data_ascii_D}, {data_ascii_E}, 
    {data_ascii_I}, {data_ascii_0}, {data_ascii_M}
};
0