AestheticRobot:
enfin je vous passe les détails.
Justement non, si détails il y a, ça vaut le coup qu'on les connaisse! C'est justement les détails qui permettent de s'orienter facilement vers une solution.
AestheticRobot:
Je ne connais pas encore les fonctions Serial, mais je vais chercher plus en profondeur sur les sites spécialisés. Sinon pour les Bitwise Operator, je suis vachement largué.
Tu peux chercher aussi dans la référence pour Serial. Chaque fonction y est expliquée, l'essentiel y est, et devrait te suffire.
Pour les bitwise operator, l'idée est de manipuler les bits uns par uns. Si tu te sens largué, ça vaut le coup que tu lises aussi, toujours dans la référence, les types de variables (data types). les différents types y sont décrits, et leurs utilisations potentielles. Il faut bien comprendre que, quoi que chaque type de variable soit optimisé pour gérer un type de donnée, leur représentation en mémoire se fait toujours de la même manière, avec des octets composés de 0 et de 1. Ainsi, si le type "char" permet de manipuler des caractères, il n'en demeure pas moins physiquement un nombre, codé sur un octet, et donc compris entre 0 et 255 (ou plutôt entre -128 et 127, car il est signé). On peut donc faire des opérations dessus, notamment. C'est un concept qui peut être délicat à appréhender au début, mais c'est aussi probablement ce qui va te servir, puisqu'en lisant la valeur d'une variable char, plutôt que de d'associer cette valeur au caractère correspondant, tu obtiens directement un nombre. Et ce nombre a comme tout nombre, une correspondance en binaire et en hexadécimal.
AestheticRobot:
Après pour le pilotage des LEDs, Est-ce qu'il est possible de définir toutes les couleurs des LEDs à l'avance et de diriger plus facilement les LEDs dessus ? Du coup je me demande même si dans une moindre mesure, cela vaudrait pas le coup à mon niveau de programmer chaque caractère un par un dans l'arduino, plutôt que de partir dans des conversions vers l'hexadécimal que je ne maîtrise absolument pas !
Tu perdras du temps, et probablement beaucoup d'énergie, à vouloir coder chaque valeur une par une. C'est une solution, mais sous son apparente simplicité elle est complexe: tu vas en gros avoir une structure (genre, recevoir un caractère, le transformer en deux valeurs hexa, ecrire les valeurs vers les 6 broches des deux leds) multiplié par le nombre de cas que tu as. C'est lourd, et ça rend difficile le repérage d'éventuelles erreurs.
Au lieu de ça, tu peux effectivement préparer (hors programme, dans un tableur par exemple) les valeurs RGB que tu veux pour chacune de tes 16 couleurs. Et tu stockes ces valeurs dans trois tableaux, un pour chaque couleur élémentaire.
//on crée trois tableaux de 16 byte, pour les trois couleurs primaires.
byte red[16] = {255, 255, 0, ...};
byte green[16] = {255, 0, 255, ...};
byte blue[16] = {255, 0, 0, ...};
Ici, on peut voir que pour la valeur 0, la led sera blanche, pour la valeur 1, la led sera rouge, pour la valeur 2, la led sera verte, etc.
Ensuite, lorsque tu reçois ton caractère, et que tu l'as décomposé en deux valeurs hexadécimales comprises entre 0 et 15, tu as simplement à récupérer la valeur stockée.
//je mets ici une valeur arbitraire, dans la vraie vie elle viennent de ta liaison série.
byte chiffreHexa = 0xC;
analogWrite(pinRed, red[chiffreHexa]);
analogWrite(pinGreen, green[chiffreHexa]);
analogWrite(pinBlue, blue[chiffreHexa]);
En fait, dans la pratique tu ne vas probablement même pas manipuler des nombres hexadécimaux, ou plutôt tu n'auras de conversion explicite à faire.
Bref, mon conseil: prends le temps de lire la page de référence Arduino, en commençant par le début. Ca va prendre un peu de temps, mais ça te permettra de saisir la philosophie sous-jacente.
Bon courage! 