🛠 Bus I2C : scanner PORT.A et lecture de la batterie IP5306

M5Stack Core (ESP32) — famille Basic / Gray (K001 / K002) · intermediaire · Schéma : IMG-m5stack-core-esp32-intermediaire-2-m5stack-core-esp32-i2c-grove-batterie.svg — M5Stack Core avec le connecteur Grove PORT.A (rouge, SDA G21 / SCL G22) relié à un petit capteur I2C, adresse 0x75 de la puce IP5306 indiquée à l'intérieur du boîtier

Objectifs

Matériel

Code complet

#include <M5Unified.h>
#include <Wire.h>

void scannerI2C {
  Serial.println("Scan I2C (SDA=21, SCL=22) :");
  for (uint8_t a = 1; a < 127; a++) {
    Wire.beginTransmission(a);
    if (Wire.endTransmission == 0) Serial.printf("  trouve 0x%02X\n", a);
  }
}

void setup {
  Serial.begin(115200);
  auto cfg = M5.config;
  M5.begin(cfg);                 // M5Unified initialise I2C et l'IP5306
  Wire.begin(21, 22);            // SDA, SCL (PORT.A / M-BUS)
  scannerI2C;                  // 0x75 = IP5306 ; 0x68 = IMU (Gray seulement)
  M5.Display.setTextSize(2);
}

void loop {
  int niveau = M5.Power.getBatteryLevel;   // 0..100 par paliers IP5306
  M5.Display.fillRect(0, 30, 320, 60, TFT_BLACK);
  M5.Display.setCursor(10, 35);
  M5.Display.printf("Batterie : %d %%", niveau);
  M5.Display.drawRect(10, 100, 300, 30, TFT_WHITE);
  M5.Display.fillRect(12, 102, 296 * constrain(niveau, 0, 100) / 100, 26,
                      niveau > 30 ? TFT_GREEN : TFT_RED);
  Serial.printf("Batterie %d%%\n", niveau);
  vTaskDelay(2000 / portTICK_PERIOD_MS);
}

Vérification attendue

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels