#include <stdio.h> // Biblioteca padrão para entrada e saída, utilizada para printf.
#include "pico/stdlib.h" // Biblioteca padrão para funções básicas do Pico, como GPIO e temporização.
#include "hardware/adc.h" // Biblioteca para controle do ADC (Conversor Analógico-Digital).
// Definições
#define ADC_TEMPERATURE_CHANNEL 4 // Canal ADC que corresponde ao sensor de temperatura interno
// Função para converter o valor lido do ADC para temperatura em graus Fahrenheit
float adc_to_temperature_fahrenheit(uint16_t adc_value) {
const float conversion_factor = 3.3f / (1 << 12);
float voltage = adc_value * conversion_factor;
// Primeiro, calculamos a temperatura em Celsius
float temperature_celsius = 27.0f - (voltage - 0.706f) / 0.001721f;
// Então, convertemos para Fahrenheit
float temperature_fahrenheit = (temperature_celsius * 9.0f / 5.0f) + 32.0f;
return temperature_fahrenheit;
}
int main() {
stdio_init_all();
adc_init();
adc_set_temp_sensor_enabled(true); // Habilita o sensor de temperatura interno
adc_select_input(ADC_TEMPERATURE_CHANNEL); // Seleciona o canal do sensor de temperatura
while (true) {
uint16_t adc_value = adc_read();
// Converte o valor do ADC para temperatura em graus Fahrenheit
float temperature = adc_to_temperature_fahrenheit(adc_value);
// Imprime a temperatura em Fahrenheit
printf("Temperatura: %.2f °F\n", temperature);
sleep_ms(1000);
}
return 0;
}