Pages: [1]   Go Down
Author Topic: comment recevoir un nombre sur le port série et ..  (Read 1805 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

... 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:
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 = "" ;
    }
}  
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3567
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
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
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci je vais tester ...
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Voilà une solution ...

Code:
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);                    
    }
}  
Logged

Pages: [1]   Go Up
Jump to: