#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);
lcd_printf("Tensao media:"); //na primeira metade d cima
uint adc_valor2;
while (true) {
float soma = 0.0f;
for (int i = 0; i < 4; i++) {
adc_valor2 = adc_read();
soma += (3.3f * adc_valor2) / 4095.0f;
sleep_ms(10);
float tensao_media = soma / 4.0f;
lcd_set_cursor(0, 1);
lcd_printf("V = %.3f v", tensao_media); //na segunda metade d baixo
}
adc_select_input(ADC_NUM2); //seleciona a entrada A2
adc_valor2 = adc_read(); //faz a leitura do sinal da entrada A2
float tensao_v = (3.3*adc_valor2)/4095; //formula para conversao de sinal para tensao
printf("Tensão: %.3f v\n", tensao_v); //print texto, numero com formato especifico, "espaco", v, pula linha
sleep_ms(500);
}
}