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 :

1
#include <ModbusSerial.h>

Juste avant le setup() on crée les constantes propres à la liaison Modbus puis on crée un objet de type Modbus :

1
const byte BlueLedPin = 2; // Parce que la led blue D1 est raccordée à la broche 2
2
const byte SlaveId = 10; // Parce que l'adresse Modbus de l'Arduino sera l'adresse 10 (en décimal)
3
const int BlueLedCoil = 0; // Parce que l'adresse de la donnée sera 0
4
5
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
6

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 :

1
/* Initialisation de la liaison série */
2
Serial.begin(38400);  
3
while (!Serial);
4
5
/* Configuration de l'esclave Modbus */
6
mb.config(38400);
7
/* On ajoute un Coil à l'adresse 0 */
8
mb.addCoil(BlueLedCoil);
9
10
/* Configuration de la broche 2 de la carte Uno en sortie */
11
pinMode(BlueLedPin, OUTPUT);  
12
 

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 :

1
/* Lancement de la tâche Modbus */
2
mb.task();
3
/* Commande de la led bleue en fonction de la valeur de Coil à l'adresse 0 */
4
digitalWrite(BlueLedPin, mb.coil(BlueLedCoil));
5

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.