diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-03-13 16:14:52 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-03-13 16:14:52 +0100 |
| commit | 70d4cbf0df8d1ce98b1db925d54f982d9c44ad98 (patch) | |
| tree | d1112b4e906549f51dedc46cc6d96ac0a1f569b4 | |
| parent | fc7baacabf15c94682f829259157fdc67cbfbda3 (diff) | |
| download | dht11-sampler-70d4cbf0df8d1ce98b1db925d54f982d9c44ad98.tar.gz | |
read dht 11 temperature
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/main.rs | 38 |
2 files changed, 28 insertions, 12 deletions
@@ -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); } } |
