12
modifications
m (correction) |
(code) |
||
Ligne 65 : | Ligne 65 : | ||
#** Assurer que les valeurs de tension, courant, puissance et énergie sont correctement mises à jour. | #** Assurer que les valeurs de tension, courant, puissance et énergie sont correctement mises à jour. | ||
#** Surveiller l’évolution des valeurs pendant la charge de la batterie de vélo électrique. | #** Surveiller l’évolution des valeurs pendant la charge de la batterie de vélo électrique. | ||
<syntaxhighlight lang="cpp" line="1"> | |||
#include <ModbusMaster.h> | |||
// Crée une instance de ModbusMaster | |||
ModbusMaster node; | |||
void setup() { | |||
// Initialisation de la communication série | |||
Serial.begin(9600); | |||
Serial.println("Initialisation Modbus..."); | |||
// Configuration du port série pour Modbus | |||
node.begin(1, Serial); // Adresse esclave 1, communication via le port série | |||
} | |||
void loop() { | |||
uint8_t result; | |||
uint16_t data[8]; | |||
// Lecture de 8 registres à partir de l'adresse 0x0000 | |||
result = node.readInputRegisters(0x0000, 8); | |||
if (result == node.ku8MBSuccess) { | |||
// Stocke les données lues dans le tableau `data` | |||
for (int i = 0; i < 8; i++) { | |||
data[i] = node.getResponseBuffer(i); | |||
} | |||
// Affichage des valeurs lues | |||
float voltage = data[0] * 0.01; // La tension est à l'adresse 0x0000 | |||
float current = data[1] * 0.01; // Le courant est à l'adresse 0x0001 | |||
float power = (data[3] << 16 | data[2]) * 0.1; // La puissance est sur 2 registres, à l'adresse 0x0002 et 0x0003 | |||
float energy = (data[5] << 16 | data[4]) * 1; // L'énergie est sur 2 registres, à l'adresse 0x0004 et 0x0005 | |||
Serial.print("Tension: "); | |||
Serial.print(voltage); | |||
Serial.println(" V"); | |||
Serial.print("Courant: "); | |||
Serial.print(current); | |||
Serial.println(" A"); | |||
Serial.print("Puissance: "); | |||
Serial.print(power); | |||
Serial.println(" W"); | |||
Serial.print("Energie: "); | |||
Serial.print(energy); | |||
Serial.println(" Wh"); | |||
} else { | |||
Serial.print("Erreur lors de la lecture des registres: "); | |||
Serial.println(result, HEX); | |||
} | |||
delay(2000); // Pause de 2 secondes avant la prochaine lecture | |||
} | |||
</syntaxhighlight> |
modifications