你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

[STM32F042 NucLeo] Mbed+DHT11温湿度

[复制链接]
leo121_3006061 提问时间:2016-12-5 12:17 /
正好手头上有个DHT11温湿度传感器,在Mbed下初步试着用了一下,代码相当简单
  1. include "mbed.h"

  2. //------------------------------------
  3. // Hyperterminal configuration
  4. // 115200 bauds, 8-bit data, no parity
  5. //------------------------------------

  6. Serial pc(SERIAL_TX, SERIAL_RX);
  7. DigitalOut myled(LED1);


  8. DigitalInOut data_pin(A0); // Activate digital in as dht11 Pin

  9. Timer tmr; //initialize timer
  10. uint64_t adat; // 64 bit variable for temporary data
  11. int i;

  12. void dht_read(void) {
  13.     data_pin.output(); // Set A0 as output
  14.     // Initialize measurement > 18 ms low
  15.     data_pin = 0;
  16.     wait_ms(20);
  17.     // After high and release the pin switch input mode
  18.     data_pin = 1;
  19.     data_pin.input();
  20.     // Wait until the end of 80 us low
  21.     while(!data_pin.read()) {}
  22.     // Wait until end of 80 us high
  23.     while(data_pin.read()) {}
  24.     // 40 bit, 40 read out cycle
  25.     for(i=0; i<40; i++) {
  26.         adat = adat << 1; // Shift for new number
  27.         tmr.stop(); // Stop timer if runs
  28.         tmr.reset();  // Reset timer
  29.         // Wait until pin
  30.         while(!data_pin.read()) {}         
  31.         tmr.start();            
  32.         while(data_pin.read()) {}
  33.         // If DHT11 HIGH longer than 40 micro seconds (hopefully 70 us)
  34.         if(tmr.read_us() > 40) {
  35.             // bit is 1
  36.             adat++;
  37.         }
  38.     }
  39. }

  40. int main() {
  41.     pc.printf("Hello World !\r\n");
  42.     pc.baud(115200);

  43.      pc.printf("Read the DHT11 temperature and humidity sensor!\r\n"); //Welcome message
  44.     while(1) {
  45.          

  46.             adat = 0;
  47.             myled = !myled; // LED is ON/OFF
  48.             dht_read(); // Call the function
  49.             // Send result through UART result
  50.             pc.printf("Humidity: ");
  51.             pc.printf("%d", (adat  & 0x000000ff00000000) >> 32); // Humidity
  52.             pc.printf("\n\r"); // Send a new line and carriage return.
  53.              pc.printf("Temperature: ");
  54.             pc.printf("%d", (adat & 0x0000000000ff0000) >> 16 ); // Temperature
  55.             pc.printf("\n\r");
  56.             pc.printf("Checksum: ");
  57.             pc.printf("%d", adat & 0x00000000000000ff); // Checksum.
  58.             pc.printf("\n\r");
  59.             wait(2); // Wait 2 sec till continue.

  60.         
  61.     }
  62. }
复制代码


UART连接PA_2,PA_3,显示当前温度和湿度

UART连接PA_2,PA_3,显示当前温度和湿度

接线比较乱

接线比较乱

评分

参与人数 1 ST金币 +10 收起 理由
zero99 + 10

查看全部评分

1 收藏 3 评论14 发布时间:2016-12-5 12:17

举报

14个回答
yhyeefocus 回答时间:2016-12-5 13:00:16
看贴回帖     
jackten 回答时间:2016-12-5 13:31:37
谢谢分享              
limale 回答时间:2016-12-6 09:44:15
谢谢分享
leo121_3006061 回答时间:2016-12-6 16:17:44
谢谢各位支持
zero99 回答时间:2016-12-19 16:28:15
感谢分享,这个板块之前关注少了
leo121_3006061 回答时间:2016-12-19 22:29:41
zero99 发表于 2016-12-19 16:28
感谢分享,这个板块之前关注少了

谢谢鼓励
damiaa 回答时间:2016-12-30 11:39:21
感谢分享
zly_1980 回答时间:2016-12-30 15:39:30
学习中学习中
shuolang126 回答时间:2017-1-2 09:00:15
看起来是是简单一些,底层初始化驱动基本都省去了!
leo121_3006061 回答时间:2017-1-2 15:27:33
shuolang126 发表于 2017-1-2 09:00
看起来是是简单一些,底层初始化驱动基本都省去了!

是的,不再过多关注底层了,方便在不同板子之间移植
zbber 回答时间:2017-1-3 08:57:38
谢谢分享,谢谢分享 赞一个
yiturn 回答时间:2017-1-4 09:10:36
不用初始化,这样就不用去看底层的东西了?
leo121_3006061 回答时间:2017-1-4 13:03:47
yiturn 发表于 2017-1-4 09:10
不用初始化,这样就不用去看底层的东西了?

初始化由mbed替你代劳了,不用再关注这些了
leo121_3006061 回答时间:2017-1-4 13:04:05
zbber 发表于 2017-1-3 08:57
谢谢分享,谢谢分享 赞一个

感谢支持

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版