Librairie LCD Nokia 5110

Bonjour, j'ai voulu créer une librairie pour l'IDE arduino 022 pour utiliser facilement l'ecran LCD Nokia 5110.
En prenant le code officiel et en faisant une librairie j'ai fais ça: N5110

Mon problème c'est que je n'arrive pas a créer le tableau ASCII, il y a toujours une erreur quand je compile...
savez vous d'ou cela peut venir et comment le corriger ?

EDIT:

Librairie terminée:

Si tu ne donnes pas le code, et surtout si tu ne nous dis pas les erreurs affichées, c'est difficile de t'aider.

As tu placé cette librairy dans le bon répertoire ?

Sinon il y a une librairie compatible il me semble avec ton ecran sur ce tuto :

http://www.arduino.cc/playground/Code/PCD8544

... ... ... J'ai mis la librairie donc le code dans le fichier .zip sur mediafire !
l'erreur est:

C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\Nokia.cpp: In constructor 'Nokia::Nokia(int, int, int, int, int)':
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\Nokia.cpp:31: error: expected primary-expression before '{' token
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\Nokia.cpp:31: error: expected `;' before '{' token
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\Nokia.cpp:196: error: expected `}' at end of input

C'est justement a partir de ce code (qui n'est pas une librairie !) que j'ai fait ma librairie !

Bonjour,
pour la ligne 30 de ton fichier Nokia.cpp essais donc

static const byte ASCII[][5] = {

j'ai pas tester mais je crois que sa devrais aider

Mais la déclaration dans le .h ne suffit pas normalement ?

Et bien plus d'erreur durant l'initialisation du tableau mais ASCII est introuvable ...

N5110\Nokia.cpp.o: In function `Nokia::writechar(char)':
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110/Nokia.cpp:156: undefined reference to `Nokia::ASCII'
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110/Nokia.cpp:156: undefined reference to `Nokia::ASCII'
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110/Nokia.cpp:157: undefined reference to `Nokia::ASCII'
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110/Nokia.cpp:157: undefined reference to `Nokia::ASCII'

Il y a bien moyen de mettre ASCII dans la fonction (c'est la seule a l'utiliser) mais ça va être moche et lourd ...

Merci de ton aide :slight_smile:

Salut,

La déclaration dans le fichier d'entête est bonne. C'est la définition dans le constructeur qui pose problème. Il faut la sortir et la placer avant :

byte Nokia::ASCII[][5] = {
 {0x00, 0x00, 0x00, 0x00, 0x00} // 20  
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
// ...
,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ?
,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f ?
};

Nokia::Nokia(int SCLK,int SDIN, int DC, int RESET, int SCE)
{
    // ...
}

Si je fais comme ça y me met ça...

C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\Nokia.cpp:9: error: conflicting declaration 'byte Nokia::ASCII [][5]'
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\/Nokia.h:37: error: 'Nokia::ASCII' has a previous declaration as 'const byte Nokia::ASCII [][5]'
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\Nokia.cpp:9: error: declaration of 'const byte Nokia::ASCII [][5]' outside of class is not definition

Ah tu as rajouté des choses par rapport à ton premier message, notamment le mot clé const...

Deux solutions :
1- tu enlèves le mot clé const ;
2- tu retires la déclaration de ton fichier d'entête et dans le fichier source :

static const byte ASCII[][5] = {
 {0x00, 0x00, 0x00, 0x00, 0x00} // 20  
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
// ...
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ?
,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f ?
};

la j'ai

static const byte ASCII[][5] = {
 {0x00, 0x00, 0x00, 0x00, 0x00} // 20  
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
// ...
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ?
,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f ?
};

dans la cpp avant le constructeur Nokia::Nokia.

Et rien dans le header.

Mais ces erreurs

C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\Nokia.cpp:9: error: 'static' may not be used when defining (as opposed to declaring) a static data member
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\Nokia.cpp:9: error: 'const byte Nokia::ASCII [][5]' is not a static member of 'class Nokia'
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\Nokia.cpp: In member function 'void Nokia::writechar(char)':
C:\Users\pierre-yves\Desktop\arduino-0022\libraries\N5110\Nokia.cpp:161: error: 'ASCII' was not declared in this scope

ça m'enerve, je comprend pas le probleme

EDIT:
Ah :slight_smile: avec

static byte ASCII[][5];

dans le header

et

byte Nokia::ASCII[][5] = {
 {0x00, 0x00, 0x00, 0x00, 0x00} // 20  
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
...
,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ?
,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f ?
};

avant le constructeur dans le cpp:
ça compile :slight_smile:
Et ça marche ! :slight_smile: c'est quand même plus pratique et beau que de copier toutes les fonctions du code sur arduino.cc !

Merci :slight_smile: