aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-03-13 16:14:52 +0100
committerGustav Sörnäs <gustav@sornas.net>2021-03-13 16:14:52 +0100
commit70d4cbf0df8d1ce98b1db925d54f982d9c44ad98 (patch)
treed1112b4e906549f51dedc46cc6d96ac0a1f569b4
parentfc7baacabf15c94682f829259157fdc67cbfbda3 (diff)
downloaddht11-sampler-70d4cbf0df8d1ce98b1db925d54f982d9c44ad98.tar.gz
read dht 11 temperature
-rw-r--r--Cargo.toml2
-rw-r--r--src/main.rs38
2 files changed, 28 insertions, 12 deletions
diff --git a/Cargo.toml b/Cargo.toml
index fe2190f..93d32a6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,7 +11,7 @@ nb = "0.1.2"
ufmt = "0.1.0"
avr-device = "0.3"
-dht-sensor = "0.2"
+dht11 = "0.3"
[dependencies.arduino-uno]
git = "https://github.com/rahix/avr-hal"
diff --git a/src/main.rs b/src/main.rs
index 13e9bc3..daef02d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,7 +1,8 @@
#![no_std]
#![no_main]
-use arduino_uno::prelude::*;
+use arduino_uno::{Delay, delay_ms, prelude::*};
+use dht11::Dht11;
use panic_halt as _;
#[arduino_uno::entry]
@@ -10,19 +11,34 @@ fn main() -> ! {
let mut pins = arduino_uno::Pins::new(dp.PORTB, dp.PORTC, dp.PORTD);
- // Digital pin 13 is also connected to an onboard LED marked "L"
let mut led = pins.d13.into_output(&mut pins.ddr);
+ led.set_low().void_unwrap();
- led.set_high().void_unwrap();
+ let mut serial = arduino_uno::Serial::new(
+ dp.USART0,
+ pins.d0,
+ pins.d1.into_output(&mut pins.ddr),
+ 57600.into_baudrate(),
+ );
+
+ let mut delay = Delay::new();
+ let mut dht11 = Dht11::new(pins.d2.into_tri_state(&mut pins.ddr));
+
+ delay_ms(2000);
loop {
- led.toggle().void_unwrap();
- arduino_uno::delay_ms(200);
- led.toggle().void_unwrap();
- arduino_uno::delay_ms(200);
- led.toggle().void_unwrap();
- arduino_uno::delay_ms(200);
- led.toggle().void_unwrap();
- arduino_uno::delay_ms(800);
+ led.set_high().void_unwrap();
+ arduino_uno::delay_ms(50);
+ led.set_low().void_unwrap();
+ match dht11.perform_measurement(&mut delay) {
+ Ok(meas) => ufmt::uwriteln!(&mut serial, "temp: {} hum: {}\r", meas.temperature, meas.humidity).void_unwrap(),
+ Err(e) => match e {
+ dht11::Error::Timeout => ufmt::uwriteln!(&mut serial, "error: timeout\r").void_unwrap(),
+ dht11::Error::CrcMismatch => ufmt::uwriteln!(&mut serial, "error: crc mismatch\r").void_unwrap(),
+ dht11::Error::Gpio(_) => ufmt::uwriteln!(&mut serial, "error: gpio\r").void_unwrap(),
+ }
+ }
+
+ arduino_uno::delay_ms(2000);
}
}