This is an example program to fetch data of DHT11 Sensors
Fork of DHT11_with_Nucleo by
main.cpp
- Committer:
- kaliczp
- Date:
- 2015-01-06
- Revision:
- 5:76a9332af64c
- Parent:
- 4:62b680fac6ed
- Child:
- 6:8027edc2b69f
- Child:
- 7:5b0793a2b391
File content as of revision 5:76a9332af64c:
#include "mbed.h" DigitalOut myled(LED1); // Activate LED DigitalIn mybutton(USER_BUTTON); // Activate button DigitalInOut data_pin(A0); // Activate digital in Serial pc(SERIAL_TX, SERIAL_RX); // Initialize UART connection // Use a terminal program (eg. TeraTerm). Timer tmr; //initialize timer char adat[40]; // Array for data int i; // Function to initialize DHT11 void dht_read(void) { data_pin.output(); // Set A0 as output // Initialize measurement > 18 ms low data_pin = 0; wait_ms(20); // After high and release the pin switch input mode data_pin = 1; data_pin.input(); // Wait until the end of 80 us low while(!data_pin.read()) {} // Wait until end of 80 us high while(data_pin.read()) {} // 40 bit, 40 read out cycle for(i=0; i<40; i++) { tmr.stop(); // Stop timer if runs tmr.reset(); // Reset timer // Wait until pin while(!data_pin.read()) {} tmr.start(); while(data_pin.read()) {} // If DHT11 HIGH longer than 40 micro seconds (hopefully 70 us) if(tmr.read_us() > 40) { // bit is 1 adat[i] = 1; } } } int main() { pc.printf("Read the DHT11 temperature and humidity sensor!\n"); //Welcome message while(1) { if (mybutton == 0) { // Button is pressed // Reset character array for(i=0; i < 40; i++){ adat[i] = 0; } myled = 1; // LED is ON dht_read(); // Call the function // Send result through UART result for(i=0; i < 40; i++){ pc.printf("%d",adat[i]); } wait_ms(200); // Wait 0.2 sec till continue. } else { myled = 0; // LED is OFF } } }