//---------------------------------------------------------------------------------- void main() //---------------------------------------------------------------------------------- // sample program that shows how to use SHT11 functions // 1. connection reset // 2. measure humidity [ticks](12 bit) and temperature [ticks](14 bit) // 3. calculate humidity [%RH] and temperature [°C] // 4. calculate dew point [°C] // 5. print temperature, humidity, dew point { value humi_val,temp_val; float dew_point; unsigned char error,checksum; unsigned int i; init_uart(); s_connectionreset(); while(1) { error=0; error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI); //measure humidity error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP); //measure temperature if(error!=0) s_connectionreset(); //in case of an error: connection reset else { humi_val.f=(float)humi_val.i; //converts integer to float temp_val.f=(float)temp_val.i; //converts integer to float calc_sth11(&humi_val.f,&temp_val.f); //calculate humidity, temperature dew_point=calc_dewpoint(humi_val.f,temp_val.f); //calculate dew point printf("temp:%5.1fC humi:%5.1f%% dew point:%5.1fC\n",temp_val.f,humi_val.f,dew_point); } //----------wait approx. 0.8s to avoid heating up SHTxx------------------------------ for (i=0;i<40000;i++); //(be sure that the compiler doesn't eliminate this line!) //----------------------------------------------------------------------------------- } }
void humid_sht_periodic_orig(void) { uint8_t error=0, checksum; s_connectionreset(); error += s_measure(&humidsht, &checksum, HUMI); //measure humidity error += s_measure(&tempsht, &checksum, TEMP); //measure temperature if (error != 0) { s_connectionreset(); //in case of an error: connection reset } else { calc_sht(humidsht, tempsht, &fhumidsht, &ftempsht); //calculate humidity, temperature humid_sht_available = TRUE; } }
u16 get_sht11_hanback_data(u8 type) { acq_type=type; error=0; error+=s_measure(&sht11_humi,&checksum,HUMI); //measure humidity error+=s_measure(&sht11_temp,&checksum,TEMP); //measure temperature if(error!=0) s_connectionreset(); //in case of an error: connection reset else { calc_sth11(sht11_humi,sht11_temp); //calculate humidity, temperature if(acq_type==DEW)dew_point=calc_dewpoint(sht11_humi,sht11_temp); //calculate dew point //char buf[10]; //puts("sht11_humi="); itoa(sht11_humi,buf,10); puts(buf); puts("\r\n"); //puts("sht11_temp="); itoa(sht11_temp,buf,10); puts(buf); puts("\r\n"); } if(acq_type == DEW)return (u16)(dew_point*10); else if(acq_type == HUMI)return myhumi; else if(acq_type == TEMP)return mytemp; else return 0; }
void takeHumiAnfTemperature() { unsigned char error,checksum; //unsigned int i; //WDTCTL = WDTPW + WDTHOLD; s_connectionreset(); error=0; error+=s_measure(&t_temp,&checksum,TEMP); error+=s_measure(&t_hum,&checksum,HUMI); if(error!=0) s_connectionreset(); else { temperatureSHT11 = (float) t_temp; hum = (float) t_hum; calc_sth11(&hum, &temperatureSHT11); //calculate humidity, temperature dew_point=calc_dewpoint(hum,temperatureSHT11); //calculate dew point } //1 second delay //__delay_cycles (16000000); }
//-------------------------------------------------------------------- void sht10_read(void) //-------------------------------------------------------------------- // 读温湿度 // input: humidity [%RH], temperature [癈] // output: dew point [癈] { unsigned char error,checksum; error=0; error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI); //measure humidity error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP); //measure temperature if(error!=0) { s_connectionreset(); //in case of an error: connection reset humi_val.active=0; temp_val.active=0; //printf("读写SHT10,失败,重新初始化STH10\r\n"); } else { humi_val.f=(float)humi_val.i; //converts integer to float temp_val.f=(float)temp_val.i; //converts integer to float calc_sth11(&humi_val.f,&temp_val.f); //calculate humidity, temperature humi_val.i=temp_val.i=0;//20150328 //printf("temp:%5.1fC humi:%5.1f%%\n",temp_val.f,humi_val.f); //printf("读写SHT10成功\r\n"); humi_val.active=1; temp_val.active=1; } }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(cc2538_demo_process, ev, data) { PROCESS_EXITHANDLER(broadcast_close(&bc)) PROCESS_BEGIN(); counter = 0; broadcast_open(&bc, BROADCAST_CHANNEL, &bc_rx); printf("temp:%u.%u\nhumidity:%u.%u\n",(int)tc,((int)(tc*10))%10 , (int)hc,((int)(hc*10))%10); while(1) { etimer_set(&et, CLOCK_SECOND*10); //ivanm // Configure ADC, Internal reference, 512 decimation rate (12bit) // SOCADCSingleConfigure(SOCADC_12_BIT, SOCADC_REF_INTERNAL); // // Trigger single conversion on AIN6 (connected to LV_ALS_OUT). // SOCADCSingleStart(SOCADC_VDD); // // Wait until conversion is completed // while(!SOCADCEndOfCOnversionGet()) { } // // Get data and shift down based on decimation rate // ui1Dummy = SOCADCDataGet() >> SOCADC_12_BIT_RSHIFT; printf("konverzija(ADC) = 0x%08x\n",ui1Dummy); PROCESS_YIELD(); if(ev == PROCESS_EVENT_TIMER) { leds_on(LEDS_PERIODIC); printf("Counter = 0x%08x\n", counter); err = s_measure(&temperature, checksum, TEMP); if (err == 0) { //printf("Temperature (ADC value) = 0x%4x\n", temperature); err = s_measure(&humidity, checksum, HUMI); if (err == 0) { //printf("Humidity (ADC value) = 0x%4x\n", humidity); //tc=sht11_TemperatureC(temperature); //hc=sht11_Humidity(temperature,humidity); tc=0; hc=0; printf("temp:%u.%u\nhumidity:%u.%u\n",(int)tc,((int)(tc*10))%10 , (int)hc,((int)(hc*10))%10); } else printf("SHT11 error - could not read humidity!\n"); } else printf("SHT11 error - could not read temperature!\n"); etimer_set(&et, CLOCK_SECOND); rtimer_set(&rt, RTIMER_NOW() + LEDS_OFF_HYSTERISIS, 1, rt_callback, NULL); } else if(ev == sensors_event) { if(data == &button_select_sensor) { if (swt==0) { packetbuf_copyfrom(&temperature, sizeof(temperature)); broadcast_send(&bc); swt=1; } else { packetbuf_copyfrom(&humidity, sizeof(humidity)); broadcast_send(&bc); swt=0; } } else if(data == &button_left_sensor || data == &button_right_sensor) { leds_toggle(LEDS_BUTTON); } else if(data == &button_down_sensor) { cpu_cpsid(); leds_on(LEDS_REBOOT); watchdog_reboot(); } else if(data == &button_up_sensor) { sys_ctrl_reset(); } } else if(ev == serial_line_event_message) { leds_toggle(LEDS_SERIAL_IN); } counter++; /* put measaruement sht11 here*/ } PROCESS_END(); }