Projeto Arduino: Jogo de equilíbrio 5

Neste artigo vamos aprender como montar um jogo baseado em uma das provas do reality show “Hyperdrive”, disponível na Netflix. A prova original consiste em equilibrar uma rampa manobrando o carro pra frente e para trás, da seguinte maneira:

"Hyperdrive”, disponível na Netflix
“Hyperdrive”, disponível na Netflix

A diferença é que, neste projeto, o objetivo é mover a rampa que é controlada por um micro servo para equilibrar o carro no centro e bloquear o diodo laser que está mirando no sensor de luminosidade LDR. O Jogo termina quando o led verde acende:

Jogo de equilíbrio com Arduino
Jogo de equilíbrio com Arduino

No decorrer do artigo será explicado como a estrutura foi montada, mas o divertido desse projeto é usar a criatividade para montar estruturas diferentes. No meu caso eu usei MDF de 25mm de espessura, mas você pode usar chapas de MDF mais finas, peças de LEGO, impressão 3D e até papelão!
E não menos importante, todos os componentes desse projeto estão inclusos no Kit Maker Arduino Iniciante da FilipeFlop!

Materiais necessários:

Programando o Arduino

Antes de colocar a mão na massa e conectar todos os componentes, devemos abrir o Arduino IDE e carregar o seguinte código:

// Jogo de Equilibrio Arduino
// Por Lauro Fava

#include <Servo.h>

int distancia = 0;
int sensorluz = 0;
Servo servo_3;
unsigned long millisTempoled = millis();

void setup()
{
  pinMode(A0, INPUT);
  servo_3.attach(3, 500, 2500);

  Serial.begin(9600);

  pinMode(A1, INPUT);
  pinMode(8, OUTPUT);
  }

void loop()
{	

servo_3.write(map(analogRead(A0), 0, 1023, 40, 140));

Serial.println(sensorluz);
sensorluz = analogRead(A1);
  
   if (sensorluz < 950 && ((millis() - millisTempoled) > 3000)) {	

digitalWrite(8, HIGH);
    }

   else if (sensorluz > 950) {

	digitalWrite(8, LOW); 
    	millisTempoled = millis(); 
   }

}

O código é dividido basicamente em duas partes:

  • Controlar o Micro Servo usando o Potenciômetro
  • Condição if-else para acender o LED verde caso o Sensor de Luminosidade LDR não receba a luz do Diodo Laser por um tempo de 3 segundos

Um observação importante: no código foi necessário o uso da função millis() ao invés de delay(), pois, mesmo que o delay() seja inserido dentro na condição if-else, todos os comandos fora do if-else irão sofrer um delay, resultando em um atraso no controle do Micro Servo.
Temos um Artigo no blog ensinando como utilizar a função millis() em seus projetos: Substituindo delay por millis no Arduino.

Para a estrutura, eu comecei revestindo um pedaço de MDF de 30cm x 24 cm usando um tecido que “imita” fibra de carbono. Para isso eu utilizei um grampeador de tapeceiro:

Em seguida, foi necessário furar a chapa da seguinte maneira:

  • 4 furos com broca de 1 mm (indicados em azul na foto) para parafusar a placa Arduino. Para referência dos furos você pode usar a própria placa Arduino.
  • 2 furos com broca de 6mm (indicados em verde na foto) para passar os jumpers que serão conectados no sensor LDR e no Micro Servo.

Com a base pronta, podemos preparar o suporte vertical, também em MDF, onde serão presos o Micro Servo, sensor LDR e eixo da rampa, usando as seguintes medidas:

O parafuso usado para o eixo da rampa tem medidas de 1/4“ x 10 cm e o furo indicado na foto foi feito para passar os fios do Micro Servo. Para fazê-lo foi usado uma broca de 6mm e movimentos horizontais para aumentar a largura do furo

Para a rampa, foram usados 2 pedaços de capa de caderno e duas porcas de 1/4“ no centro, para parafusar o eixo:

E para finalizar a estrutura, foram usados 20cm de espiral de caderno para dar suporte ao diodo laser, como pode ser visto na imagem abaixo.
Para prender a espiral, foram feitos 2 furos de 1mm na base da estrutura.

Montando os componentes

O esquemático do projeto ficou o seguinte (considerar que a lâmpada é o diodo laser):

Esquemático eletrônico - Jogo de equilíbrio
Esquemático eletrônico – Jogo de equilíbrio

O resistor ligado ao LED é de 220 Ω e o ligado ao LDR é de 10k Ω.
Antes de iniciar a ligação dos componentes eu usei os buracos feitos na base para passar e esconder os cabos que vão do micro servo e LDR até o Arduino e a Protoboard. Os jumpers da foto a seguir estão conectados da seguinte maneira:

  • Jumper alaranjado está conectado na entrada sinal do micro servo.
  • Jumper vermelho está conectado na entrada fase do micro servo.
  • Jumper marrom está conectado na entrada GND do micro servo.
  • Jumpers amarelo e verde estão conectados no sensor LDR (O sensor LDR foi posicionado a 4 cm do eixo através de 2 furos de 1mm, um para cada cada terminal do LDR).

A conexão inicial dos componentes Sensor de Luminosidade LDR e Micro servo ficou a seguinte:

E para alcançar a protoboard, foi necessário soldar 2 jumpers nos terminais do diodo laser:

Seguindo o esquemático, devemos conectar o LED, nesse caso ele foi preso à um boneco LEGO:

 

Agora devemos conectar a rampa ao micro servo, para isso foram usados 2 parafusos de 2,5mm x 40mm, 1 palito de picolé e 12cm de corrente para cada lado.
O palito de picolé foi presos ao servo e às corrente usando o grampeador de tapeceiro (mas você pode usar um grampeador de papel):

E as correntes foram presas à rampa através dos parafusos:

E para finalizar, devemos preparar o carrinho. Para isso foi usado um pedaço de palito de picolé e preso ao carrinho com fita crepe. Esta haste tem a função de bloquear o diodo laser:

Funcionamento do projeto:

Conta pra gente o que achou desse projeto aqui nos comentários 🙂 e não esquece de nos seguir no Instagram para ficar por dentro das novidades aqui da FilipeFlop

Faça seu comentário

Acesse sua conta e participe

5 Comentários

  1. dessa vez, o problema é que a luz do led tá ficando acesa até conectar o positivo no 5v, depois que conecta ele desliga.

  2. oi bom dia, estou com um problema em relação ao código do arduino (quando a gente vai colocar o código no arduino, o programa diz que o código está com erro). Um dos outros problemas é que o led verde não está acendendo… outro problema TAMBÉM é que, quando o diodo laser é direcionado para o sensor de luminosidade, não acontece nada. (preciso muito de sua ajuda, pois estou usando seu projeto para um trabalho de escola)

    1. Olá Samuel,

      Havia um pequeno erro no código, já corrigimos.

      Todo o comportamento é comandado pelo código, então já que não conseguiu carregar, ele não terá nenhum comando mesmo.
      Acredito que agora com o código corrigido irá funcionar certinho.

      Abraços!
      Vinícius – Equipe FilipeFlop

      1. muito obrigado Viniciussss

        1. De nada, Samuel!

          Abraços!
          Vinícius – Equipe FilipeFlop