Mudanças entre as edições de "Cofre para Coding Dojo com Arduino"
(Link para o sketch de teste da montagem) |
|||
Linha 90: | Linha 90: | ||
** Funciona como um botão que é apertado pelo polo sul de um imã |
** Funciona como um botão que é apertado pelo polo sul de um imã |
||
** Saída ligada ao pino 6 |
** Saída ligada ao pino 6 |
||
+ | |||
+ | [https://github.com/garoa/dojo-cofre Sketch de teste no github] |
||
== Montagem Física == |
== Montagem Física == |
Edição das 14h23min de 13 de setembro de 2015
Esta página descreve a montagem de um "Cofre" para uso em um Coding Dojo com Arduino.
Motivação
O Garoa vem realizando há anos sessões do Coding Dojo com Arduino usando um display de 7 segmentos e um potenciômetro (originalmente de forma artesanal e mais recentemente com o Garoa Dojo Shield). Este hardware é plenamente adequado para uma primeira experiência de programação, mas:
- As variações do desafio são limitadas, reduzindo a atração por uma segunda sessão.
- É voltado para o novato em programação e Arduino.
- Depois da décima vez, os instrutores perdem o pique (pelo menos eu!)
O hardware proposto apresenta um nível maior de complexidade, tanto na variedade dos elementos como no comportamento final desejado. Novatos podem ser atendidos por um subconjunto do comportamento proposto para o cofre.
Elementos do Hardware
O hardware é composto por:
- Um servo motor, que é a trava do cofre
- Um botão para comandar a abertura
- Um LED bicolor (acende verde ou vermelho) para indicar se o comando de abertura foi aceito
- Um potenciômetro, alterado para girar continuamente, para entrada da combinação
- Um sensor de efeito Hall, para detectar se a tampa do cofre está aberta ou fechada
Comportamento Desejado
- No estado inicial o cofre está aberto e a trava desativada. O botão e o potenciômetro são ignorados, apenas o sensor da tampa é monitorado.
- Quando o sensor da tampa indicar que ela foi fechada, a trava é acionada. Botão e potenciômetro passam a ser monitorados.
- Quando o botão for apertado, é conferido se a combinação foi entrada corretamente.
- Se sim, acende o LED na cor verde, a trava é liberada, aguarda abrir e volta ao estado inicial.
- Se não, acende o LED é aceso na cor vermelha.
- A combinação correta é:
- Girar no sentido horário até a posição 7
- Girar no sentido anti-horário até a posição 2
- Girar no sentido horário até a posição 9
Sugestão de Tarefas para Solução
A lista abaixo é um sugestão das tarefas a serem feitas para montar uma solução. Exceto por dependência diretas a ordem das tarefas não importa.
- Controle do Servo motor:
- Mover o servo
- Determinar as posições para travado e livre
- Botão:
- Detectar botão apertado e solto
- LED:
- Acender o LED na cor vermelha
- Acender o LED na cor verde
- Potenciômetro:
- Ler a posição atual
- Determinar se está sendo girado no sentido horário ou anti-horário
- Determinar se a combinação foi entrada corretamente
- Sensor de efeito Hall:
- Detectar a abertura e fechamento da tampa
Resolvidas individualmente estas tarefas, evoluir com a lógica do programa para obter o comportamento desejado.
Opções Simplificadas
Algumas sugestões de problemas simplificados:
- Acender o LED conforme a tampa está aberta ou fechada
- Usar o botão diretamente para travar e liberar a tampa, sem necessidade da combinação
- Travar automaticamente quando fecha a tampa e liberar quando aperta o botão
- Considerar a combinação como uma posição do potenciômetro (por exemplo, libera a trava quando aperta o botão se o potenciômetro está na posição 8).
Detalhes dos Componentes e Conexões ao Arduino
- Servo motor:
- Motor que permite controlar a posição angular de 0 a 180 graus
- Posição é definida pela largura do pulso no seu sinal de controle
- Arduino vem com biblioteca e exemplo para controle de servo motor [1]
- Sinal de controle ligado ao pino digital 2
- Botão:
- Chave de contato momentâneo
- Um contato está ligado ao pino 3 e o outro a GND
- Quando o botão está apertado o pino 3 estará ligado a GND, quando solto o pino 3 estará desconectado
- Ver exemplo Digital | DigitalInputPullup
- LED:
- LED que acende vermelho ou verde conforme a polaridade da alimentação
- Conectado aos pinos digital 4 e 5
- Potenciômetro:
- Resistor variável
- Um extremo conectado ao +5V e o outro a GND
- Terminal central ligado ao pino analógico 0
- Ver exemplo AnalogreadSerial
- Devido à alteração para girar livremente tem uma região onde a leitura não é confiável
- Sensor de efeito Hall:
- Sensor A1120LUA
- Funciona como um botão que é apertado pelo polo sul de um imã
- Saída ligada ao pino 6
Montagem Física
Ideias de Aperfeiçoamento
- Incluir um buzzer e disparar se o sensor da tampa indicar que ela foi aberta sem a devida combinação.