Arduino : communication par le port série
Par Stéphane Noël
Catégorie :

Faire communiquer Arduino avec le monde extérieur avec le protocole MIDI est utile pour un pilotage plus fin de certains composants.

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.