aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs38
1 files changed, 27 insertions, 11 deletions
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);
}
}