#![no_std] #![no_main] use arduino_uno::{Delay, delay_ms, prelude::*}; use dht11::Dht11; use panic_halt as _; #[arduino_uno::entry] fn main() -> ! { let dp = arduino_uno::Peripherals::take().unwrap(); let mut pins = arduino_uno::Pins::new(dp.PORTB, dp.PORTC, dp.PORTD); let mut led = pins.d13.into_output(&mut pins.ddr); led.set_low().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.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); } }