Envoyer un message à la carte Aruino

Champ de saisie du terminal série

Une fois que la carte Arduino est programmée, elle envoie à intervalle régulier des messages vers le PC. Concrètement, vous ne voyez rien se passer à ce stade : pour voir les messages envoyés par la carte Arduino au PC, vous allez devoir utiliser un logiciel de visualisation. Heureusement pour nous, le logiciel Arduino dispose d'un tel outil de visualisation : c'est le Terminal Série. Pour le lancer :

Une fois la fenêtre du Terminal Série ouverte :

vérifier que la vitesse de communication est la même que celle que vous

avez fixé dans le programme Arduino une fois bien paramétré vous devriez voir les messages s'afficher dans la fenêtre.

Le Terminal Série dispose d'un champ de saisie pour envoyer des caractères vers Arduino : c'est lui que nous utilisons dans cette activité.

Le Terminal série fonctionne en « réception» et en « émission».

Manipuler une chaîne de caractére

Lire la doc sur la classe String d'arduino.

A ce stade, on va pouvoir stocker tous les caractères reçus sur le port série dans une chaîne de caractères de taille variable : un objet String.

Entête déclarative :

On va déclarer à ce niveau :

  • une variable int pour stocker l'octet en réception (code ASCII du caractère).

  • une variable char pour stocker le caractère correspondant.

  • un objet String vide pour stocker la chaine de caractère

Fonction setup()

  • on initialise la communication série avec l'instruction Serial.begin(vitesse).

On utilisera 115200 bauds.

Fonction loop()

on « écoute » le port Série en testant l'arrivée d'un caractère à l'aide d'une simple condition if pour tester la présence d'un octet dans la file d'attente du port série avec la fonction

Serial.available()

Si un octet est reçu :

  • on récupère le caractère correspondant à l'aide de la fonction de conversion char()

  • on ajoute la caractère à l'objet String puis on l'affiche.

Rappels de cous C++

Lire les rappels sur l'utilisation des boucles ici

le programme précédent recevait les caractères 1 à la fois, à chaque passage dans loop(). Il serait plus pratique de pouvoir recevoir une chaîne de caractère d'un seul coup, « tant

que des caractères sont disponibles »... et on va donc utiliser pour cela une

boucle while !

Entête déclarative

• on déclare une variable int pour stocker l'octet en réception (code ASCII du caractère).

• on déclare une variable char pour stocker le caractère correspondant.

• on déclare un objet String vide pour stocker la chaîne de caractère

Fonction setup()

• initialise la communication série avec l'instruction Serial.begin(vitesse). On utilisera 115200 bauds.

Fonction loop()

A ce niveau, on va « écouter » le port Série en testant l'arrivée d'un caractère à l'aide cette fois d'une boucle while pour tester la présence d'un octet dans la file d'attente du port série avec la fonction Serial.available()

  • Tant qu'un octet est présent : on récupère le caractère correspondant à l'aide de la fonction de conversion char(), puis on ajoute la caractère à l'objet String. On réalise une petite pause entre 2 réceptions.

  • Une fois toute la chaîne reçue,on l'affiche.

LED contrôlées par le terminal série 

L'objectif ici est de contrôler l'état de 3 LEDs de couleurs différentes par l'entrée du terminal série :

En saisissant "B ON" la led bleu doit s'allumer, 'B OFF' elle s'éteint, idem pour les LEDs rouge et verte.

Partir du dernier programme existant, et développer progressivement, une solution à une LED, et compléter progressivement jusqu'à 3 LED.