#include "pico/stdlib.h"
#include "hardware/adc.h"
#include <math.h>
// Defina o pino onde o termistor está conectado
#define NTC_PIN 26
// Defina a resistência do termistor em 25ºC e o resistor de pull-up (em ohms)
#define R_NTC_25C 10000 // Resistência do termistor a 25ºC
#define R_PULLUP 10000 // Resistência do resistor de pull-up no divisor de tensão
#define BETA 3950 // Coeficiente Beta do termistor
#define R_SERIE 10000.0 // Resistência do resistor em série (ohms)
#define T0 298.15 // Temperatura de referência em Kelvin (25°C = 298.15K)
#define R0 10000.0 // Resistência do termistor a 25°C
// Função para configurar ADC
void init_adc() {
adc_init();
adc_gpio_init(NTC_PIN);
adc_select_input(0); // A entrada 0 é o GPIO 26
}
float read_temperature() {
uint16_t raw_value = adc_read();
float voltage = raw_value * 3.3 / 4095.0;
if (voltage == 0 || voltage == 3.3) return -273.15; // Evita erros
float resistance = R_SERIE * (voltage / (3.3 - voltage));
float temperature = 1.0 / ((1.0 / T0) + (1.0 / BETA) * log(resistance / R0));
return temperature - 273.15; // Converte para Celsius
}
int main() {
// Inicializa o ADC
stdio_init_all();
init_adc();
while (true) {
// Calcula a temperatura
float temperature = read_temperature();
// Exibe a temperatura
printf("Temperatura: %.2f°C\n", temperature);
sleep_ms(1000); // Atraso de 1 segundo
}
return 0;
}