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 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 ask answers on forum i'm blocked. have project arduino mega, rgb led, arduino matrix keybord , 16*2 lcd. purpose of program input value keybord (between 0 , 255) red color, next green , blue. in more of display values on screen values affected led. know how display values ont screen don't know how transform 3 char values in 1 int value. give on pastebin code made , if , let ask me questions if need information.
i apologize in advance mistakes in english if there are.

le lien pastebin - pastebin link : monprogramme

images de mes produits - pictures of product :

le clavier - keybord :

la led rgb :


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

there number of things simplify code: using arrays, using switch/case statement block, , avoiding goto's. first, arrays: instead of this:
code: [select]

  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:
code: [select]

int ired[3];
int sred[3]
int igreen[3];
int sgreen[3];
int iblue[3];
int sblue[3];
// ...more code...
for (int = 0; < 3; i++) {
   ired[i]   = sred[i] - '0';         // 48 ascii zero, '0'
   igreen[i] = sgreen[i] - '0';  
   iblue[i]  = sblue[i] - '0';      
}


also, use switch/case instead of goto's:

code: [select]

  numeromenu=toupper(keypad.getkey());  // yours fails on 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;

    // rest


    default:
      lcd.print("i shouldn't here. numeromenu = ");
      lcd.setcursor(0, 1);
      lcd.print(numeromenu);
  )     
  numeromenu=keypad.getkey();
  while(numeromenu == no_key)numeromenu=keypad.getkey();
  lcd.clear();






Arduino Forum > Using Arduino > Programming Questions > Transformer 3 char en 1 int - Transform 3 char in 1 int


arduino

Comments

Popular posts from this blog

Flip address is out of range arduino uno r3

Arduino Uno not uploading

Indesign and MathType fonts