mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-07-26 10:38:41 +00:00
833990f44d
Driver for ENS160 sensor: https://www.sciosense.com/wp-content/uploads/2023/12/ENS160-Datasheet.pdf
57 lines
986 B
Go
57 lines
986 B
Go
// This example demonstrates ENS160 usage.
|
|
//
|
|
// Wiring:
|
|
// - VCC to 3.3V, GND to ground
|
|
// - SDA to board SDA, SCL to board SCL
|
|
|
|
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
"machine"
|
|
|
|
"tinygo.org/x/drivers"
|
|
"tinygo.org/x/drivers/ens160"
|
|
)
|
|
|
|
func main() {
|
|
err := machine.I2C0.Configure(machine.I2CConfig{
|
|
Frequency: 400 * machine.KHz,
|
|
})
|
|
if err != nil {
|
|
println("Failed to configure I2C:", err)
|
|
}
|
|
|
|
dev := ens160.New(machine.I2C0, ens160.DefaultAddress)
|
|
|
|
connected := dev.Connected()
|
|
if !connected {
|
|
println("ENS160 not detected")
|
|
return
|
|
}
|
|
println("ENS160 detected")
|
|
|
|
if err := dev.Configure(); err != nil {
|
|
println("Failed to configure ENS160:", err)
|
|
}
|
|
|
|
for {
|
|
err := dev.Update(drivers.Concentration)
|
|
if err != nil {
|
|
println("Error reading ENS160: %v\n", err)
|
|
time.Sleep(5 * time.Second)
|
|
continue
|
|
}
|
|
|
|
println(
|
|
"AQI:", dev.AQI(),
|
|
"TVOC:", dev.TVOC(),
|
|
"eCO2:", dev.ECO2(),
|
|
"Validity:", dev.ValidityString(),
|
|
)
|
|
|
|
time.Sleep(2 * time.Second)
|
|
}
|
|
}
|