#include "pico/Adafruit_NeoPixel.h"
#define PIN 2 // Pino conectado à entrada DIN dos LEDs
#define NUMPIXELS 25 // Número total de LEDs (5x5)
// Inicializa o objeto NeoPixel
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// Mapeamento das letras para a matriz 5x5 (1 = LED aceso, 0 = LED apagado)
const uint8_t LETTERS[26][5][5] = {
// A
{{0, 1, 1, 1, 0},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1}},
// N
{{1, 0, 0, 0, 1},
{1, 1, 0, 0, 1},
{1, 0, 1, 0, 1},
{1, 0, 0, 1, 1},
{1, 0, 0, 0, 1}},
// D
{{1, 1, 1, 1, 0},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 0}},
// R
{{1, 1, 1, 1, 0},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 0},
{1, 0, 1, 0, 0},
{1, 0, 0, 1, 0}},
// E
{{1, 1, 1, 1, 1},
{1, 0, 0, 0, 0},
{1, 1, 1, 1, 0},
{1, 0, 0, 0, 0},
{1, 1, 1, 1, 1}},
// S
{{0, 1, 1, 1, 1},
{1, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 1},
{1, 1, 1, 1, 0}},
// (Adicione outras letras aqui se necessário)
};
// Limpa a matriz de LEDs
void clearMatrix() {
pixels.clear();
pixels.show();
}
// Define um pixel em uma posição específica com cor RGB
void setPixel(int x, int y, uint8_t r, uint8_t g, uint8_t b) {
int index = y * 5 + x; // Calcula o índice na matriz 5x5
pixels.setPixelColor(index, pixels.Color(r, g, b));
}
// Exibe uma letra na matriz
void drawLetter(char letter, uint8_t r, uint8_t g, uint8_t b) {
clearMatrix(); // Limpa os LEDs antes de exibir a nova letra
int index = letter - 'A'; // Calcula o índice da letra no array
if (index < 0 || index >= 26) return; // Verifica se é uma letra válida
for (int y = 0; y < 5; y++) {
for (int x = 0; x < 5; x++) {
if (LETTERS[index][y][x] == 1) {
setPixel(x, y, r, g, b); // Define o LED ativo com a cor especificada
}
}
}
pixels.show(); // Atualiza os LEDs
delay(500); // Pausa para exibir a letra
}
// Anima o nome "Andressa" letra por letra
void animateName(const char *name, uint8_t r, uint8_t g, uint8_t b) {
for (int i = 0; name[i] != '\0'; i++) {
drawLetter(name[i], r, g, b); // Desenha cada letra
}
clearMatrix();
delay(1000); // Pausa entre repetições
}
void setup() {
pixels.begin(); // Inicializa a matriz de LEDs
clearMatrix();
}
void loop() {
animateName("ANDRESSA", 255, 0, 0); // Animação do nome "Andressa" em vermelho
}