Transformer 3 char en 1 int - Transform 3 char in 1 int

Français :

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.

English :

Hi !
I not usually ask for answers on forum but I'm blocked. I have a project with an arduino mega, a RGB LED, an arduino matrix keybord and a 16*2 LCD. The purpose of my program is to input a value with the keybord (between 0 and 255) for the red color, next for the green and for the blue. In more of display the values on the screen I would like the values to be affected to the LED. I know how to display the values ont the screen but I don't know how to transform 3 char values in 1 int value. I give you on pastebin the code I made and if you and I let you ask me questions if you need information.
I apologize in advance for mistakes in English if there are.

Le lien pastebin - pastebin link : MonProgramme

Images de mes produits - pictures of my product :

Le clavier - The keybord :


La LED RGB :

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

There are a number of things that would simplify your code: using arrays, using a switch/case statement block, and avoiding goto’s. First, arrays: Instead of this:

  iSR1 = SR1 - 48;
  iSR2 = SR2 - 48;
  iSR3 = SR3 - 48;
  iSG1 = SG1 - 48;
  iSG2 = SG2 - 48;
  iSG3 = SG3 - 48;
  iSB1 = SB1 - 48;
  iSB2 = SB2 - 48;
  iSB3 = SB3 - 48;

How about:

int iRed[3];
int sRed[3]
int iGreen[3];
int sGreen[3];
int iBlue[3];
int sBlue[3];
// ...more code...
for (int i = 0; i < 3; i++) {
   iRed[i]   = sRed[i] - '0';         // 48 is ASCII zero, '0'
   iGreen[i] = sGreen[i] - '0';  
   iBlue[i]  = sBlue[i] - '0';       
}

Also, use a switch/case instead of goto’s:

  numeroMenu=toupper(keypad.getKey());  // yours fails on a lower case letter
  lcd.setCursor(0, 0);

  switch (numeroMenu) {
    case 'A':
      lcd.print("1:Distance   |");
      lcd.setCursor(0, 1);
      lcd.print("2:Temperature|>B");
      break;

    case 'B':
      lcd.print("3:Alcool     |<A");
      lcd.setCursor(0, 1);
      lcd.print("4:LED RGB    |>C");
      break;

    case 'C':
      lcd.print("5:           |<B");
      lcd.setCursor(0, 1);
      lcd.print("6:           |>D");
      break;

    // You do the rest


    default:
      lcd.print("I shouldn't be here. numeroMenu = ");
      lcd.setCursor(0, 1);
      lcd.print(numeroMenu);
  )     
  numeroMenu=keypad.getKey();
  while(numeroMenu == NO_KEY)numeroMenu=keypad.getKey();
  lcd.clear();

Hello econjack !
I'm very glad to see your interest of my project and I thank you for the solutions that you have brought me to modify my program but I find my way of doing simpler so I do not think to use your method. Thank you very much for taking the time to reply