arduino : communication par le port série

Pour communiquer avec un ordinateur, vers processing, max/msp ou flash, ou un autre arduino, le port série est utilisé. En fait il passe par le port usb, il est donc émulé. Mais peu importe, l’important c’est que ça marche.

Arduino vers le monde extérieur

On peut envoyer une information de arduino facilement.
Dans le setup, on déclarera :

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

void loop(){
Serial.print("Voic une info sans retour a la ligne - ");
Serial.println("Voic une info AVEC retour a la ligne");
delay(1000);
}

Ceci établit une connection au port série à 9600 bauds

Ensuite, on emploie les deux fonctions de base, Serial.print() et Serial.println

Le port série est très utile pour débugguer nos code : tester un vairaible en temps réel, voir quand un événement est perçu par un capteur, etc.

Du monde extérieur vers arduino

Arduino peut lire l’information provenant du port série. Mais rappelez-vous que arduino est beaucoup plus rapide que l’information qui lui arrive. Il faut donc écrire un code qui attend l’info, la lit quand elle arrive et la traite.

int ledPin = 9;

void setup()
{
 // begin the serial communication
 Serial.begin(9600);
 pinMode(ledPin, OUTPUT);

}

void loop()
{
 byte val;

 // regarde si quelque chose se trouve dans le buffer
 if (Serial.available()) {
   // lit le premier byte dans la pile (valeur entre 0 to 255)
   val = Serial.read();
   // set the brightness of the LED
   analogWrite(ledPin, val); // par exemple
 }
}

Le code ci-dessus dimme la led sur la pin 9, en power modulator. On peut aussi imaginer un traitement sur un caractere, parfois plus facile :

int ledPin = 9;

void setup()
{
 // begin the serial communication
 Serial.begin(9600);
 pinMode(ledPin, OUTPUT);
}

if (Serial.available() > 0) {

  char valeur = Serial.read();

  switch(valeur) {
  case 'a':
    analogWrite(ledPin, 30);

  case 'c':
    analogWrite(ledPin, 120);

  case 'd':
    analogWrite(ledPin, 230);
  }
}

Lorsque l’on veut coder l’information sur plusieurs bytes, il faudra plus d’astuce.