#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/gpio.h"
#include "hardware/adc.h"
#include "pico_i2c_lcd.h" //biblioteca lcd
#define I2C_PORT i2c0 //pinagem lcd
#define I2C_SDA 20
#define I2C_SCL 21
#define ADC_NUM2 2 // ADC A2
#define ADC_PIN2 (26 + ADC_NUM2) //26 + 2 = GPIO 28
int main() {
stdio_init_all();
adc_init(); //inicializa ADC
adc_gpio_init(ADC_PIN2); //configura pino como entrada
i2c_init(I2C_PORT, 100 * 1000); //configuracao lcd
gpio_set_function(I2C_SDA, GPIO_FUNC_I2C);
gpio_set_function(I2C_SCL, GPIO_FUNC_I2C);
gpio_pull_up(I2C_SDA);
gpio_pull_up(I2C_SCL);
lcd_init(I2C_PORT, 0x27, 16, 2);
lcd_clear();
lcd_set_cursor(0, 0); //na primeira metade d cima
lcd_printf("Temperatura:");
uint adc_valor2;
while (true) {
adc_select_input(ADC_NUM2); //seleciona a entrada A2
adc_valor2 = adc_read(); //faz a leitura do sinal da entrada A2
float temp = (100*adc_valor2)/4095; //formula para conversao de sinal para tensao
printf("Temperatura: %.2f oC\n", temp); //print texto, numero com formato especifico, "espaco", v, pula linha
if(temp>70){
lcd_set_cursor(0, 1); //na segunda metade d baixo
lcd_printf("Perigo: %.1f oC", temp);
}
else if(temp<70 && temp>40){
lcd_set_cursor(0, 1); //na segunda metade d baixo
lcd_printf("Alerta: %.1f oC", temp);
}
else if(temp<40){
lcd_set_cursor(0, 1); //na segunda metade d baixo
lcd_printf("Normal: %.1f oC", temp);
}
sleep_ms(500);
}
}