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

[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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版