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

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
m (Foram revertidas as edições de Yangping55 (disc) para a última versão por Juca)
 
(26 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 2: Linha 2:
 
[[Arquivo:Dojo-shield-verso.jpg|200px|thumb|right|Shield projetado e fabricado pelo Lab de Garagem, inspirado pelo painel Dojo XXL do Garoa.]]
 
[[Arquivo:Dojo-shield-verso.jpg|200px|thumb|right|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 [http://www.labdegaragem.org/loja/easyblack.html EasyBlack].
+
O '''Garoa Dojo Shield''' é uma placa de expansão didática (shield) para o '''Arduino UNO''' e compatíveis como o [http://www.labdegaragem.org/loja/easyblack.html EasyBlack]. Veja um [https://www.youtube.com/watch?v=jVyhcDPrWsA vídeo de 36s] (silencioso) mostrando um Garoa Dojo Shield em operação.
   
 
Desenvolvido em parceria pelo '''Garoa Hacker Clube''' e [http://labdegaragem.com/ 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.
 
Desenvolvido em parceria pelo '''Garoa Hacker Clube''' e [http://labdegaragem.com/ 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:
 
A placa contém:
Linha 13: Linha 15:
 
* 9 resistores para fazer o display e o LDR funcionarem.
 
* 9 resistores para fazer o display e o LDR funcionarem.
 
* conectores (headers) para ligar mais componentes.
 
* conectores (headers) para ligar mais componentes.
 
   
 
== Modo de usar ==
 
== Modo de usar ==
Linha 19: Linha 20:
 
No [[Coding Dojo com Arduino]] o '''Garoa Dojo Shield''' é usado assim:
 
No [[Coding Dojo com Arduino]] o '''Garoa Dojo Shield''' é usado assim:
   
  +
0) O facilitador apresenta [https://speakerdeck.com/ramalho/dojo-com-arduino os slides] explicando a metodologia do Coding Dojo e o problema a ser resolvido.
1) O apresentador conecta o Arduino com Garoa Dojo Shield no computador e carrega o sketch <code>Blink</code> ([http://arduino.cc/en/Tutorial/Blink?action=sourceblock&num=1 fonte]). Isso faz piscar o segmento F do display (superior esquerdo).
 
   
 
1) O facilitador conecta o Arduino com Garoa Dojo Shield no computador e carrega o sketch <code>Blink</code> ([http://arduino.cc/en/Tutorial/Blink?action=sourceblock&num=1 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.
 
   
 
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 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.
 
   
 
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 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."
 
  +
 
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.
 
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 <code>AnalogReadSerial</code> ([http://arduino.cc/en/Tutorial/AnalogReadSerial?action=sourceblock&num=1 fonte]) para ver o que ele faz. A parte de comunicação serial do <code>AnalogReadSerial</code> precisa ser explicada, mas a única parte daquele código relevante para a missão é a função <code>analogRead(A0)</code>. O potenciômetro está ligado ao pino <code>A0</code> do Arduino, assim não é preciso caçar os pinos analógicos.
+
6) Quando a animação estiver feita, e a dupla quiser saber como ler o potenciômetro, o facilitador sugere rodar o sketch <code>AnalogReadSerial</code> ([http://arduino.cc/en/Tutorial/AnalogReadSerial?action=sourceblock&num=1 fonte]) para ver o que ele faz. A parte de comunicação serial do <code>AnalogReadSerial</code> precisa ser explicada, mas a única parte daquele código relevante para a missão é a função <code>analogRead(A0)</code>. O potenciômetro está ligado ao pino <code>A0</code> do Arduino, assim não é preciso caçar os pinos analógicos.
  +
  +
=== Notas sobre o display de 7 segmentos ===
  +
  +
  +
[[Arquivo:7seg-labels.png|229px|thumb|right|Display com 7 segmentos identificados por letras de '''A''' a '''G'''.]]
  +
  +
* 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 [[Usuário:Agaelebe|Agaelebe]] e publicado pela InfoQ: http://www.infoq.com/br/presentations/dojo-com-arduino
   
 
== Desafios extras ==
 
== Desafios extras ==
Linha 41: Linha 61:
 
* 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.
Linha 48: Linha 68:
   
 
É 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.
 
É 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 ==
  +
<del>Laboratório de Garagem: http://www.labdegaragem.org/loja/garoa-dojo-shield.html</del> 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 no [https://github.com/garoa/dojo-shield-hardware GitHub do Garoa], contendo:
  +
* Eagle (esquemático e board)
  +
* Gerbers
  +
* BOM
  +
* Exemplo Arduino
  +
* Imagens usadas na placa

Edição atual tal como às 05h56min de 19 de outubro de 2017

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

Display com 7 segmentos identificados por letras de A a G.
  • 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

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 no GitHub do Garoa, contendo:

  • Eagle (esquemático e board)
  • Gerbers
  • BOM
  • Exemplo Arduino
  • Imagens usadas na placa