//----------------------------------------------------------------------------------
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!)
    //-----------------------------------------------------------------------------------                       
  }
} 
Example #2
0
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;
}
Example #4
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;
	 }
}
Example #6
0
/*---------------------------------------------------------------------------*/
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();
}