Garoa Dojo Shield
O Garoa Dojo Shield é uma placa de expansão didática (shield) para o Arduino UNO e compatíveis como o EasyBlack.
Desenvolvido em parceria pelo Garoa Hacker Clube e Laboratório de Garagem, o Garoa Dojo Shield é um circuito pronto para usar no Coding Dojo com Arduino, uma atividade didática que o Garoa vem realizando desde 2012. Basta plugar um Arduino e sair programando.
A placa contém:
- um display de 7 segmentos + ponto decimal com leds vermelhos.
- um potenciômetro de 10KΩ.
- um LDR (sensor de luminosidade).
- 9 resistores para fazer o display e o LDR funcionarem.
- conectores (headers) para ligar mais componentes.
Modo de usar
No Coding Dojo com Arduino o Garoa Dojo Shield é usado assim:
1) O apresentador conecta o Arduino com Garoa Dojo Shield no computador e carrega o sketch Blink
(fonte). Isso faz piscar o segmento F do display (superior esquerdo).
2) O apresentador explica que cada segmento do display está conectado a um dos pinos digitais do Arduino, e o potenciômetro e LDR estão ligados a pinos analógicos.
3) Mostrando o código do Blink no telão, o apresentador pergunta aos participantes: "Mesmo sem saber nada de linguagem C, quem me diz onde temos que editar este código para piscar um segmento diferente?" Depois: "Onde precisa mexer para mudar a velocidade da piscada?". As pessoas respondem rapidamente essas perguntas. Isso quebra o gelo e os participantes percebem que o código não é impossível de ler, mesmo para quem nunca programou.
4) O apresentador explica o desafio: "Nossa missão é fazer uma animação tipo luz sequencial usando os 6 segmentos que formam o numero zero: acende um segmento, deixa um tempo aceso, apaga e imediatamente acende o próximo, repetindo para sempre. Uma vez feito isso, colocar interatividade: a velocidade da animação deve ser controlada pelo potenciômetro."
5) Agora pode começar o Coding Dojo, usando a metodologia tradicional de programação em pares, trocando o piloto a cada 5 minutos. Dependendo da experiência do público com programação e/ou Arduino, a missão leva de 25 a 45 minutos. Nota: faz parte do desafio os participantes descobrirem como os pinos do Arduino estão ligados aos segmentos. Quando me perguntam, eu respondo: "O pessoal da engenharia não mandou a documentação ainda, mas o software tem que ficar pronto em meia hora!" É inútil inspecionar as trilhas da placa sem o datasheet do display. É mais divertido descobrir por software.
6) Quando a animação estiver feita, e a dupla quiser saber como ler o potenciômetro, o apresentador sugere rodar o sketch AnalogReadSerial
(fonte) para ver o que ele faz. A parte de comunicação serial do AnalogReadSerial
precisa ser explicada, mas a única parte daquele código relevante para a missão é a função analogRead(A0)
. O potenciômetro está ligado ao pino A0
do Arduino, assim não é preciso caçar os pinos analógicos.
Desafios extras
Uma vez que os participantes já fizeram o desafio básico da animação sequencial, outros desafios podem ser colocados:
- Controlar a velocidade da animação com o LDR.
- Fazer uma animação mais complexa: uma cobrinha com 2 segmentos; uma cobrinha que desenha um 8; uma cobrinha que se move aleatoriamente, às vezes mudando de direção nas "esquinas" do segmento G (central). A cobrinha aleatória dá um resultado visualmente interessante, mas é bem mais difícil de programar que a animação sequencial básica.
- Exibir dígitos de 0 a 9 conforme a posição do potenciômetro ou a luminosidade. Note que isso é bem mais complicado que a animação sequencial. Uma solução razoável envolve o uso de arrays aninhados, nada simples para principiantes. Uma solução mais simples envolve o uso intensivo de copiar e colar (é feio mas funciona, e com principiantes o importante é fazer funcionar, principalmente quando se está programando hardware!).
- Usar a função
setup
do Arduino para "calibrar" o LDR na inicialização. Faz parte do exercício especificar como seria exatamente o procedimento de calibração. De alguma forma o usuário tem que indicar (talvez com o potenciômetro) quando o LDR está exposto à luminisidade mínima e quando está exposto à luminosidade máxima. Assim o programa pode ajustar os valores lidos do LDR para amplificar o efeito sobre o display.
Outros usos
É fácil conectar outros sensores e/ou atuadores externos ao Garoa Dojo Shield. Este shield não foi projetado para receber um shield em cima (afinal, o outro shield cobriria o display ;-), mas os headers permitem usar jumpers comuns para conectar um circuito montado em um breadboard, possibilitando outros experimentos e desafios.