Mudanças entre as edições de "Garoa Dojo Shield"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
Linha 41: Linha 41:
 
* 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.
 
* 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 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!).
+
* 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 <code>setup</code> 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.
 
* Usar a função <code>setup</code> 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.

Edição das 18h27min de 19 de setembro de 2014

O maior display de 7 segmentos que cabe em um shield, um potenciômetro e um LDR: tudo que você precisa para um Coding Dojo com Arduino
Shield projetado e fabricado pelo Lab de Garagem, inspirado pelo painel Dojo XXL do Garoa.

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, 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.