This repository includes examples of using devices through these drivers:
Device driver | Description | Interface | Introductory blog post |
---|---|---|---|
Ad983x | Waveform generator / direct digital synthesizer (DDS). | SPI | Intro blog post |
Ads1x1x | 12/16-bit Analog-to-digital (ADC) converters. | I2C | Intro blog post |
Apds9960 | Digital proximity, ambient light, RGB and gesture sensor. | I2C | |
Bmi160 | Inertial measurement unit (IMU) (accelerometer + gyro). | I2C / SPI | |
Ds1307 | Real-time clock (RTC) / calendar. | I2C | Intro blog post |
Ds323x | Extremely accurate real-time clock (RTC) / calendar. | I2C / SPI | |
Eeprom24x | 24x series serial EEPROM devices. | I2C | Intro blog post |
Embedded-Ccs811 | Digital gas sensor for monitoring indoor air quality. | I2C | Intro blog post |
Hdc20xx | Temperature and humidity sensors. | I2C | |
iAQ-Core | Indoor air quality sensor. | I2C | |
Isl29125 | RGB color light sensor with IR blocking filter. | I2C | |
Kxcj9 | Tri-axis MEMS accelerometer. | I2C | Intro blog post |
Lm75 | Temperature sensor and thermal watchdog. | I2C | |
Lsm303agr | Tri-axis accelerometer and tri-axis magnetometer. | I2C / SPI | |
Max170xx | Fuel-gauge for lithium-ion (Li+) batteries. | I2C | |
Max3010x | Pulse oximeter and heart-rate sensor. | I2C | |
Max44009 | Ambient light sensor. | I2C | |
Mcp4x | Digital potentiometers. | SPI | |
Mcp49xx | 8/10/12-bit Digital-to-analog (DAC) converters. | SPI | |
Mcp794xx | Real-time clock (RTC) / calendar. | I2C | Intro blog post |
Mlx9061x | Non-contact infrared (IR) thermometer. | I2C | |
Mma8x5x | Tri-axis MEMS accelerometers. | I2C | |
Opt300x | Ambient light sensor. | I2C | Intro blog post |
Pcf857x | 8/16-pin I/O port expanders. | I2C | |
Pwm-Pca9685 | 16-pin PWM port expander / LED driver. | I2C | Intro blog post |
Si4703 | FM radio turners (receivers). | I2C | Intro blog post |
Tcs3472 | RGBW light color sensor with IR filter. | I2C | |
Tmp006 | Non-contact infrared (IR) thermopile temperature sensor. | I2C | Intro blog post |
Tmp1x2 | Temperature sensors. | I2C | Intro blog post |
Veml6030 | Ambient light sensor. | I2C | Intro blog post |
Veml6040 | RGBW light color sensor. | I2C | |
Veml6070 | Ultraviolet A (UVA) light sensor. | I2C | |
Veml6075 | Ultraviolet A (UVA) and B (UVB) light sensor. | I2C | Intro blog post |
W25 | Winbond's W25 serial flash memory devices. | SPI | |
Xca9548a | TCA9548A/PCA9548A I2C switches/multiplexers. | I2C |
These examples use several boards: STM32F3-Discovery, STM32F103 "Blue pill", Raspberry Pi and Micro:bit V2. These are classified in different folders.
At the beginning of each example the setup and behavior is described. Many of them also use an SSD1306 OLED display. You can get most of the modules used here on AliExpress generally for a very small price.
These examples are guaranteed to build with the latest Rust stable release. If you get a build error, try updating your Rust installation.
To run the examples, clone this repository, go to the appropriate folder and run
either cargo embed
or cargo run
. Look in the README of each folder for instructions.
git clone https://github.com/eldruin/driver-examples
cd driver-examples/stm32f1-bluepill
# ...
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.