comment recevoir un nombre sur le port série et ..

... le multiplier par 2 et renvoyer le résultat sur le même port série ?

Bonsoir,

Cela fait plusieurs soirées que je me casse les dents là dessus !

J'ai réussi pour un nombre a 1 chiffre, mais je bloque pour un nombre a plusieurs chiffres. (j'ai trouvé pas mal d'info sur le forum...).

Exemple : par Serial Monitor j'envoi le chiffre 2, et par retour s'affiche le chiffre 4...

Toute aide est la bienvenue. Merci.

void setup()
{
  Serial.begin(9600) ;
}

String (chaine) ;

void loop()
{
  char car ;
  if (Serial.available())
    {
      car = Serial.read() ;      
      chaine = chaine + car ;      
    }        
  if (chaine > 0)
    {
  Serial.println(chaine) ; 
  int chaineLength = chaine.length()+1;
  char myChar[chaineLength];  
  chaine.toCharArray(myChar,chaineLength);
  int result = atoi(myChar);
  Serial.println(result*2);                     
   chaine = "" ;
    }
}

En fait il faut que tu crée un tableau et que tu fasses une structure du genre :

char Buffer[20];
int x=0;
while (Serial.available()>1){
Buffer[x]=Serial.read();
x++;
}

J'ai galéré à piger le truc au début moi aussi, en fait le truc c'est que Serial.read() ne renvoie qu'un seul caractère et l'efface ensuite. Quand tu envois par exemple "toto", pour l'arduino c'est t + o + t +o

Merci je vais tester ...

Voilà une solution ...

void setup()
{
  Serial.begin(9600) ;
}
void loop()
{
  char Buffer[8];
  memset(Buffer, '\0', 9);
  int x=0;
  while (Serial.available()>0)
  {
  Buffer[x]=Serial.read();
  delay(10);
  x++;
  }
  if (Buffer[0] > 1)
    {
  Serial.print("recu    :");
  Serial.println((char*)Buffer);
  int result = atoi(Buffer);
  Serial.print("transmis:");
  Serial.println(result*2);                     
    }
}