Skip to content

Commit

Permalink
fix(temperature)!:wrong return type & fix temperature calculate formula
Browse files Browse the repository at this point in the history
-change return type from uint8_t to float
-improve calculation formula
  • Loading branch information
abdullahbagyapan committed Apr 19, 2024
1 parent dc4e289 commit 5ca211a
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 8 deletions.
25 changes: 18 additions & 7 deletions temperature/temperature.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,33 +27,44 @@
@return The temperature, in celsius format
*/
static inline uint8_t _TEMPERATURE_Calculate_Celsius(uint16_t ui16ADC_voltage) {
static float TEMPERATURE_Calculate(uint16_t ui16ADC_voltage) {

// T = 27 - (ADC_voltage - 0.706)/0.001721
// The given above formula according to the RP2040 datasheet

return 27 - (ui16ADC_voltage - 0.706) / 0.001721;
const float fConversionFactor = 3.3f / (1 << 12);

float fADC = (float)(ui16ADC_voltage) * fConversionFactor;
float fTemperatureC = 27.0f - (fADC - 0.706f) / 0.001721f;

return fTemperatureC;

}


void TEMPERATURE_Init(void) {

// Initialize onboard temperature sensor
adc_gpio_init(TEMPERATURE_GPIO_PIN);
// Initialize gpio
gpio_init(TEMPERATURE_GPIO_PIN);

// Initialize hardware AD converter
adc_init();

// Enable onboard temperature sensor
adc_set_temp_sensor_enabled(true);

// Set onboard temperature sensor as ADC
adc_select_input(TEMPERATURE_ADC_PIN);

}

uint8_t TEMPERATURE_Read(void) {
float TEMPERATURE_Read(void) {

uint8_t ui8TemperatureCelsius;
float ui8TemperatureCelsius;

uint16_t ui16ADC_voltage = adc_read();

ui8TemperatureCelsius = _TEMPERATURE_Calculate_Celsius(ui16ADC_voltage);
ui8TemperatureCelsius = TEMPERATURE_Calculate(ui16ADC_voltage);

return ui8TemperatureCelsius;
}
2 changes: 1 addition & 1 deletion temperature/temperature.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ void TEMPERATURE_Init(void);
@return The data, read from sensor
*/
uint8_t TEMPERATURE_Read(void);
float TEMPERATURE_Read(void);

0 comments on commit 5ca211a

Please sign in to comment.