Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Construa e Programe Animações em Matriz RGB WS2812 8×8 e 16×16 com Arduino e Excel

Componentes e Materiais

Arduino UNO ×1
Matriz RGB LED WS2812 8×8 ×1
Jumpers Macho/Fêmea (Preto-GND, Vermelho-5V, Verde-Dados) ×3
Bateria 9V (genérica) ×1
Conector 9V para Jack Barril ×1
Header Macho 5 Posições — 1 Linha — Longo (0,1") (apenas 3 pinos necessários) ×1

Ferramentas e Máquinas Necessárias

Sobre Este Projeto

Quando comprei minha primeira matriz RGB WS2812 8×8, esperava endereçá-la como um sistema de coordenadas XY tradicional. Em vez disso, os 64 LEDs estão em cadeia (daisy-chained) em oito fileiras de oito. Descobri que o utilitário Excel do Kevin Darrah, originalmente desenhado para matriz 16×16, podia ser adaptado para controlar um array 8×8. Modificando tanto a planilha quanto o sketch Arduino acompanhante, criei uma ferramenta versátil que permite programar animações de LED sem bibliotecas externas.

A planilha Excel atualizada, LED_Utility.xlsm, agora suporta:

Abaixo, instruções passo a passo para montar o hardware, configurar o utilitário Excel e carregar o sketch Arduino. Cada projeto constrói sobre o anterior, introduzindo conceitos como loops, condicionais e funções modulares.

Montar o Hardware

Conecte a matriz 8×8 a um Arduino UNO usando header de 5 pinos:

  1. Conecte DIN ao pino 8 do Arduino.
  2. Conecte +5V ao pino 5V.
  3. Conecte GND ao pino GND.
Construa e Programe Animações em Matriz RGB WS2812 8×8 e 16×16 com Arduino e Excel

Nesta configuração, a coordenada (0,0) refere-se ao canto superior esquerdo da matriz.

Visão Geral do Utilitário Excel

Abra LED_Utility.xlsm — contém três abas:

A pasta de trabalho é definida como somente leitura por padrão para proteger seu trabalho. Use Arquivo → Salvar Como após gerar código para preservar seu design.

Construa e Programe Animações em Matriz RGB WS2812 8×8 e 16×16 com Arduino e Excel

Principais recursos na aba Eight:

Cada botão gera um bloco de código C++ que você copia para o sketch Arduino. O código é formatado para a função customizada mapLEDXY(), que converte coordenadas XY no índice de LED apropriado.

Sketch Arduino

O sketch principal (LED_Arduino.ino) contém os seguintes elementos:

// Definição do pino
#define WS2812_pin 8
// Total de LEDs
#define numberOfLEDs 64
// Buffer RGB (3 bytes por LED)
byte RGB[192];

// Declarações antecipadas
void RGB_update(int LED, byte RED, byte GREEN, byte BLUE);
void mapLEDXY(int x, int y, byte RED, byte GREEN, byte BLUE);
void clearLEDs();

A rotina mapLEDXY() mapeia um par de coordenadas para o array linear, considerando o padrão de fiação zig-zag comum em matrizes WS2812.

Após copiar seu código gerado na função loop(), carregue o sketch. A matriz responderá instantaneamente às instruções.

Projeto 1 – Quadrado Vermelho Estático

Crie um quadrado vermelho 3×3 nas coordenadas (2,2) a (4,4). No Excel, defina as células correspondentes para 255 no vermelho e 0 no verde/azul. Copie o código gerado na linha 40 do sketch:

mapLEDXY(2,2,255,0,0);mapLEDXY(2,3,255,0,0);mapLEDXY(2,4,255,0,0);
mapLEDXY(3,2,255,0,0);mapLEDXY(3,3,255,0,0);mapLEDXY(3,4,255,0,0);
mapLEDXY(4,2,255,0,0);mapLEDXY(4,3,255,0,0);mapLEDXY(4,4,255,0,0);

Carregue e veja o quadrado acender. Experimente limpando a grade, mudando cores ou adicionando borda.

Projeto 2 – Quadrados Dual-Color

Duplique o sketch como Colour_Sq.ino e modifique a planilha Excel para criar um segundo quadrado maior. Use o botão Show para gerar código e cole no sketch. Adicione um delay simples e clearLEDs() para alternar entre as duas formas.

Projeto 3 – Quadrado Crescente

No sketch Grow.ino, desenhe um quadrado interno menor e cerque-o com uma borda à sua escolha. Remova os valores do quadrado interno, gere o código externo e cole ambos os blocos no sketch. O resultado é um quadrado animado que expande e contrai.

Projeto 4 – Animação Espiral

Para padrões complexos, encapsule cada frame em uma função separada e chame-as do loop(). O exemplo Spiral.ino usa cinco funções auxiliares para construir uma espiral de 5 camadas. Esta abordagem modular mantém o loop principal conciso e facilita edições futuras.

Projeto 5 – Loop de Brilho Variável

Introduza um loop for para animar brilho:

for (int r=0; r<256; r++) {
  mapLEDXY(3,3,r,0,0);mapLEDXY(3,4,r,0,0);
  mapLEDXY(4,3,r,0,0);mapLEDXY(4,4,r,0,0);
  RGB_update(-1,0,0,0);
  delay(50);
}
for (int r=255; r>=0; r--) {
  mapLEDXY(3,3,r,0,0);mapLEDXY(3,4,r,0,0);
  mapLEDXY(4,3,r,0,0);mapLEDXY(4,4,r,0,0);
  RGB_update(-1,0,0,0);
  delay(50);
}

O quadrado faz fade in e fade out automaticamente.

Projeto 6 – Borda com Fade

Combine loops for com variável g compartilhada para fazer fade em uma borda circundante:

for (int g=0; g<256; g++) {
  b=g;
  mapLEDXY(...); // células da borda
  RGB_update(-1,0,0,0);
  delay(50);
}
for (int g=255; g>=0; g--) {
  b=g;
  mapLEDXY(...); // células da borda
  RGB_update(-1,0,0,0);
  delay(50);
}

Aqui o canal azul acompanha o verde para criar um fade suave.

Projeto 7 – Transição de Cor

Use um if para mudar células da borda de verde para amarelo ao atingir um limiar:

for (int r=0; r<256; r++) {
  g=r;
  if (g>64) { g=65; l=r; }
  mapLEDXY(...); // células
  RGB_update(-1,0,0,0);
  delay(50);
}

Experimente diferentes limiares para efeitos variados.

Projeto 8 – Seta em Movimento

Gere uma seta em movimento parametrizando a coordenada X:

for (int x=0; x<8; x++) {
  mapLEDXY((x+0)%8,3,0,255,255);
  mapLEDXY((x+1)%8,1,255,128,128);
  mapLEDXY((x+1)%8,3,0,255,255);
  mapLEDXY((x+1)%8,5,255,128,128);
  mapLEDXY((x+2)%8,2,255,128,128);
  mapLEDXY((x+2)%8,3,0,255,255);
  mapLEDXY((x+2)%8,4,255,128,128);
  mapLEDXY((x+3)%8,3,255,128,128);
  RGB_update(-1,0,0,0);
  delay(100);
}

Use o recurso Wrap Map na planilha para lidar com overflow de coordenadas.

Uso de Matriz 16×16

Todos os conceitos acima transferem diretamente para matriz 16×16. Substitua LED_Arduino.ino por LED_Arduino16.ino e mude para a aba Sixteen na pasta de trabalho. O único ajuste necessário é a definição numberOfLEDs e o cálculo RGBlocation em mapLEDXY().

Extensões e Dicas

Embora este guia foque em arrays 8×8 e 16×16, a mesma metodologia aplica-se a outros tamanhos (ex: 8×32). Para cada novo tamanho, atualize a constante numberOfLEDs e modifique o cálculo de índice para corresponder ao padrão de fiação da matriz. Mantenha a pasta de trabalho em modo somente leitura para evitar perda acidental de código customizado. Considere usar uma placa menor, como Arduino Nano, se consumo de energia for preocupação.

Processo de manufatura

  1. Painel de Controle para Flight Simulator 2020 com Arduino Nano – Display LCD e CDI
  2. Painel de Chaves e LEDs para Microsoft Flight Simulator 2020 com Arduino
  3. Construa e Programe Animações em Matriz RGB WS2812 8×8 e 16×16 com Arduino e Excel
  4. Protegendo a IoT Global: Três Passos Essenciais
  5. Top 3 Tendências de Manufatura Digital Moldando 2020
  6. 3 Estratégias Comprovadas para PMEs Expandirem Internacionalmente com Sucesso
  7. Três Lições Essenciais que Varejistas Devem Aprender em Meio a Disrupções de Longo Prazo
  8. Construa um Robô 'Vá Embora' – Kit Inicial Arduino Fácil para Crianças
  9. Top 3 Dicas Essenciais para Manutenção e Segurança de Equipamentos Industriais
  10. Guia Essencial: 3 Estratégias Comprovadas para Comprar Equipamentos Industriais Pesados