Go Down

Topic: comment recevoir un nombre sur le port série et .. (Read 2152 times) 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 : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org


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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy