#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/adc.h"
#include "ssd1306.h"
//====================================================================
// Definicoes do Projeto
//====================================================================
#define oscilador 14 //GPIO14
#define botao_B1 22 //GPIO22
//===================================================================
// Variáveis Globais
//===================================================================
// Buffer de RAM de tela
uint8_t display_buffer[128 * SSD1306_HEIGHT / 8] = {0};
//===============================================================================================
int main() {
//===============================================================================================
// Define o buffer do display
uint32_t adc_value = 0;
// Inicializa a interface I2C e o display
SSD1306_init();
// Limpa o buffer
ssd1306_clear_buffer(display_buffer);
ssd1306_send_data(display_buffer, 128 * SSD1306_HEIGHT / 8);
sleep_ms(2000);
//===============================================================================================
// Escreve texto no Inicial no Buffer do Display
ssd1306_write_text(display_buffer, 32, 0, "FATEC");
ssd1306_write_text(display_buffer, 10, 8, "SANTO ANDRE");
ssd1306_write_text(display_buffer, 0, 24, "ADC0= ");
ssd1306_send_data(display_buffer, 128 * SSD1306_HEIGHT / 8);
ssd1306_write_text(display_buffer, 150, 30, " CARLOS EDUARDO ");
ssd1306_write_text(display_buffer, 160, 36, " MASTROCEZARI");
ssd1306_write_text(display_buffer, 170, 40, " 23 ANOS ");
//==================================================================================================
// Inicializa o ADC
adc_init();
// Configura os pinos GPIO 26, 27 e 28 para ADC
adc_gpio_init(26); // ADC0 no GPIO 26
//==================================================================================================================
// PROGRAMA PRINCIPAL
//==================================================================================================================
while (true) {
ssd1306_write_text(display_buffer, 48, 24, " "); //Limpa local do buffer
ssd1306_int_number(display_buffer, 48, 24, adc_value, 8); //Converte ASCII para display
// Atualiza o display com o conteúdo do buffer
ssd1306_send_data(display_buffer, 128 * SSD1306_HEIGHT / 8);
sleep_ms(1);
//Lê o novo valor na entrada analógica 0
adc_select_input(0); // Seleciona o canal 0, correspondente ao GPIO26
adc_value = adc_read(); // Lê o valor do ADC
sleep_ms(100);
}
}