#include <stdio.h>
#include "pico/stdlib.h"
#include "ELE_LTP.h"
// ======== DEFINIÇÕES DOS PINOS ========
#define segmento_A 10
#define segmento_B 11
#define segmento_C 13
#define segmento_D 14
#define segmento_E 15
#define segmento_F 9
#define segmento_G 8
#define btn1 16 // botão de incremento
#define btn2 17 // botão de decremento
// ======== TABELA DO DISPLAY 7 SEGMENTOS ========
uint8_t display[7] = {
segmento_A, segmento_B, segmento_C,
segmento_D, segmento_E, segmento_F, segmento_G
};
// Números de 0 a 9 (1 = segmento ligado)
bool display_valor[10][7] = {
{1,1,1,1,1,1,0}, // 0
{0,1,1,0,0,0,0}, // 1
{1,1,0,1,1,0,1}, // 2
{1,1,1,1,0,0,1}, // 3
{0,1,1,0,0,1,1}, // 4
{1,0,1,1,0,1,1}, // 5
{1,0,1,1,1,1,1}, // 6
{1,1,1,0,0,0,0}, // 7
{1,1,1,1,1,1,1}, // 8
{1,1,1,1,0,1,1} // 9
};
int main() {
stdio_init_all();
// Inicializa segmentos como saída
for (int i = 0; i < 7; i++) {
gpio_init(display[i]);
gpio_set_dir(display[i], GPIO_OUT);
}
// Inicializa botões como entrada com pull-up
gpio_init(btn1);
gpio_set_dir(btn1, GPIO_IN);
gpio_pull_up(btn1);
gpio_init(btn2);
gpio_set_dir(btn2, GPIO_IN);
gpio_pull_up(btn2);
int contador = 5; // valor inicial
bool last_btn1 = 1;
bool last_btn2 = 1;
while (true) {
bool estado_btn1 = gpio_get(btn1);
bool estado_btn2 = gpio_get(btn2);
// --- DETECTA CLIQUE NO BTN1 ---
if (last_btn1 == 1 && estado_btn1 == 0) {
contador++;
if (contador > 9) contador = 0;
sleep_ms(200); // debounce simples
}
// --- DETECTA CLIQUE NO BTN2 ---
if (last_btn2 == 1 && estado_btn2 == 0) {
contador--;
if (contador < 0) contador = 9;
sleep_ms(200); // debounce simples
}
// Atualiza display com o número atual
for (int i = 0; i < 7; i++) {
gpio_put(display[i], display_valor[contador][i]);
}
// Atualiza histórico de estado
last_btn1 = estado_btn1;
last_btn2 = estado_btn2;
sleep_ms(20); // pequeno delay de leitura
}
}