//ALESSANDRA KIMIE HIRO.
//EMBARCATEC IFMA - GRUPO 02
//TAREFA 2
//6. Refaça o programa pratico 01 presente no Ebook do Capítulo de ADC,
//mude a unidade de medida da temperatura de celsius para fahrenheit.
#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).
#include <stdlib.h> // Para usar a função rand()
int main() {
// Inicializa a comunicação serial para permitir o uso de printf
stdio_init_all();
// Inicializa o módulo ADC (Conversor Analógico-Digital) do Pico
adc_init();
// Configura o pino GPIO 26 para uso como entrada ADC (Canal 0)
adc_gpio_init(26);
// Seleciona o canal 0 do ADC para leitura
adc_select_input(0);
// Exibe a mensagem pedindo ao usuário para digitar a temperatura em Celsius
printf("Digite a temperatura em Celsius para converter para Fahrenheit:\n");
// Loop infinito para a interação com o usuário
while (true) {
char input[10]; // Buffer para armazenar a entrada do usuário
float celsius, fahrenheit;
// Aguarda o usuário digitar a temperatura
if (fgets(input, sizeof(input), stdin) != NULL) {
// Converte a entrada para um número float
sscanf(input, "%f", &celsius);
// Converte Celsius para Fahrenheit
fahrenheit = (celsius * 9.0 / 5.0) + 32.0;
// Exibe a temperatura convertida em Fahrenheit
printf("Temperatura: %.2f °F\n", fahrenheit);
}
// Simula a leitura do valor do ADC
// Aqui, geramos um valor aleatório entre 0 e 4095 para simular uma leitura de temperatura
uint16_t adc_value = rand() % 4096; // Simula um valor aleatório do ADC
// Converte o valor simulado do ADC para temperatura em Celsius
// O valor do ADC é mapeado para a faixa de 20°C a 30°C (apenas como exemplo)
float temperature_celsius = 20.0 + (adc_value / 4095.0) * 10.0;
// Converte a temperatura de Celsius para Fahrenheit
float temperature_fahrenheit = (temperature_celsius * 9.0 / 5.0) + 32.0;
// Imprime o valor da temperatura em Fahrenheit na comunicação serial
printf("Temperatura do ADC simulada: %.2f °F\n", temperature_fahrenheit);
// Atraso de 500 milissegundos para evitar a sobrecarga na comunicação serial
sleep_ms(500);
}
return 0;
}