String array et ~variable

Bonjour à tous,

Je suis en train de pratiquer les opérateurs logique et en même temps les array. Je crois que cest pas possibe mais bon . Je vais vous coder ce que je veux faire, car c'est plus simple à expliquer en code quand mots :wink:

String couleur[] = {"J", "R", "B"};
unsigned int couleurJ;
unsigned int couleurR;
unsigned int couleurB;

void loop () {

For(byte i = 0 ; i > 2 ; i++){
       couleur[i] = ~couleur[i];
}

delay (500);

}

J'ai essayé d'être le plus propre possible. Je l'ai tapé sur mon cellulaire alors jai pas le ide ni le ctrl-t a la porté de main. J'espère que cest simple à comprendre. Je veux que toutes les couleur change de 0x0000 à 0xffff et vice-versa toutes les 500ms.

Merci de votre aide :slight_smile:

Pourquoi des strings?
Il vous suffit de 3 boucles for imbriquées sur des variables de type byte variant de 0x00 à oxFF

pepe:
for( i=0 ; i<3 ; i++ ) {
couleur = ~couleur*; // <-- les brackets ne passent pas dans un 'Quote' ??*
* }*
* delay (500);*
[/quote]
Si on oublie le delay, qui pourrait aussi bien être remplacé par du code, est-ce que ce n'est pas plus efficace ou plus rapide de changer les trois couleurs sur trois lignes, comme ceci ?
*_ <em>*couleur[1] = ~couleur[1]; couleur[2] = ~couleur[2]; couleur[3] = ~couleur[3];*</em> _*
(question de pure forme, car le code de pepe est très bien comme il est...)

Bonjour à tous.

Merci J-M-L et pepe de vos réponses

J-M-L:
Pourquoi des strings?
Il vous suffit de 3 boucles for imbriquées sur des variables de type byte variant de 0x00 à oxFF

voici mon code original.

couleurJ = ~couleurJ;
couleurR = ~couleurR;
couleurB = ~couleurB;

Tout ça dans une boucle, ça fait très bien ce que je veux. Mais je voulais simplement savoir si c'était possible de faire ce que j'ai écrit, qui est à dire, d'appeler une variable int avec une simple lettre d'un tableau String et de modifier la valeur de la variable int.

For(byte i = 0 ; i > 2 ; i++)

Le langage C étant sensible à la casse, For n'est pas reconnu comme un élément du langage. Il faut écrire for en minuscules.

Je sais bien, la raison pourquoi j'ai écrit que je l'avais écrit sur mon cell, c'était possible qu'il y est des erreurs. ;)... Il met toujours une majuscule au debut d'une phrase même si il n'y a pas de point.

La déclaration de la variable i de type byte ne peut pas être réalisée à cet endroit. Il faudrait le faire avant la boucle for(...).

Eeeehhhh non, ça fonctionne!! :roll_eyes:

« i > 2 » devrait correspondre à la condition logique qui :

  • reste vraie tant que la boucle for(...) doit être exécutée,
  • devient fausse quand la boucle doit se terminer.
    Donc, pour compter de 0 à 2 inclus, il faudrait plutôt écrire :
byte i;

for ( i=0 ; i<3 ; i++ )

Merci, tu as bien raison!! Je l'avais utilisé comme un if et non comme un while ... oui oui je sais, c,est un while en une ligne. :stuck_out_tongue_closed_eyes: