🛠 Scanner le bus I2C depuis le microcontrôleur

LattePanda 3 Delta (id: lattepanda-3) · intermediaire · Schéma : IMG-lattepanda-3-intermediaire-2-scanner-i2c.svg — Un capteur I2C connecté aux broches SDA/SCL de l'en-tête Arduino avec résistances de pull-up, l'ATmega32U4 balayant les adresses de 0x08 à 0x77.

Objetivos

El encabezado Arduino de la LattePanda 3 Delta expone un bus I2C (existen tutoriales oficiales de ADC e I2C en la documentación IO_Playability). En lugar de asumir un sensor específico, este tutorial escribe un escáner I2C nativo en C++ sobre el ATmega32U4: recorre todas las direcciones de 7 bits e informa los dispositivos presentes en el puerto serie interno. Es la herramienta de diagnóstico indispensable antes de conectar cualquier sensor, y muestra una vez más la doble personalidad de la placa: el bus está del lado de Arduino, no del lado del PC.

Material

Código completo

Sketch de Arduino IDE (placa « Arduino Leonardo »):

// Scanner I2C pour l'ATmega32U4 embarqué de la LattePanda 3 Delta.
#include <Wire.h>

void setup {
  Serial.begin(9600);
  while (!Serial) {}               // attendre le port série USB
  Wire.begin;                    // maître I2C
  Serial.println("Scan I2C : 0x08 -> 0x77");
}

void loop {
  byte trouve = 0;
  for (byte addr = 8; addr < 120; addr++) {
    Wire.beginTransmission(addr);
    if (Wire.endTransmission == 0) {   // 0 = ACK reçu
      Serial.print("Périphérique trouvé à 0x");
      Serial.println(addr, HEX);
      trouve++;
    }
  }
  if (trouve == 0) Serial.println("Aucun périphérique I2C.");
  Serial.println("---");
  delay(5000);                     // refaire un scan toutes les 5 s
}

Las líneas se muestran en el monitor serie del IDE o en el puerto COM del MCU desde el SoC (ver el tutorial de puente serie).

Verificación esperada

Con un módulo conectado, el escaneo muestra su dirección (por ejemplo, una dirección 0x3C para muchas pantallas OLED — la dirección real depende del módulo). Sin nada conectado pero con SDA/SCL al aire, muchas direcciones pueden responder falsamente: es el síntoma clásico de la ausencia de pull-up.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales