Interact with the popular BME280 sensor via I2C from Clojure JVM.
Relies on helins.linux.i2c for performing I2C operations.
This is an overview.
The full API is available on Cljdoc.
In short, without error handling :
(require '[helins.linux.i2c :as i2c]
'[helins.linux.i2c.bme280 :as bme280])
(with-open [bus (i2c/bus "/dev/i2c-1")]
(i2c/select-slave bus
0x76)
(let [;; Those compensation words will be used for adjusting raw data received from sensors.
compensation-words (bme280/compensation-words bus)
;; Configuration map.
config {:bme280/iir-filter 16
:bme280/mode :forced
:bme280/oversampling.humidity :x1
:bme280/oversampling.pressure :x2
:bme280/oversampling.temperature :x4}
;; Computes how many milliseconds a single measurement takes, at most.
wait-ms (:maximum (bme280/cycle-duration config))]
(bme280/configure bus
config)
(Thread/sleep wait-ms)
(bme280/read-sensors bus
compensation-words)
=> {:bme280/humidity 46.932
:bme280/pressure 960.3226
:bme280/temperature 23.3}
))
Copyright © 2017 Adam Helinski
Licensed under the term of the Mozilla Public License 2.0, see LICENSE.
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close