Go Down

Topic: comment recevoir un nombre sur le port série et .. (Read 1 time) previous topic - next topic

orion57

... 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.

Code: [Select]
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 = "" ;
   }
}  


B@tto

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

Code: [Select]
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
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

orion57


orion57

Voilà une solution ...

Code: [Select]
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);                    
   }
}  

Go Up