@@ -24,20 +24,19 @@ Here are some general tutorials that provide brief introductions to embedded pro
2424
2525### Example - ESP32
2626
27+ ![ running] ( /docs/example_esp32_wired.jpg )
28+
2729``` rust
2830#![no_std]
2931#![no_main]
3032
31- use embedded_dht_rs :: {dht11 :: Dht11 , dht22 :: Dht22 };
33+ use embedded_dht_rs :: {dht11 :: Dht11 , dht20 :: Dht20 , dht22 :: Dht22 };
3234use esp_backtrace as _;
3335use esp_hal :: {
34- clock :: ClockControl ,
35- delay :: Delay ,
36- gpio :: {Io , Level , OutputOpenDrain , Pull },
37- peripherals :: Peripherals ,
38- prelude :: * ,
39- system :: SystemControl ,
36+ clock :: ClockControl , delay :: Delay , gpio :: {Io , Level , OutputOpenDrain , Pull }, i2c :: I2C , peripherals :: Peripherals , prelude :: * , system :: SystemControl
4037};
38+ use fugit :: HertzU32 ;
39+
4140#[entry]
4241fn main () -> ! {
4342 let peripherals = Peripherals :: take ();
@@ -49,11 +48,20 @@ fn main() -> ! {
4948
5049 let delay = Delay :: new (& clocks );
5150
52- let gpio4 = OutputOpenDrain :: new (io . pins. gpio4, Level :: High , Pull :: None );
53- let gpio5 = OutputOpenDrain :: new (io . pins. gpio5, Level :: High , Pull :: None );
54-
55- let mut dht11 = Dht11 :: new (gpio4 , delay );
56- let mut dht22 = Dht22 :: new (gpio5 , delay );
51+ let od_for_dht11 = OutputOpenDrain :: new (io . pins. gpio4, Level :: High , Pull :: None );
52+ let od_for_dht22 = OutputOpenDrain :: new (io . pins. gpio5, Level :: High , Pull :: None );
53+ let i2c_for_dht20 = I2C :: new (
54+ peripherals . I2C0 ,
55+ io . pins. gpio21,
56+ io . pins. gpio22,
57+ HertzU32 :: kHz (400 ),
58+ & clocks ,
59+ None ,
60+ );
61+
62+ let mut dht11 = Dht11 :: new (od_for_dht11 , delay );
63+ let mut dht22 = Dht22 :: new (od_for_dht22 , delay );
64+ let mut dht20 = Dht20 :: new (i2c_for_dht20 , delay );
5765
5866 loop {
5967 delay . delay (5000. millis ());
@@ -76,6 +84,15 @@ fn main() -> ! {
7684 Err (error ) => log :: error! (" An error occurred while trying to read sensor: {:?}" , error ),
7785 }
7886
87+ match dht20 . read () {
88+ Ok (sensor_reading ) => log :: info! (
89+ " DHT 20 Sensor - Temperature: {} °C, humidity: {} %" ,
90+ sensor_reading . temperature,
91+ sensor_reading . humidity
92+ ),
93+ Err (error ) => log :: error! (" An error occurred while trying to read sensor: {:?}" , error ),
94+ }
95+
7996 log :: info! (" -----" );
8097 }
8198}
0 commit comments