Manual
do
Maker
.
com
Opinião pessoal - mas acredito que a primeira coisa que a maioria pensa em fazer é brincar com os LEDs dessa placa. Nesse artigo veremos como controlar a matriz de LEDs do UNO R4, começando pelo bit individual. Assim o artigo fica curto e já se soma um conceito. Em artigos posteriores veremos outras interações.
Por padrão, há uma biblioteca de controle da matriz de LEDs do UNO R4, para fazer animações e controle individual dos bits. Com o controle individual dos pixels, podemos criar gráficos de barra (que parecer ser o melhor interpretável para esse tipo de display). E talvez seja a melhor aplicação, pois uma representação gráfica de 96 pontos, convenhamos, não tem lá grande beleza.
Também podemos usar para escrever textos, fazendo scrolling da matriz e ter mais uma vez, algo informativo de fato.
Existem diversas maneiras de fazê-lo, mas a maneira visualmente mais "agradável" é construir a matriz com todos os bits. Vamos começar por ela, assim firmamos os conceitos.
Como temos uma matriz de 8 linhas por 12 colunas, podemos fazer desse modo:
uint8_t frame[8][12] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
Para interagir com uma matriz bi-dimensional devemos apontar para a coluna e linha desejada, mas sempre nos lembrando que devemos começar em 0. Sendo assim, a oitava coluna corresponde a 7. Se quisermos acender o LED da oitava coluna, na segunda linha, estaremos acessando o frame[7][1]
.
Para usar como exemplo desse artigo, fiz um código simples que acende LED por LED até o final, depois apaga LED por LED até o final. A forma de fazer isso é encadeando 2 loops:
void walk(){
while (true){
for (uint8_t i=0;i<8;i++){
for (uint8_t j=0;j<12;j++){
frame[i][j] = frame[i][j] == 1 ? 0 : 1;
matrix.renderBitmap(frame,8,12);
delay(50);
}
}
}
}
E para que isso funcione, importamos meramente a biblioteca da matriz.
O código completo para esse primeiro artigo sobre como controlar a matriz de LEDs do Arduino R4 é esse:
#include "Arduino_LED_Matrix.h"
ArduinoLEDMatrix matrix;
uint8_t frame[8][12] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
void walk(){
while (true){
for (uint8_t i=0;i<8;i++){
for (uint8_t j=0;j<12;j++){
frame[i][j] = frame[i][j] == 1 ? 0 : 1;
matrix.renderBitmap(frame,8,12);
delay(50);
}
}
}
}
void setup() {
matrix.begin();
walk();
}
void loop() {
}
Como podem reparar, o código fica preso na função setup()
para sempre. Já que não há mais o que implementar, isso é o suficiente para a prova de conceito.
Simples ou não? Você pode desenhar diretamente na matriz, trocando 0 por 1 onde desejar que esteja aceso. Ou pode desenhar várias matrizes e usar a que desejar, sem precisar fazer o loop, bastando chamar o método da classe matrix com a matriz desejada:
matrix.renderBitmap(outraMatriz,8,12);
Veremos outras formas de interação com a matriz de LEDs do Arduino UNO R4. Essa é a que te dá controle absoluto da forma mais simples, mas existem classes para outras interações, como animação. Acompanhe os próximos artigos!
Se não leu o artigo de apresentação dessa placa, sugiro que veja o artigo Arduino UNO R4 WiFi, onde discorro sobre a instalação da placa na IDE 2.0 do Arduino. Em breve veremos artigos muito, muito interessantes sobre as possibilidades com essa placa, portanto, não deixe de acompanhar.
Talvez não tenha reparado, mas tanto para celular quanto para computador, na barra de URL do lado direito deve aparecer para você um ícone de instalação de "Manual do Maker". Esse é um recurso que os navegadores oferecem para sites de conteúdo estático, permitindo a leitura offline, para lugares de sinal precário ou nenhum sinal. E está muito bem configurado, como pode ser visto no PageSpeed Insights. Compare com outros sites, entrando com a URL na caixa de pesquisa - ou, se é um usuário mais avançado em web, pode usar o LightHouse, pressionando Ctrl+Shift+J no Chrome e indo à aba LightHouse.
Pode fazer uso do recurso sem medo!
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.