Allumage de la led bleue D1
Objectif : programmer l'Arduino pour qu'il se comporte en esclave et qu'il gère la requête suivante :
Coils : allumage de la led bleue D1 de la carte TickTock.
Méthode :
Créer un nouveau sketch que l'on nommera tick_tock_modbus.
Il faut tout d'abord inclure la bibliothèque ModbusSerial :
Juste avant le setup() on crée les constantes propres à la liaison Modbus puis on crée un objet de type Modbus :
const byte BlueLedPin = 2; // Parce que la led blue D1 est raccordée à la broche 2
const byte SlaveId = 10; // Parce que l'adresse Modbus de l'Arduino sera l'adresse 10 (en décimal)
const int BlueLedCoil = 0; // Parce que l'adresse de la donnée sera 0
ModbusSerial mb(Serial, SlaveId); // Création d'un objet de type esclave Modbus qui utilisera la liaison série avec pour adresse d'esclave SlaveId
Maintenant dans le setup on initialise la liaison série, on configure l'esclave Modbus et on déclare la broche 2 raccordée à la led bleue en sortie :
/* Initialisation de la liaison série */Serial.begin(38400);
while (!Serial);
/* Configuration de l'esclave Modbus */mb.config(38400);
/* On ajoute un Coil à l'adresse 0 */mb.addCoil(BlueLedCoil);
/* Configuration de la broche 2 de la carte Uno en sortie */pinMode(BlueLedPin, OUTPUT);
Dans le loop() il ne reste plus qu'à lancer la tâche Modbus (réception des requêtes et envoi des réponses Modbus associées :
/* Lancement de la tâche Modbus */mb.task();
/* Commande de la led bleue en fonction de la valeur de Coil à l'adresse 0 */digitalWrite(BlueLedPin, mb.coil(BlueLedCoil));
Téléverser le programme dans la carte Arduino.
Attention :
À ce stade la carte TickTock ne « fait rien » car l'Arduino Uno attend des requêtes Modbus sur la liaison série. C'est l'objet de la prochaine partie.