🛠 Ajouter un capteur I²C (température) sur A4/A5

Arduino Pro Mini · intermediaire · Schéma : IMG-pro-mini-intermediaire-6-promini-capteur-i2c.svg — capteur de température I²C MCP9808 relié à SDA/A4 et SCL/A5 de l'Arduino Pro Mini, emplacements de résistances de pull-up I²C visibles sur la carte

Objetivos

Aprovechar el bus I²C/TWI nativo del ATmega328P: en la Pro Mini, SDA está en A4 y SCL en A5, en la misma fila de pines que las entradas analógicas. La última revisión de SparkFun incluso añade huellas SMD para soldar las resistencias de pull-up I²C — útil en montajes fijos, ya que muchos módulos ya las incluyen. Se lee un sensor de temperatura MCP9808 (dirección 0x18) con la biblioteca Wire y se muestran los grados Celsius.

Material

Código completo

// Capteur temperature I2C MCP9808 sur A4 (SDA) / A5 (SCL)
#include <Wire.h>

const uint8_t ADDR = 0x18;   // adresse par defaut du MCP9808

void setup {
  Serial.begin(57600);
  Wire.begin;              // maitre I2C, broches A4/A5 fixes sur 328P
  if (Wire.requestFrom(ADDR, (uint8_t)1) == 0) {
    Serial.println(F("Capteur absent ! Verifier SDA/SCL/adresse"));
  }
}

void loop {
  Wire.beginTransmission(ADDR);
  Wire.write(0x05);                 // registre ambient temperature
  Wire.endTransmission;
  Wire.requestFrom(ADDR, (uint8_t)2);
  if (Wire.available >= 2) {
    int16_t brut = (Wire.read << 8) | Wire.read;
    if (brut & 0x8000) brut -= 0x10000;   // signe negatif
    float t = (brut & 0x0FFF) * 0.0625;   // resolution 1/16 degre
    Serial.print(F("T = "));
    Serial.print(t);
    Serial.println(F(" C"));
  }
  delay(1000);
}

Verificación esperada

El monitor serie muestra una temperatura coherente (~20-25 °C en interiores), que sube cuando se aprieta el sensor entre los dedos. La prueba de presencia del setup no muestra ningún error si SDA/SCL están correctamente en A4/A5 y existen las pull-up. En la última revisión de la placa, las dos pequeñas huellas cerca de A4/A5 permiten soldar resistencias 0603 de 4,7 kΩ para un bus limpio en una instalación permanente.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales