Arduino driver for the Microchip MCP9808 high-accuracy digital temperature sensor.
The MCP9808 provides precise temperature measurement with up to ±0.25°C accuracy, low power consumption, and programmable alert functionality for temperature monitoring applications.
-
High-accuracy temperature measurement (±0.25°C typical)
-
Configurable resolution (0.5°C to 0.0625°C)
-
Upper, Lower, and Critical temperature thresholds
-
Alert output support:
- Comparator mode
- Interrupt mode
-
Hysteresis configuration
-
Shutdown (low power) mode
-
Raw temperature access
-
Device ID and Manufacturer ID reading
The MCP9808 uses I²C communication.
| MCP9808 Pin | MCU Pin | Notes |
|---|---|---|
| VCC | 3.3V | 3.3V only |
| GND | GND | Common ground |
| SDA | SDA | I²C data |
| SCL | SCL | I²C clock |
| ALERT | GPIO (optional) | Interrupt output |
- Default I²C address:
0x18 - Address configurable via A0, A1, A2 pins
- Supported bus speeds:
- 100 kHz
- 400 kHz (recommended)
- Open Arduino IDE
- Go to Library Manager
- Search for 7Semi MCP9808
- Click Install
- Download repository as ZIP
- Arduino IDE → Sketch → Include Library → Add .ZIP Library
float temperature;
sensor.getTemperature(temperature);- Returns temperature in °C
uint16_t raw;
sensor.getTemperatureRaw(raw);sensor.setResolution(MCP9808_RES_0_125C);sensor.setUpperTemperature(30.0);
sensor.setLoweTemperature(20.0);
sensor.setCriticalTemperature(35.0);sensor.setAlertMode(COMPARATOR_OUTPUT);
sensor.setAlertPolarity(ACTIVE_HIGH);
sensor.enableAlert(true);bool upper, lower, critical;
sensor.getAlert(upper, lower, critical);sensor.setMode(SHUTDOWN_MODE);
sensor.setMode(CONTINUOUS_MODE);