O ATmega328 deste projeto pode ser programado através da IDE do Arduino, bastando conectar um adaptador serial USB TTL (o ATmega precisa ter o bootloader do Arduino).
Lembrando, a ligação do cubo de LEDs ao ATmega é composta de duas partes:
- "Plano": um dos terminais dos LEDs de cada um dos quatro planos (ou níveis) estão interligados entre si e a um pino do ATmega
- "LED": o outro terminal dos LEDs é interligado na vertical e a um pino do ATmega
Para isto precisamos acionar um plano de cada vez. O pino ligado a este plano será configurado como saída, para acender vermelho colocamos o pino em HIGH e para acender verde colocamos o pino em LOW Os pinos ligados aos demais planos serão configurados como entrada, para ficarem em alta impedância.
Em seguida é preciso colocar a tensão correta no outro terminal do LED. Quando estamos acendendo um LED vermelho, o pino correspondente a ele precisa estar em nível HIGH e os demais em nível LOW. Para acender na cor verde é preciso inverter isto: o pino correspondente ao LED aceso fica me nível LOW e os apagados em nível HIGH.
Entendido isto, bastam duas matrizes com as listas de pinos dos planos e LEDs e alguns laços:
int nivel[] = { 4, 5, 6, 7 };
int led[] = {
0, A4, A2, 10,
A5, A0, 3, 9,
A3, 1, 13, 8,
A1, 2, 12, 11
};
void setup()
{
for (int i = 0; i < 4; i++)
{
pinMode (nivel[i], INPUT);
digitalWrite (nivel[i], LOW);
}
for (int i = 0; i < 16; i++)
{
pinMode (led[i], OUTPUT);
digitalWrite (led[i], LOW);
}
}
void loop()
{
for (int iNiv = 0; iNiv < 4; iNiv++)
{
pinMode (nivel[iNiv], OUTPUT);
digitalWrite (nivel[iNiv], HIGH);
for (int iLed = 0; iLed < 16; iLed++)
{
digitalWrite (led[iLed], LOW);
}
for (int iLed = 0; iLed < 16; iLed++)
{
digitalWrite (led[iLed], HIGH);
delay (1000);
digitalWrite (led[iLed], LOW);
}
digitalWrite (nivel[iNiv], LOW);
for (int iLed = 0; iLed < 16; iLed++)
{
digitalWrite (led[iLed], HIGH);
}
for (int iLed = 0; iLed < 16; iLed++)
{
digitalWrite (led[iLed], LOW);
delay (1000);
digitalWrite (led[iLed], HIGH);
}
pinMode (nivel[iNiv], INPUT);
}
}
O vídeo abaixo mostra o resultado.
No próximo post vamos ver uma demonstração mais sofisticada do cubo.

Nenhum comentário:
Postar um comentário