# arduino-libraries/arduino_sensorkit architecture

> Architecture diagram of the GitHub repository arduino-libraries/arduino_sensorkit, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/arduino-libraries/arduino_sensorkit
- Repository: https://github.com/arduino-libraries/arduino_sensorkit

## Overview

Arduino SensorKit is an Arduino library that wraps sensor and OLED-display libraries behind convenient kit-level objects. The main workflow is a sketch using those objects to initialize hardware and read environmental, pressure, or acceleration data, or to render text on the OLED. The repository also bundles U8g2’s broader monochrome-display stack, including display setup, controller drivers, and a minimal UI layer. Edges reflect the README and shown imports, inheritance, or calls; the tree and excerpts do not establish every runtime dispatch within the bundled display library.

Main entry points: [`src/Arduino_SensorKit.h`](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit.h) (Kit objects), [`src/Grove_-_Barometer_Sensor_BMP280/Seeed_BMP280.cpp`](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Grove_-_Barometer_Sensor_BMP280/Seeed_BMP280.cpp) (BMP280 driver), [`src/Grove_Temperature_And_Humidity_Sensor/DHT.cpp`](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Grove_Temperature_And_Humidity_Sensor/DHT.cpp) (DHT driver), [`src/Arduino_SensorKit_LIS3DHTR.h`](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit_LIS3DHTR.h) (LIS3DHTR driver)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_kit["SensorKit API"]
  node_facade["Kit objects"]
  node_pressure_wrap["Pressure wrapper"]
  node_accel_wrap["Accelerometer wrapper"]
  node_dht_wrap["DHT wrapper"]
  node_oled_wrap["OLED wrapper"]
end

subgraph group_sensors["Sensor Drivers"]
  node_bmp_driver["BMP280 driver<br/>[Seeed_BMP280.cpp]"]
  node_dht_driver["DHT driver<br/>[DHT.cpp]"]
  node_lis_driver["LIS3DHTR driver"]
end

subgraph group_display["Display Stack"]
  node_u8x8_api["U8x8 text API<br/>[U8x8lib.cpp]"]
  node_u8x8_transport["Arduino bus transport<br/>[U8x8lib.cpp]"]
  node_u8x8_drivers["Display controllers"]
  node_u8g2_api["U8g2 graphics API<br/>[U8g2lib.cpp]"]
  node_u8g2_setup["Display setup<br/>[u8g2_d_setup.c]"]
end

subgraph group_ui["Display UI"]
  node_mui_core["MUI core<br/>[mui.c]"]
  node_mui_adapter["MUI U8g2 adapter<br/>[mui_u8g2.c]"]
end

node_sketch(("Arduino sketch"))
node_arduino(("Arduino board"))
node_hardware(("Kit sensors and OLED"))

node_sketch -->|"uses"| node_facade
node_facade -->|"exposes"| node_pressure_wrap
node_facade -->|"exposes"| node_accel_wrap
node_facade -->|"exposes"| node_dht_wrap
node_facade -->|"exposes"| node_oled_wrap
node_pressure_wrap -->|"wraps"| node_bmp_driver
node_dht_wrap -->|"inherits"| node_dht_driver
node_accel_wrap -.->|"delegates"| node_lis_driver
node_oled_wrap -->|"inherits"| node_u8x8_api
node_bmp_driver -->|"uses I2C"| node_arduino
node_dht_driver -->|"uses I2C"| node_arduino
node_lis_driver -.->|"uses I2C"| node_arduino
node_bmp_driver -.->|"reads"| node_hardware
node_dht_driver -.->|"reads"| node_hardware
node_lis_driver -.->|"reads"| node_hardware
node_oled_wrap -.->|"displays on"| node_hardware
node_u8g2_api -->|"configures via"| node_u8g2_setup
node_u8g2_setup -->|"selects controller"| node_u8x8_drivers
node_u8x8_api -.->|"uses callbacks"| node_u8x8_transport
node_u8x8_transport -->|"transfers bytes"| node_arduino
node_mui_adapter -->|"adapts"| node_mui_core
node_mui_adapter -->|"uses"| node_u8g2_api

click node_facade "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit.h"
click node_pressure_wrap "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit_BMP280.cpp"
click node_accel_wrap "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit_LIS3DHTR.cpp"
click node_dht_wrap "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit.h"
click node_oled_wrap "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit.h"
click node_bmp_driver "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Grove_-_Barometer_Sensor_BMP280/Seeed_BMP280.cpp"
click node_dht_driver "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Grove_Temperature_And_Humidity_Sensor/DHT.cpp"
click node_lis_driver "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit_LIS3DHTR.h"
click node_u8x8_api "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/U8x8lib.cpp"
click node_u8x8_transport "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/U8x8lib.cpp"
click node_u8x8_drivers "https://github.com/arduino-libraries/arduino_sensorkit/tree/main/src/U8g2/src/clib"
click node_u8g2_api "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/U8g2lib.cpp"
click node_u8g2_setup "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/clib/u8g2_d_setup.c"
click node_mui_core "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/clib/mui.c"
click node_mui_adapter "https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/clib/mui_u8g2.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_facade,node_pressure_wrap,node_accel_wrap,node_dht_wrap,node_oled_wrap toneBlue
class node_bmp_driver,node_dht_driver,node_lis_driver toneAmber
class node_u8x8_api,node_u8x8_transport,node_u8x8_drivers,node_u8g2_api,node_u8g2_setup toneMint
class node_mui_core,node_mui_adapter toneRose
class node_sketch,node_arduino,node_hardware toneIndigo
```

## Components

### SensorKit API

- [Kit objects](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit.h): `src/Arduino_SensorKit.h`
- [Pressure wrapper](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit_BMP280.cpp): `src/Arduino_SensorKit_BMP280.cpp`
- [Accelerometer wrapper](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit_LIS3DHTR.cpp): `src/Arduino_SensorKit_LIS3DHTR.cpp`
- [DHT wrapper](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit.h): `src/Arduino_SensorKit.h`
- [OLED wrapper](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit.h): `src/Arduino_SensorKit.h`

### Sensor Drivers

- [BMP280 driver](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Grove_-_Barometer_Sensor_BMP280/Seeed_BMP280.cpp): `src/Grove_-_Barometer_Sensor_BMP280/Seeed_BMP280.cpp`
- [DHT driver](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Grove_Temperature_And_Humidity_Sensor/DHT.cpp): `src/Grove_Temperature_And_Humidity_Sensor/DHT.cpp`
- [LIS3DHTR driver](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/Arduino_SensorKit_LIS3DHTR.h): `src/Arduino_SensorKit_LIS3DHTR.h`

### Display Stack

- [U8x8 text API](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/U8x8lib.cpp): `src/U8g2/src/U8x8lib.cpp`
- [Arduino bus transport](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/U8x8lib.cpp): `src/U8g2/src/U8x8lib.cpp`
- [Display controllers](https://github.com/arduino-libraries/arduino_sensorkit/tree/main/src/U8g2/src/clib): `src/U8g2/src/clib`
- [U8g2 graphics API](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/U8g2lib.cpp): `src/U8g2/src/U8g2lib.cpp`
- [Display setup](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/clib/u8g2_d_setup.c): `src/U8g2/src/clib/u8g2_d_setup.c`

### Display UI

- [MUI core](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/clib/mui.c): `src/U8g2/src/clib/mui.c`
- [MUI U8g2 adapter](https://github.com/arduino-libraries/arduino_sensorkit/blob/main/src/U8g2/src/clib/mui_u8g2.c): `src/U8g2/src/clib/mui_u8g2.c`

### Other components

- **Arduino sketch**
- **Arduino board**
- **Kit sensors and OLED**

## Connections

- Arduino sketch → Kit objects: uses (evidence: `src/Arduino_SensorKit.h`)
- Kit objects → Pressure wrapper: exposes (evidence: `src/Arduino_SensorKit.h`)
- Kit objects → Accelerometer wrapper: exposes (evidence: `src/Arduino_SensorKit.h`)
- Kit objects → DHT wrapper: exposes (evidence: `src/Arduino_SensorKit.h`)
- Kit objects → OLED wrapper: exposes (evidence: `src/Arduino_SensorKit.h`)
- Pressure wrapper → BMP280 driver: wraps
- DHT wrapper → DHT driver: inherits (evidence: `src/Arduino_SensorKit.h`)
- Accelerometer wrapper → LIS3DHTR driver: delegates (evidence: `src/Arduino_SensorKit_LIS3DHTR.cpp`)
- OLED wrapper → U8x8 text API: inherits (evidence: `src/Arduino_SensorKit.h`)
- BMP280 driver → Arduino board: uses I2C (evidence: `src/Grove_-_Barometer_Sensor_BMP280/Seeed_BMP280.cpp`)
- DHT driver → Arduino board: uses I2C (evidence: `src/Grove_Temperature_And_Humidity_Sensor/DHT.cpp`)
- LIS3DHTR driver → Arduino board: uses I2C
- BMP280 driver → Kit sensors and OLED: reads
- DHT driver → Kit sensors and OLED: reads
- LIS3DHTR driver → Kit sensors and OLED: reads
- OLED wrapper → Kit sensors and OLED: displays on
- U8g2 graphics API → Display setup: configures via (evidence: `src/U8g2/src/clib/u8g2_d_setup.c`)
- Display setup → Display controllers: selects controller (evidence: `src/U8g2/src/clib/u8g2_d_setup.c`)
- U8x8 text API → Arduino bus transport: uses callbacks (evidence: `src/U8g2/src/U8x8lib.cpp`)
- Arduino bus transport → Arduino board: transfers bytes (evidence: `src/U8g2/src/U8x8lib.cpp`)
- MUI U8g2 adapter → MUI core: adapts (evidence: `src/U8g2/src/clib/mui_u8g2.c`)
- MUI U8g2 adapter → U8g2 graphics API: uses (evidence: `src/U8g2/src/clib/mui_u8g2.c`)
