« Fabrication d’un chargeur universel pour vélo » : différence entre les versions

De WikiRennes
Aller à la navigationAller à la recherche
code
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>
12

modifications

Menu de navigation