🛠 Scanner le bus I²C de l'UNO (A4/A5)

Arduino UNO R3 · avance · Schéma : IMG-uno-r3-avance-2-scanner-bus-i2c.svg — UNO R3 avec un module I²C (afficheur OLED) sur le bus A4 (SDA) / A5 (SCL), pull-up R1/R2 notées, broches SDA/SCL près de AREF mises en évidence.

Objetivos

Dominar el bus I²C estandarizado por los conectores R3: SDA en A4, SCL en A5, y los pines SDA/SCL dedicados añadidos junto a AREF en la UNO R3 (junto con IOREF y 3,3 V — es esta adición la que definió el estándar de los shields). Escribirás un escáner de direcciones, una herramienta de diagnóstico indispensable antes de cualquier driver de sensor.

Material

Código completo

// Scanner I²C : interroge les adresses 8..127 et liste les réponses.
#include <Wire.h>

void setup {
  Wire.begin;          // maître, broches A4/A5 par défaut sur UNO
  Serial.begin(115200);
  Serial.println(F("Scanneur I2C — bus A4(SDA)/A5(SCL)"));
}

void loop {
  uint8_t trouves = 0;
  for (uint8_t addr = 8; addr <= 127; addr++) {
    Wire.beginTransmission(addr);
    uint8_t err = Wire.endTransmission;
    if (err == 0) {                       // 0 = ACK reçu, périphérique présent
      Serial.print(F("Périphérique à l'adresse 0x"));
      Serial.println(addr, HEX);
      trouves++;
    } else if (err == 4) {
      // Erreur sur la phase d'écriture : on ignore sans bloquer.
    }
  }
  if (trouves == 0) Serial.println(F("Aucun périphérique — vérifiez SDA/SCL et les pull-up"));
  Serial.println(F("--- nouvelle passe (Ctrl+Shift+M pour arrêter le moniteur) ---"));
  delay(5000);
}

Verificación esperada

Cada módulo conectado aparece con su dirección (OLED: 0x3C, PCF8574: 0x20/0x27, etc.). Prueba de diagnóstico: desconecta SCL — el escaneo ya no encuentra nada; invierte SDA/SCL en un shield — tampoco. Es tu multímetro del bus.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales