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