#include <stdio.h>
#include "pico/stdlib.h"
// Definindo os pinos para LEDs RGB
#define LED1 5
#define LED2 4
#define LED3 3
#define LED4 2
#define LED5 1
#define LED6 10
#define LED7 9
#define LED8 8
#define LED9 7
#define LED10 6
#define LED11 12
#define LED12 11
#define LED13 15
#define LED14 14
#define LED15 13
#define LED16 20
#define LED17 19
#define LED18 18
#define LED19 17
#define LED20 16
#define LED21 27
#define LED22 26
#define LED23 28
#define LED24 22
#define LED25 21
// LEDs mapeados (5x5, linha por linha, da esquerda para a direita)
uint all_leds[] = {LED1, LED2, LED3, LED4, LED5, LED6, LED7,
LED8, LED9, LED10, LED11, LED12, LED13, LED14,
LED15, LED16, LED17, LED18, LED19, LED20, LED21,
LED22, LED23, LED24, LED25};
// Arrays para representar cada número (0 a 9)
uint leds_for_numbers[10][25] = {
// Número 0
{LED5, LED4, LED3, LED2, LED1, LED6, LED11, LED16, LED21, LED22, LED23,
LED24, LED25, LED20, LED15, LED10},
// Número 1
{LED2, LED3, LED8, LED13, LED18, LED23},
// Número 2
{LED1, LED2, LED3, LED4, LED5, LED10, LED15, LED14, LED13, LED12, LED11,
LED16, LED21, LED22, LED23, LED24, LED25},
// Número 3
{LED1, LED2, LED3, LED4, LED5, LED10, LED15, LED14, LED13, LED12, LED11,
LED20, LED25, LED24, LED23, LED23, LED22, LED21},
// Número 4
{LED1, LED6, LED11, LED12, LED13, LED14, LED15, LED10, LED5, LED20, LED25},
// Número 5
{LED5, LED4, LED3, LED2, LED1, LED6, LED11, LED12, LED13, LED14, LED15,
LED20, LED25, LED24, LED23, LED22, LED21},
// Número 6
{LED5, LED4, LED3, LED2, LED1, LED6, LED11, LED16, LED21, LED22, LED23,
LED24, LED25, LED20, LED15, LED14, LED13, LED12},
// Número 7
{LED1, LED2, LED3, LED4, LED5, LED10, LED15, LED20, LED25},
// Número 8
{LED5, LED4, LED3, LED2, LED1, LED6, LED11, LED12, LED13, LED14, LED15,
LED20, LED25, LED24, LED23, LED22, LED21, LED16, LED10},
// Número 9
{LED5, LED4, LED3, LED2, LED1, LED6, LED11, LED12, LED13, LED14, LED15,
LED10, LED20, LED25, LED24, LED23, LED22, LED21}};
bool ON = true;
bool OFF = false;
void init_leds() {
for (int i = 0; i < 25; i++) {
gpio_init(all_leds[i]);
gpio_set_dir(all_leds[i], GPIO_OUT);
}
}
void turn_off_all_leds() {
for (int i = 0; i < 25; i++) {
gpio_put(all_leds[i], OFF);
}
}
void make_number(int number) {
turn_off_all_leds();
for (int i = 0; i < 25; i++) {
if (leds_for_numbers[number][i]) {
gpio_put(leds_for_numbers[number][i], ON);
sleep_ms(100);
}
}
}
void make_mini_zero() {
turn_off_all_leds();
gpio_put(LED7, ON);
gpio_put(LED8, ON);
gpio_put(LED9, ON);
gpio_put(LED12, ON);
gpio_put(LED14, ON);
gpio_put(LED17, ON);
gpio_put(LED18, ON);
gpio_put(LED19, ON);
}
void make_point() {
turn_off_all_leds();
gpio_put(LED13, ON);
}
void make_x() {
turn_off_all_leds();
gpio_put(LED1, ON);
gpio_put(LED5, ON);
gpio_put(LED7, ON);
gpio_put(LED9, ON);
gpio_put(LED13, ON);
gpio_put(LED17, ON);
gpio_put(LED19, ON);
gpio_put(LED21, ON);
gpio_put(LED25, ON);
}
int main(void) {
init_leds();
for (int i = 9; i >= 0; i--) {
make_number(i);
sleep_ms(700);
}
make_mini_zero();
sleep_ms(500);
make_point();
sleep_ms(500);
make_x();
return 0;
}