Transformer 3 char en un nombre à 3 chiffres int

Bonjours à tous !
Il n'est pas habituel pour moi de demander des réponses sur un forum mais je suis arrivé au bout de mes connaissances. Je vous explique mon problème : J'ai, dans un projet de boîtier multicapteur, un arduino mega, une LED RGB, un clavier matriciel et un écran LCD16*2. Le but de mon programme serait de rentrer une valeur avec le clavier (comprise entre 0 et 255) pour la couleur rouge, ensuite une autre pour la couleur verte et une dernière pour la couleur bleue. En plus de les afficher sur l'écran, j'aimerais que leur valeur soit affectée à la LED. J'arrive en effet à les afficher sur l'écran mais je cherche comment transformer la valeur de 3 char formant un nombre en 1 valeur de type int.
Je vous donne sur pastebin le code que j'ai fait et je vous laisse me poser des questions si vous n'avez pas compris quelque chose ou que vous voulez d'autres renseignements.

Le lien pastebin : MonProgramme

Images de mes produits :

Le clavier :


La LED RGB :

Merci d'avance pour les réponses que vous pourrez m'apporter.

bonjour,
concaténer des char ===> sprintf

conversion char vers int
int val = atoi(mon_char)

Si tu es sûr que chaque char contient un caractère compris entre '0' et '9' :

int val = 100*(char1 - '0') + 10*(char2 - '0') + char3 - '0';

bricoleau:
Si tu es sûr que chaque char contient un caractère compris entre '0' et '9' :

int val = 100*(char1 - '0') + 10*(char2 - '0') + char3 - '0';

Salut Bricoleau !
En effet je suis sûr que chaque char contient un caractère compris entre '0' et '9' cependant, si un utilisateur souhaite rentrer une valeur comme 9 ou 50, il devra saisir 009 ou 050 puisque mon programme attend 3 valeur pour que ce soit bon. Donc est ce que le code que tu m'a donné pourra fonctionner quand même ?

ben voui :slight_smile:

Mais comme ton utilisateur va entrer les chiffres un par un, tu peux aussi décider de le laisser saisir un nombre variable de chiffres, du moment qu'il termine par autre chose (par exemple un *)

Il pourrait ainsi saisir 9* ou 50* pour rendre ton exemple.

Dans ce cas, tu as une variable globale initialisée à zéro, et à chaque nouveau chiffre reçu tu fais

val = 10*val + char_saisi - '0'

Et quand tu reçois le caractère * c'est que la valeur est entièrement chargée.

Ainsi avec un int tu peux faire saisir une valeur décimale à 4 chiffres sans débordement, ou à 9 chiffres avec un long int.

Je te dit un grand merci parce que j'étais bloqué la dessus depuis quelques semaines et j'étais prêt à abandonner !!