|
最近采購了一只溫濕度傳感器SHT35,選的防水的那種,一共四根接線:VCC、GND、SDA、SCK從店家那里要的例程給大家分享一下,有需要的可以直接下載。
- int main(void){
- //==============================================================================
- etError error; // error code
- u32t serialNumber;// serial number
- regStatus status; // sensor status
- ft temperature; // temperature [癈]
- ft humidity; // relative humidity [%RH]
- bt heater; // heater, false: off, true: on
- SystemInit();
- Led_Init();
- UserButton_Init();
- EvalBoardPower_Init();
-
- SHT3X_Init(0x45); // Address: 0x44 = Sensor on EvalBoard connector
- // 0x45 = Sensor on EvalBoard
-
- // wait 50ms after power on
- DelayMicroSeconds(50000);
-
- error = SHT3x_ReadSerialNumber(&serialNumber);
- //if(error != NO_ERROR){}
-
- // wait 50ms after serial number read
- DelayMicroSeconds(50000);
-
- // demonstrate a single shot measurement with clock-stretching
- error = SHT3X_GetTempAndHumi(&temperature, &humidity, REPEATAB_HIGH, MODE_CLKSTRETCH, 50);
- //if(error != NO_ERROR){}
-
- // wait 50ms after measurment
- DelayMicroSeconds(50000);
-
- // demonstrate a single shot measurement with polling and 50ms timeout
- error = SHT3X_GetTempAndHumi(&temperature, &humidity, REPEATAB_HIGH, MODE_POLLING, 50);
- //if(error != NO_ERROR){}
-
- // wait 50ms after measurment
- DelayMicroSeconds(50000);
-
- // loop forever
- while(1)
- {
- error = NO_ERROR;
-
- // loop while no error
- while(error == NO_ERROR)
- {
- // read status register
- error |= SHT3X_ReadStatus(&status.u16);
- if(error != NO_ERROR) break;
-
- // check if the reset bit is set after a reset or power-up
- if(status.bit.ResetDetected)
- {
- // clear reset flag
- error = SHT3X_ClearAllAlertFlags();
- if(error != NO_ERROR) break;
-
- //start periodic measurement, with high repeatability and 1 measurements per second
- error = SHT3X_StartPeriodicMeasurment(REPEATAB_HIGH, FREQUENCY_1HZ);
- if(error != NO_ERROR) break;
-
- //switch green LED on
- LedGreenOn();
- }
-
- // read measurment buffer
- error = SHT3X_ReadMeasurementBuffer(&temperature, &humidity);
- if(error == NO_ERROR)
- {
- // flash blue LED to signalise new temperature and humidity values
- LedBlueOn();
- DelayMicroSeconds(10000);
- LedBlueOff();
- }
- else if (error == ACK_ERROR)
- {
- // there were no new values in the buffer -> ignore this error
- error = NO_ERROR;
- }
- else break;
-
- // read heater status
- heater = status.bit.HeaterStatus ? TRUE : FALSE;
-
- // if the user button is not pressed ...
- if(ReadUserButton() == 0)
- {
- // ... and the heater is on
- if(heater)
- {
- // switch off the sensor internal heater
- error |= SHT3X_DisbaleHeater();
- if(error != NO_ERROR) break;
- }
- }
- else
- // if the user button is pressed ...
- {
- // ... and the heater is off
- if(!heater)
- {
- // switch on the sensor internal heater
- error |= SHT3X_EnableHeater();
- if(error != NO_ERROR) break;
- }
- }
-
- // wait 100ms
- DelayMicroSeconds(100000);
- }
-
- // in case of an error ...
-
- // ... switch green and blue LED off
- LedGreenOff();
- LedBlueOff();
-
- // ... try first a soft reset ...
- error = SHT3X_SoftReset();
-
- // ... if the soft reset fails, do a hard reset
- if(error != NO_ERROR)
- {
- SHT3X_HardReset();
- }
-
- // flash green LED to signalise an error
- LedGreenOn();
- DelayMicroSeconds(10000);
- LedGreenOff();
- }
- }
復制代碼
|
評分
-
查看全部評分
|