/*******************************************************************************
FileName: main.c
Dependencies: Veja a secao de includes
Processor: Raspberry Pico
Compiler: SDK 2.1.1
Company: FATEC Santo Andre
Author: Prof. Edson Kitani e Prof. Weslley M. Torres
Date: 19/05/2025
Software License Agreement: Somente para fins didativos
*******************************************************************************
File Description: Leitura do sinal analogico( potenciometro)
na placa CPU FATEC G3 utilizando o botão B1
*
Change History:
1.0 19/05/205 Versao inicial
*******************************************************************************/
#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/bootrom.h"
#include "ssd1306.h"
#include "hardware/adc.h"
#include "hardware/pwm.h"
//====================================================================
// Área de Prototipos ( Declaração das funções )
// <type> function();
//====================================================================
// Definicoes do Projeto
//====================================================================
#define botao_B1 22 // GPIO22 //Botão que fica na CPU
#define ADC0_NUM 0 // ADC A0
#define ADC0_PIN ( 26 + ADC0_NUM ) // GPIO ( 26 + 0 ) = 26
#define ADC1_NUM 1 // ADC A1
#define ADC1_PIN ( 26 + ADC0_NUM ) // GPIO ( 26 + 0 ) = 26
//===================================================================
// Variáveis Globais
//===================================================================
// Buffer de RAM de tela
uint8_t display_buffer[128 * SSD1306_HEIGHT / 8] = {0};
// Valor de leitura do ADC
uint16_t adc0_valor,adc1_valor;
// Valor de leitura do ADC em string
char ADC_value_buffer[50];
//===============================================================================================
int main() {
//===================================================================
// Configuração de harware e configuração inicial
//===================================================================
// Define variáveis do programa principal
// Configura os I/Os
gpio_init(botao_B1);
gpio_set_dir(botao_B1, GPIO_IN);
// Configurado o GPIO 22 do botão B1 para função inicial de Boot
// Usado quando temos a placa de condicionador
bool boot = gpio_get(botao_B1);
if(boot == 0) {reset_usb_boot(0, 0);}
// Inicializa a UART com baud rate de 115200
// Usado para fazer monitoração serial via VS Code ou outro software
stdio_init_all();
// 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(10);
// Configuração do ADC
adc_init(); // inicializa o ADC
adc_gpio_init( ADC0_PIN ); // configura os pinos de entrada analogica
adc_gpio_init( ADC1_PIN ); // configura os pinos de entrada analogica
// Escreve texto no buffer
ssd1306_write_text(display_buffer, 0, 0, "ADC 0: ");
ssd1306_write_text(display_buffer, 0, 9, "ADC 1: ");
// Atualiza o display com o conteúdo do buffer
ssd1306_send_data(display_buffer, 128 * SSD1306_HEIGHT / 8);
while (true)
{
adc_select_input(ADC0_NUM); // Seleciona o entrada A0
adc0_valor = adc_read(); // Leitura do sinal da entrada A0
adc_select_input(ADC1_NUM); // Seleciona o entrada A1
adc1_valor = adc_read(); // Leitura do sinal da entrada A1
sprintf(ADC_value_buffer, "ADC 0: %d ", adc0_valor);
// Escreve texto no buffer
ssd1306_write_text(display_buffer, 0, 0, ADC_value_buffer);
sprintf(ADC_value_buffer, "ADC 1: %d ", adc1_valor);
// Escreve texto no buffer
ssd1306_write_text(display_buffer, 0, 9, ADC_value_buffer);
// Atualiza o display com o conteúdo do buffer
ssd1306_send_data(display_buffer, 128 * SSD1306_HEIGHT / 8);
sleep_ms(100);
}
}B1
RESET
Esportivo
Economico
Entrada
Saída
Pedal1_inNormal
Pedal2_inKinckDown
Pot
VPedal1_outNormal
VPedal2_outKinckDown
VPedal1_inNormal