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. Veja um vídeo de 36s (silencioso) mostrando um Garoa Dojo Shield em operação.
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.
Componentes
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:
0) O facilitador apresenta os slides explicando a metodologia do Coding Dojo e o problema a ser resolvido.
1) O facilitador 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 facilitador 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 facilitador 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 facilitador 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 facilitador 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.
Notas sobre o display de 7 segmentos
- O display do Garoa Dojo Shield tem 8 LEDs: 7 para formar o dígito, e um ponto decimal.
- O display do Garoa Dojo Shield é do tipo catodo comum: os catodos dos LEDs estão ligados em um pino que está sempre conectado ao terra; para acender cada segmento, alimente o pino correspondente com 5V.
- Para falar de cada segmento, a convencão é nomeá-los com letras de A a F, a partir do topo, no sentido horário. O segmento central é o G, e o ponto decimal costuma ser chamado "DP" (decimal point).
TDD com hardware
O TDD (Test-Driven Development) faz parte da metodologia do Coding Dojo. Isso significa que um teste devem ser escrito antes de cada nova funcionalidade implementada, e nenhuma funcionalidade deve ser implementada sem que haja um teste para ela. Como testes automatizados com hardware são complicados (o ambiente de teste seria mais complexo que o próprio circuito sendo testado), no Coding Dojo com Arduino fazemos testes manuais. Antes de escrever qualquer código o piloto deve escrever um comentário no início do arquivo-fonte dizendo qual é o comportamento esperado quando a nova funcionalidade estiver pronta. Por exemplo: "Piscar um segmento diferente do segmento F" ou "Piscar alternando entre dois segmentos".
Vídeo de um Coding Dojo com Arduino
No TDC 2013 realizamos um Coding Dojo com Arduino que foi registrado pelo Agaelebe e publicado pela InfoQ: http://www.infoq.com/br/presentations/dojo-com-arduino
Desafios extras
Uma vez que os participantes já fizeram o desafio básico da animação sequencial, outras missões podem ser propostas:
- Controlar a velocidade da animação com o LDR.
- Indicar o nível de luminosidade acendendo 1, 2 ou 3 dos segmentos horizontais.
- Fazer uma animação mais complexa: uma cobrinha com 2 segmentos; uma cobrinha que faz um trajeto em 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 as sugestões anteriores.
- Exibir dígitos de 0 a 9 conforme a posição do potenciômetro ou a luminosidade. Note que isso é bem mais trabalhoso que a animação sequencial. Uma solução razoável usa um array de arrays -- complicado para principiantes. Uma solução bem simples requer o uso intensivo de copiar e colar (é feio mas funciona, e com principiantes o importante é fazer funcionar, principalmente quando se está programando hardware, a beleza do software é secundária!).
- 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.
Links
- Vídeo demonstrando o Garoa Dojo Shield (36s, mudo): https://www.youtube.com/watch?v=jVyhcDPrWsA
- Repositório de código: https://github.com/garoa/dojo-shield/
- Slides sobre Coding Dojo com Arduino: https://speakerdeck.com/ramalho/dojo-com-arduino
Onde comprar
Laboratório de Garagem: http://www.labdegaragem.org/loja/garoa-dojo-shield.html Estoque esgotado e produção encerrada.
O Garoa está pensando em novas formas de fabricar o shield.
DIY
O projeto é aberto. Foi feito pelo LabDeGaragem em parceria com o Garoa.
Os arquivos estão disponíveis aqui
Na pasta tem:
- Eagle (esquemático e board)
- Gerbers
- BOM
- Exemplo Arduino
- Imagens usadas na placa