[Résolu] Pb Tableau de caractères

Bonjour,

Je tourne en rond sur un pb qui est tellement évident que ça en devient frustrant...

J'ai besoin de manipuler une chaine variable de caractères (donc un tableau je pense) appelé active_input, de longueur maximale 8 caractères.

J'ai donc déclaré mon tableau dans la section void setup:

void setup()
{
Serial.begin(9600); // Démarre le transmetteur série pour voir les résultats sur PC
irrecv.enableIRIn();

// On définit les pins MOTOR de la Nano en Output
// Et aussi tous les pinmode des RELAIS en Output ici:
pinMode(Motor1Pin1, OUTPUT);
pinMode(Motor1Pin2, OUTPUT);
pinMode(relai1,OUTPUT);
pinMode(relai2,OUTPUT);
pinMode(relai3,OUTPUT);
pinMode(relai4,OUTPUT);
pinMode(relai5,OUTPUT);

Wire.begin(); // join I2C bus (address optional for master)

lcd.init(); // // LCD panel initialization
lcd.clear(); // clear display
lcd.setCursor(0,0); // top left
lcd.print("HiFi - Services"); // devrait afficher le texte "(c)HiFi Services" sur l'afficheur Deuligne
// en attendant qu'une autre touche soit pressée

char active_input[8]; // déclare la chaine appelée active_input
}

Mais plus loin dans le programme lorsque je veux changer sa valeur (l'initialiser) dans la section VOID LOOP:

active_input="Input 1";

j'obtiens une erreur de compilation me disant:

exit status 1
'active_input' was not declared in this scope

Or on dit bien pouvoir changer à n'importe quel moment le contenu d'un tableau...

J'ai essayé de déclarer cette variable en amont de void setup, mais je n'y arrive pas non plus

Les tutos que j'ai consultés sur la manipulation des chaînes , tels que celui-ci:

http://colmard.com/Arduino-lecon3.html

ne m'ont pas éclairé sur ce problème surement trivial !

Sauf erreur de ma part ce tableau n'est déclaré que dans le setup(), essaye de le déclarer en dehors de setup() et loop().

essaye de le déclarer en dehors de setup() et loop().

Je viens donc d'essayer de le déclarer en amont du setup (en le supprimant donc du setup), et en gardant la même instruction, à savoir:

char active_input[8]; // déclare la chaine appelée active_input

Cette variable active_input étant déclarée en dehors des sections void setup et void loop, elle devrait donc être une variable globale, et par conséquent visible de partout.

Et lors de la compilation, à l'instruction qui initialise le tableau, j'obtiens une autre erreur, mais une erreur quand même:

exit status 1
invalid array assignment

cette erreur se trouve dans la section void loop

je ne vois toujours pas quoi faire, pourtant ce devrait être trivial !

Pas sur que tu puisses mettre une chaine dans un tableau de char...

J'ai enfin trouvé sur le forum anglais !

On ne peut pas changer la valeur d'une chaine déjà initialisée en procédant comme on essayait de faire: le compilateur refuse.

Il faut utiliser une fonction standard du langage C qui s'appelle strcpy

L'instruction à utiliser pour changer la valeur de notre chaine est donc:

strcpy(active_input, "Input 2"); si on veut y affecter la valeur "Input 2"

Youpi !

Maintenant que la compilation s'exécute sans problèmes, il me reste à faire afficher la valeur de cette variable active_input sur le Deuligne.

Si j'ai un souci, je reviens vers vous, sinon je passe le sujet en résolu !

P.S.: le modérateur semble se plaindre de réponse en MP : mais pour je n'ai reçu aucun MP.

grizzli06:
P.S.: le modérateur semble se plaindre de réponse en MP : mais pour je n'ai reçu aucun MP.

C'est juste ma signature.... c'est pas toi qui est visé en particulier :wink:

Le programme fonctionne désormais parfaitement !

J'édite donc le sujet du post, pour le passer en "Résolu" ,

Merci à tous !