2013-01-02 6 views
1

J'utilise une instruction shift out pour piloter quelques écrans de 7 segments (à la fin) mais je rencontre un problème.Conversion non valide de char en 'uint8_t'

J'ai utilisé #include <avr/pgmspace.h> libary pour économiser de l'espace pour le traitement. A la fin de celui-ci, je dois SHIFTOUT un nombre binaire à introduire dans un reg puis à un BCD puis à mon écran:

strcpy_P(buffer, (char*)pgm_read_word(&(Times[big]))); 

shiftOut(dataPin, clockPin, MSBFIRST, buffer); 

dans le lieu tampon passera la valeur sélectionnée (par exemple B00100011 doit afficher 23), mon code me donne

Invalid conversion from char to 'uint8_t' 

avec la ligne SHIFTOUT mis en évidence

Toutes les idées?

+0

Quels sont les types de toutes vos variables? Et quelle est la déclaration de 'shiftOut'? –

+1

Essayez de compiler en C au lieu de C++. –

+0

Je le fais dans l'environnement Arduino donc c'est un mélange de C et C++ – Spider999

Répondre

1

Le problème ici est que shiftOut attend un octet (uint8_t) comme son quatrième argument (value). La valeur transmise est un char* (vraisemblablement déclaré sous la forme d'un tableau prog_char).

Pour résoudre ce problème, la déclaration de la valeur devra utiliser prog_uchar, comme ceci:

prog_uchar values[] PROGMEM = { (prog_uchar) B00100011, ... }; 

... 

int valueIndex = ...; // Index of value in the values array 
shiftOut(dataPin, clockPin, MSBFIRST, pgm_read_byte(&(values[valueIndex]))); 
+0

Eh bien, je l'ai eu à travailler ,,,, trier de je n'ai pas encore complété le code mais il n'y a pas d'erreur dans cette section du code grâce à votre aide ,,, Si je peux poser une autre question cependant, je devais changer votre code un peu en supprimant le B dans chacune de mes valeurs prog_uchar [] PROGMEM = {,,,,}; entrées et maintenant je dois trouver un moyen différent de le faire passer à la fonction Shiftout que j'essaye de faire sortir binaire pas un nombre ,,, des idées? – Spider999

+0

Vous pouvez lancer le B001 ... vers un prog_uchar (mis à jour ci-dessus). Si vous publiez votre nouveau code sous forme d'aperçu (sur https://gist.github.com/), je vais jeter un coup d'œil. –

+0

J'ai mis le code de fichier dans ce site Web de gist voici l'URL je pense https://gist.github.com/d7dae9c939d04568aaff – Spider999

Questions connexes