static int do_i2c_si7020(int argc, const char* const* argv) { uint16_t temp, hum; uint8_t datum[2]; if (!IS_ALREADY_INITED) SI7020_Init(); if(argc == 1 || strcmp(argv[1], "gethumidity") == 0){ if((SI7020_Read_Humidity((uint16_t *)datum))) { hum = ((((datum[1]<<8)|datum[0])*125.0)/65536)-6.0; console_printf( argc == 1 ? "%d\n" : "Humidity: %d\n", hum); }else{ console_printf( "Failed to read value\n" ); } } if(argc == 1 || strcmp(argv[1], "gettemp") == 0){ if((SI7020_Read_Temperature((uint16_t *)datum))) { temp = ((((datum[1]<<8)|datum[0])*175.72)/65536)-46.85; console_printf( argc == 1 ? "%d\n" : "Temperature: %d\n", temp); }else{ console_printf( "Failed to read value\n" ); } } return 0; }
uint16_t SI7020_GetTemperature() { uint16_t temp; uint8_t datum[2]; if (!IS_ALREADY_INITED) SI7020_Init(); if((SI7020_Read_Temperature((uint16_t *)datum))) temp = ((((datum[1]<<8)|datum[0])*175.72)/65536)-46.85; else temp = 0xffff; return temp; }