找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7899|回复: 6
打印 上一主题 下一主题
收起左侧

SHT35系列温湿度传感器的单片机例程分享

[复制链接]
跳转到指定楼层
楼主
ID:383873 发表于 2018-8-14 13:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近采购了一只温湿度传感器SHT35,选的防水的那种,一共四根接线:VCC、GND、SDA、SCK从店家那里要的例程给大家分享一下,有需要的可以直接下载。
  1. int main(void){
  2. //==============================================================================
  3.   etError   error;       // error code
  4.   u32t      serialNumber;// serial number
  5.   regStatus status;      // sensor status
  6.   ft        temperature; // temperature [癈]
  7.   ft        humidity;    // relative humidity [%RH]
  8.         bt        heater;      // heater, false: off, true: on

  9.   SystemInit();
  10.   Led_Init();
  11.   UserButton_Init();
  12.         EvalBoardPower_Init();
  13.   
  14.   SHT3X_Init(0x45); // Address: 0x44 = Sensor on EvalBoard connector
  15.                     //          0x45 = Sensor on EvalBoard
  16.   
  17.   // wait 50ms after power on
  18.   DelayMicroSeconds(50000);   
  19.   
  20.   error = SHT3x_ReadSerialNumber(&serialNumber);
  21.   //if(error != NO_ERROR){}
  22.   
  23.   // wait 50ms after serial number read
  24.   DelayMicroSeconds(50000);  
  25.   
  26.   // demonstrate a single shot measurement with clock-stretching
  27.   error = SHT3X_GetTempAndHumi(&temperature, &humidity, REPEATAB_HIGH, MODE_CLKSTRETCH, 50);
  28.   //if(error != NO_ERROR){}
  29.   
  30.   // wait 50ms after measurment
  31.   DelayMicroSeconds(50000);   
  32.   
  33.   // demonstrate a single shot measurement with polling and 50ms timeout
  34.   error = SHT3X_GetTempAndHumi(&temperature, &humidity, REPEATAB_HIGH, MODE_POLLING, 50);
  35.   //if(error != NO_ERROR){}
  36.   
  37.   // wait 50ms after measurment
  38.   DelayMicroSeconds(50000);   
  39.         
  40.         // loop forever
  41.         while(1)
  42.         {
  43.                 error = NO_ERROR;
  44.                
  45.                 // loop while no error
  46.                 while(error == NO_ERROR)
  47.                 {
  48.       // read status register
  49.                         error |= SHT3X_ReadStatus(&status.u16);
  50.       if(error != NO_ERROR) break;
  51.       
  52.       // check if the reset bit is set after a reset or power-up
  53.       if(status.bit.ResetDetected)
  54.       {
  55.         // clear reset flag
  56.         error = SHT3X_ClearAllAlertFlags();
  57.         if(error != NO_ERROR) break;
  58.         
  59.         //start periodic measurement, with high repeatability and 1 measurements per second
  60.         error = SHT3X_StartPeriodicMeasurment(REPEATAB_HIGH, FREQUENCY_1HZ);
  61.         if(error != NO_ERROR) break;
  62.         
  63.         //switch green LED on
  64.         LedGreenOn();
  65.       }
  66.                                 
  67.                         // read measurment buffer
  68.                          error = SHT3X_ReadMeasurementBuffer(&temperature, &humidity);
  69.                   if(error == NO_ERROR)
  70.                         {
  71.         // flash blue LED to signalise new temperature and humidity values
  72.         LedBlueOn();
  73.         DelayMicroSeconds(10000);
  74.         LedBlueOff();
  75.       }
  76.       else if (error == ACK_ERROR)
  77.       {
  78.                                 // there were no new values in the buffer -> ignore this error
  79.                                 error = NO_ERROR;
  80.                         }
  81.       else break;
  82.       
  83.       // read heater status
  84.       heater = status.bit.HeaterStatus ? TRUE : FALSE;
  85.                         
  86.       // if the user button is not pressed ...
  87.                         if(ReadUserButton() == 0)
  88.                         {
  89.          // ... and the heater is on
  90.                                  if(heater)
  91.                                  {
  92.                                          // switch off the sensor internal heater
  93.                                          error |= SHT3X_DisbaleHeater();
  94.            if(error != NO_ERROR) break;
  95.                                  }
  96.                         }
  97.                         else
  98.       // if the user button is pressed ...
  99.                         {
  100.          // ... and the heater is off
  101.                                  if(!heater)
  102.                                  {
  103.                                          // switch on the sensor internal heater
  104.                                          error |= SHT3X_EnableHeater();
  105.            if(error != NO_ERROR) break;
  106.                                  }
  107.                         }
  108.                         
  109.                         // wait 100ms
  110.       DelayMicroSeconds(100000);
  111.                 }
  112.                
  113.                 // in case of an error ...
  114.                
  115.                 // ... switch green and blue LED off
  116.                 LedGreenOff();
  117.                 LedBlueOff();
  118.                
  119.                 // ... try first a soft reset ...
  120.                 error = SHT3X_SoftReset();
  121.                
  122.     // ... if the soft reset fails, do a hard reset
  123.                 if(error != NO_ERROR)
  124.                 {
  125.                         SHT3X_HardReset();
  126.     }
  127.    
  128.     // flash green LED to signalise an error
  129.     LedGreenOn();
  130.     DelayMicroSeconds(10000);
  131.     LedGreenOff();
  132.         }
  133. }
复制代码



HT_AN_SHT3x_Sample_Code_V1_D1.zip

355.76 KB, 下载次数: 114, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:165769 发表于 2018-11-20 16:33 | 只看该作者
这份代码原模原样的我在网上看了到好几份了,就没人提出来质疑么?.别一个个厂家拿一份代码过来不测试就各种发...连I2C_SDA数据线切换读和写的时候都没进行IO口输入,输出模式切换的,你们是怎么读出来的?告诉我,这样的芯片我想要一堆~~

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:66915 发表于 2019-4-8 16:37 | 只看该作者
目前正需要这个东东啊,多谢多谢了哟
回复

使用道具 举报

地板
ID:459642 发表于 2020-7-2 10:34 | 只看该作者
如果都是官网例程的话,传个完整的供大家学习,多好,手边有一个传上来供大家参考吧,这个是v1.1的啊

Sensirion_Humidity_Sensors_SHT3x_Sample_Code.zip

410.11 KB, 下载次数: 46, 下载积分: 黑币 -5

官网sht3x例程,stm32f1x mcu,I2c方式读数

回复

使用道具 举报

5#
ID:459642 发表于 2020-7-2 10:35 | 只看该作者
传了一个官网例程,怎么看不到?
回复

使用道具 举报

6#
ID:107899 发表于 2020-10-30 16:17 | 只看该作者
代码不全,官网更详细
回复

使用道具 举报

7#
ID:378108 发表于 2020-11-1 16:34 | 只看该作者
suzongyao1120 发表于 2018-11-20 16:33
这份代码原模原样的我在网上看了到好几份了,就没人提出来质疑么?.别一个个厂家拿一份代码过来不测试就各 ...

51单片机就不需要切换输入输出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表