Boa noite amigos do blog,
Estou aqui para comunicar que o projeto do Mini Pebolim Eletrônico foi um sucesso!! Todos gostaram de jogar! Vou dar detalhes do projeto. Como vocês podem ver nas fotos abaixo, eu utilizei 02 servos, um Arduino Uno, 02 botões push boton NA e apenas 01 bateria de 9V recarregável. A força dos servos me impressionou, pois a bolinha de isopor fez muitos gols. Para esse primeiro protótipo eu não iria utilizar material de primeira, afinal estou começando os testes. Então, arrumei uma caixa de plástico, cortei o local do Gol e prendi uma barra de ferro tipo cantoneira aonde fixei o primeiro servo (jogador). Na haste do servo eu conectei palitos de picolé com cola de silicone e parafuso. Prendi a haste de ferro na borda da caixa plástica com abraçadeira de nylon e furei com o ferro de solda. Fiz o mesmo com os botões para fixar nos cantos da caixa. Por fim, o outro servo (goleiro), eu colei com cola de silicone em cima do Gol e fixei um palito de picolé na haste do motor. Fiz as conexões diretamente no Arduino, sem necessidade de uma fonte externa, pois como são apenas 02 servos, não puxam muita corrente, no máximo 500 mA se forem acionados juntos, isso considerando uma corrente de pico inicial. A tensão de operação de 5V é fornecida pelo próprio Arduino. Por fim, na programação (Sketch), eu declarei os servos, inicializei ambos e fiz a seguinte lógica: para o jogador, o servo 01 vai a 120 graus quando o botão é acionado e depois retorna ao zero, simulando um chute. E para o servo 02 (goleiro), ele vai a 30 graus quando o botão é acionado pela primeira vez e a 150 graus quando é acionando novamente, e fica alternando, como se o goleiro "pulasse" de um lado para o outro, pra defender o chute. Ficou muito legal. A experiência foi boa. Pretendo aprimorar no futuro. Bons estudos galera!
Fotos:
Sketch:
#include
<Servo.h>
int botaogol = 2; // pino do botão do goleiro
int botaojog
= 7; // pino do botão do jogador
int
stategol;
int
statejog;
int angle =
0;
Servo servo1; // Cria um objeto servo - goleiro
Servo
servo2; // Cria outro objeto servo - jogador
pinMode(botaogol,
INPUT); // botão no pino 2
pinMode(botaojog,
INPUT); // botão no pino 2
servo1.attach(3); //Adiciona o servo1 ao pino 3 - goleiro
servo2.attach(9); //Adiciona o servo2 ao pino 9 - jogador
servo1.write(0); //Inicializa o servo1
servo2.write(0); //Inicializa o servo2
}
void loop()
{
stategol = digitalRead(botaogol); //Lê o estado do botão do goleiro
statejog =
digitalRead(botaojog); //Lê o estado do
botão do jogador
if (stategol == HIGH && angle>=90) { //Se o estado do botão é alto e o ângulo anterior é maior ou igual a 90 graus, então...
while(digitalRead(botaogol) == HIGH) {delay(5);} //Aguarde o botão se estabilizar e voltar ao nível baixo (efeito debounce)
servo1.write(30); // Rode até zero graus
delay(15);} //Aguarde até o servo ir para o local
else if(stategol == HIGH && angle<90){ //Senão, se o botão for ativado e o ângulo for menor que 90 graus, então...
while(digitalRead(botaogol) == HIGH) {delay(5);} //Aguarde o botão se estabilizar e voltar ao nível baixo (efeito debounce)
servo1.write(150); // Rode até 180 graus
delay(15); //Aguarde até o servo ir para o local
}
angle =
servo1.read(); //Lê o ângulo do Servo
motor no final pra poder comparar com o inicial
servo2.write(120); // Rode até cento e vinte graus
delay(15);} //Aguarde até o servo ir para o local




Nenhum comentário:
Postar um comentário