sexta-feira, 7 de agosto de 2015

Construindo e controlando uma matriz de LEDs

Uma matriz de LED são LEDs dispostos em forma de matriz e controlados de forma análoga a uma matriz.

Pode parecer uma explicação um pouco vaga e simplista e é. O importante é conhecer e entender o conceito de matrizes que traz algumas vantagens e possibilidades de construir coisas interessantes.

Viajando um pouco, já pensou como são construídos aqueles outdoors de LEDs que funcionam como se fossem TVs gigantes (jumbo)? Então, tirando toda a eletrônica e tecnologia na formação e recepção de imagens aquilo é uma grande matriz de LED. Logicamente construída com LED RGB ou com três LEDs para cada pixel.

A proposta aqui é montar uma matriz simples, usando apenas uma cor e tipo de LED. Claro, tudo controlado por um Arduino.

Você precisará de LED, tanto quantos forem necessários para a matriz que desejar construir. Por exemplo, para uma matriz 2x2, você terá que usar 4 LEDs, para uma matriz 3x3 serão necessários 9 LEDs, para uma 4x4 serão 16.
 
Mas em contraste com a quantidade de LEDs necessários é a quantidade de pinos necessários para exercer controle sobre eles, veja: para uma matriz 2x2 são necessários 4 pinos (1 para cada LED), em uma matriz 3x3 são necessários 6 pinos apenas (ao todo são 9 LEDs), já para uma matriz 4x4 com 16 LEDs são necessários 8 pinos (metade!). E assim por diante. A conclusão é que quanto maior a matriz mais vantajoso será a "economia" de pinos do Arduino.

Você precisará de resistores de 330 ohms, um para cada linha (ou coluna) da sua matriz, por exemplo, para uma matriz 2x2, você precisará de 2 resistores, para matrizes 3x3 você precisará de 3, e assim por diante.

Fora isso ferro de solda, estanho, placa de contatos (prot-o-board) e fios para as ligações.

Vamos começar com uma matriz de 2x2, ou seja, 4 LEDs.

Primeiro identifique os terminais do LED:




O terminal mais longo é o positivo (+) e o mais curto o negativo (-). Guarde bem isso, será importante na hora da soldagem.

Para dispor os LEDs em forma de matriz teremos que manipular os terminais do LED e depois soldá-los, positivo com os positivos e negativo com os negativos. Marque os terminais dos seus LEDs para não confundir.






Solde os terminais de mesma polaridade, primeiro em um par de LEDs:




Depois no outro par:




Agora una os pares através do outro terminal:




Teremos assim nossos LEDs dispostos em formato de matriz:




Agora precisamos soldar os resistores aos terminais dos LEDs, normalmente os positivos:




Verifique todas as soldas e certifique-se de que os terminais não estão em curto, ou seja, os terminais positivos e negativos estão encostando um no outro.

Ligue a matriz de LED na placa de contatos (prot-o-board):




Agora ligue os terminais negativos do LED os pinos digitais 02 e 03 do Arduino e os terminais positivos aos pinos 04 e 05. Essa ligação que nos dará a noção de linhas e colunas da matriz. Veja e imagem abaixo, os pinos 02 e 03 são as colunas e os pinos 04 e 05 as linhas da minha matriz:




Com o código abaixo teremos todos os LEDs acessos:

void setup() {
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
}
 
void loop() {
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);
}

Note que o conjunto dos pinos 2/4, 2/5 controlam uma coluna da matriz e o conjunto dos pinos 3/4 e 3/5 controlam a outra coluna. Dessa forma podemos combinar esses conjuntos e acender qualquer um dos 4 LEDs da matriz.

O código abaixo acende um LED por vez e foi escrito para mostrar isso de forma bem simples:

void setup() {
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
}
 
void loop() {
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
  delay(1000);
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
  delay(1000);
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  delay(1000);
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  delay(1000);
}

Funcionando:


Seguindo o mesmo princípio fica fácil aumentar a matriz para, por exemplo, 3x3:




Ligada a placa de contatos (prot-o-board):




Conectada ao Arduino:




O código:


void setup() {
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
}
 
void loop() {
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(7,HIGH);
  delay(1000);
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,HIGH);
  digitalWrite(7,LOW);
  delay(1000);
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  delay(1000);
}
Funcionando:


 


← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário