#include "pico/stdlib.h" // Biblioteca padrão para o Raspberry Pi Pico, fornece funções para GPIO, temporização e inicialização do sistema
// Definição dos pinos GPIO conectados aos segmentos do display de 7 segmentos
const uint8_t segment_pins[] = {0, 1, 2, 3, 4, 5, 6};
// Mapeamento dos números de 0 a 9 para os segmentos do display
// Cada subarray indica quais segmentos (A-G) devem ser ligados (1) ou desligados (0) para formar o dígito correspondente
const uint8_t digits[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, 0, 0, 1, 1} // 9
};
// Função que exibe um dígito no display de 7 segmentos
// Parâmetro: digit (número a ser exibido, de 0 a 9)
void display_digit(uint8_t digit) {
for (int i = 0; i < 7; i++) { // Itera pelos 7 segmentos do display
// Configura cada pino do segmento para ligado (1) ou desligado (0)
gpio_put(segment_pins[i], digits[digit][i]);
}
}
int main() {
stdio_init_all(); // Inicializa o sistema padrão de entrada/saída (não usado aqui diretamente)
// Configuração inicial dos pinos GPIO conectados aos segmentos do display
for (int i = 0; i < 7; i++) {
gpio_init(segment_pins[i]); // Inicializa o pino GPIO
gpio_set_dir(segment_pins[i], GPIO_OUT); // Configura o pino como saída
}
uint8_t contador = 0; // Inicializa o contador com o valor 0
while (true) { // Laço infinito para exibir números no display
display_digit(contador); // Exibe o dígito atual no display
sleep_ms(1000); // Aguarda 1 segundo antes de mudar o número
contador++; // Incrementa o contador
if (contador > 9) { // Se o contador ultrapassar 9, reinicia para 0
contador = 0;
}
}
return 0; // (Nunca será alcançado devido ao laço infinito)
}