Cubo LED 3D (4x4x4)

O objetivo básico é criar um cubo LED 3D capaz de mostrar animações pré-definidas.
Um display LED 3D típico é uma coleção de LEDs, de alguma forma conectados e dispostos em um padrão 3D e controlados para que os LEDs possam ser ligados e desligados de maneira controlada, criando assim padrões de luz interessantes e agradáveis. Provavelmente o tipo mais comum de display LED 3D é o cubo de LED. A matriz 3D é construída soldando as pernas dos LEDs diretamente entre si ou construindo uma matriz de fios que formam uma estrutura à qual os LEDs estão conectados. Existem também muitas maneiras diferentes de controlar um display LED 3D que variam em complexidade, a mais simples é provavelmente um único microcontrolador, com métodos mais complicados usando ICs de driver de LED especiais ou mesmo controle direto do PC.

Protótipo de cubo LED controlado por AVR ATMega16

Figura 1: Protótipo de cubo LED controlado por AVR ATMega16

Trabalhando:

O cubo de LED possui 64 LEDs (4x4x4). Cada LED é dedicado a uma porta IO em um microcontrolador. O cubo de LED depende de um fenômeno óptico chamado Persistência de Visão. Se você piscar um LED muito rápido, ele permanecerá na sua retina por algum tempo, mesmo depois que o LED for desligado. Ao piscar cada camada do cubo muito rapidamente, uma após a outra, dá a sensação de 3D. Com esta configuração precisaremos de apenas 16 (ânodo) + 4 (camadas) portas IO para controlar cada LED. O LED tem duas pernas, uma positiva e outra negativa. A extremidade positiva está conectada aos pilares do cubo de LED que atua como ânodo enquanto a negativa está conectada à camada. Assim, para ligar um determinado LED temos que fornecer corrente ao pilar correspondente e aterrar a camada.

Diagrama de bloco:

Diagrama de blocos do cubo LED controlado por AVR ATMega16

Figura 2: Diagrama de blocos do cubo LED controlado por AVR ATMega16

Fonte de energia: Usamos fonte de alimentação regulada de 5V usando regulador de tensão 7805 e bateria de 9V, para nosso projeto.

Microcontrolador:

É o coração do projeto que permite controlar o LED Cube gerando animações predefinidas. As portas de entrada/saída do microcontrolador são utilizadas para esta finalidade. Usamos o microcontrolador Atmega 16 em nosso projeto.

Diagrama de pinos do AVR ATMega16

Figura 3: Diagrama de pinos do AVR ATMega16

Protótipo de circuito de controle de cubo LED baseado em AVR ATMega16

Figura 4: Protótipo de circuito de controle de cubo LED baseado em AVR ATMega16

Cubo LED:

A conexão do cubo de LED é feita da seguinte maneira. Todos os ânodos de uma camada estão conectados como um pilar do cubo e os cátodos estão em curto-circuito ao redor da camada. Assim, temos 4 pinos de cátodo em 4 camadas de cubo e 16 pinos de cátodo como pilares do cubo.

Imagem de representação do cubo de LED

Figura 5: Imagem de representação do cubo de LED

Protótipo de LED Cube controlado por AVR ATMega16

Figura 6: Protótipo de LED Cube controlado por AVR ATMega16

O circuito :

{Verifique a guia do diagrama de circuito para ver o circuito completo do 3D LED Cube (4x4x4)}

Programação:

A programação é feita no Eclipse IDE em Embedded C. O código está anexado a este documento. Eu criei 4 padrões de animações em cada 'for loop'.

Código fonte do projeto

###


#incluir

#incluir

vazio principal

{

DDRA=0xff;

DDRB=0xff;

DDRD=0xff;

interno eu,j,k,l,m;

enquanto(1)

{

para(eu=0;eu<6;eu++)

{

PORTD=~1;

PORTA=0b00010001;

PORTB=0b00010001;

_atraso_ms(200);

PORTD=~2;

PORTA=0b00010001;

PORTB=0b00010001;

_atraso_ms(200);

PORTD=~4;

PORTA=0b00010001;

PORTB=0b00010001;

_atraso_ms(200);

PORTD=~8;

PORTA=0b00010001;

PORTB=0b00010001;

_atraso_ms(200);

PORTD=~4;

PORTA=0b00100010;

PORTB=0b00100010;

_atraso_ms(200);

PORTD=~2;

PORTA=0b01000100;

PORTB=0b01000100;

_atraso_ms(200);

PORTD=~1;

PORTA=0b10001000;

PORTB=0b10001000;

_atraso_ms(200);

PORTD=~2;

PORTA=0b10001000;

PORTB=0b10001000;

_atraso_ms(200);

PORTD=~4;

PORTA=0b10001000;

PORTB=0b10001000;

_atraso_ms(200);

PORTD=~8;

PORTA=0b10001000;

PORTB=0b10001000;

_atraso_ms(200);

PORTD=~4;

PORTA=0b01000100;

PORTB=0b01000100;

_atraso_ms(200);

PORTD=~2;

PORTA=0b00100010;

PORTB=0b00100010;

_atraso_ms(200);

}

para(j=0;j<6;j++)

{

PORTD=~8;

PORTA=0b10011111;

PORTB=0b11111001;

_atraso_ms(200);

PORTD=~4;

PORTA=0b10011111;

PORTB=0b11111001;

_atraso_ms(200);

PORTD=~2;

PORTA=0b10011111;

PORTB=0b11111001;

_atraso_ms(200);

PORTD=~1;

PORTA=0b10011111;

PORTB=0b11111001;

_atraso_ms(200);

}

para(k=0;k<6;k++)

{

PORTD=~1;

PORTA=~0b10011111;

PORTB=~0b11111001;

_atraso_ms(200);

PORTD=~2;

PORTA=~0b10011111;

PORTB=~0b11111001;

_atraso_ms(200);

PORTD=~4;

PORTA=~0b10011111;

PORTB=~0b11111001;

_atraso_ms(200);

PORTD=~8;

PORTA=~0b10011111;

PORTB=~0b11111001;

_atraso_ms(200);

PORTD=~8;

PORTA=0b10011111;

PORTB=0b11111001;

_atraso_ms(200);

PORTD=~4;

PORTA=0b10011111;

PORTB=0b11111001;

_atraso_ms(200);

PORTD=~2;

PORTA=0b10011111;

PORTB=0b11111001;

_atraso_ms(200);

PORTD=~1;

PORTA=0b10011111;

PORTB=0b11111001;

_atraso_ms(200);

}

para(eu=0;eu<6;eu++)

{

PORTD=~1;

PORTA=1;_atraso_ms(100);

PORTD=~2;

PORTA=0b00100000;_atraso_ms(100);PORTA=0;

PORTD=~4;

PORTB=0b00000100;_atraso_ms(100);

PORTD=~8;

PORTB=0b10000000;_atraso_ms(100);

PORTD=~4;

PORTB=0b00001000;_atraso_ms(100);PORTB=0;

PORTD=~2;

PORTA=0b10000000;_atraso_ms(100);

PORTD=~1;

PORTA=0b00001000;_atraso_ms(100);

PORTD=~2;

PORTA=0b01000000;_atraso_ms(100);PORTA=0;

PORTD=~4;

PORTB=0b00000010;_atraso_ms(100);

PORTD=~8;

PORTB=0b00010000;_atraso_ms(100);

PORTD=~4;

PORTB=0b00000001;_atraso_ms(100);PORTB=0;

PORTD=~2;

PORTA=0b00010000;_atraso_ms(100);

}

para(m=0;m<10000;m++)

{

PORTD=~1;

PORTA=0b10011111;

PORTB=0b11111001;

_atrasar_nos(100);

PORTD=~2;

PORTA=0b00001001;

PORTB=0b10010000;

_atrasar_nos(100);

PORTD=~4;

PORTA=0b00001001;

PORTB=0b10010000;

_atrasar_nos(100);

PORTD=~8;

PORTA=0b10011111;

PORTB=0b11111001;

_atrasar_nos(100);

}

}

}

###

Diagramas de circuito

Diagrama de circuito-AVR-ATMega16-LED-Cube

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.