Labirinto de Bolinha com Arduino: Jogo de Tabuleiro em Cartão Ondulado
Componentes e Materiais
- Arduino UNO (qualquer placa) — 1 unid.
- Micro servo SG90 9g — 2 unid. (eixo X e Y)
- Mini protoboard — 1 unid.
- Módulo joystick analógico — 1 unid.
- Jumpers — 1 conjunto
- Cartão ondulado 3 mm
- Cola quente, estilete, régua, lápis
- 2 parafusos + porcas M3×12 mm (fixação servos)
- Bolinha de aço (esfera de rolamento)
Ferramentas
- Pistola de cola quente
- Estilete afiado
Aplicativos
- Arduino IDE
Sobre o Projeto
Versão DIY do clássico Labyrinth (BRIO, 1946): uma caixa com labirinto inclinável em dois eixos, controlada por joystick via dois micro-servos. O objetivo é levar a bolinha do início ao fim sem cair nos buracos. Feito inteiramente de cartão ondulado — barato, rápido (≈1 h) e ótimo para crianças.
Design e Corte (SketchUp / PDF)
- Base: quadrado 20 × 20 cm.
- Laterais: dois trapézios isósceles 14 × 16 cm.
- Furo retangular em uma lateral para servo X; furo 3 mm central na outra (eixo X).
- 4 suportes internos 14 × 4 cm.
- Furo 3 mm central em um suporte (eixo Y); furo retangular no oposto para servo Y.
- Labirinto: quadrado 12 × 12 cm (escolha um dos modelos anexos). Cole o papel como guia.
- Paredes: tiras 1,5 × 12 cm, recortadas e coladas seguindo o guia.
- Cole os servos nos furos retangulares; cole as hastes (horns) nos suportes móveis.
Ligação Elétrica
- Servo X (eixo horizontal) → pino 8 (fio amarelo)
- Servo Y (eixo vertical) → pino 9 (fio amarelo)
- Vermelho/marrom de ambos → protoboard → 5V/GND do Arduino
- Joystick VRx → A0, VRy → A1, VCC/GND → protoboard
Código
Leitura suave do joystick com zona morta (threshold) e limites mecânicos (±20° da posição central 90°).
#include <Servo.h>
Servo myServoX, myServoY;
const int ServoXPin = 8, ServoYPin = 9;
int ServoXHomePos = 90, ServoYHomePos = 90;
int ServoXPos = 103, ServoYPos = 135; // posições iniciais calibradas
const int XAxlePin = A0, YAxlePin = A1;
int XAxleValue = 0, YAxleValue = 0;
const int range = 12, center = range / 2, threshold = range / 4;
void setup() {
myServoX.attach(ServoXPin);
myServoY.attach(ServoYPin);
ServoXPos = ServoXHomePos;
ServoYPos = ServoYHomePos;
myServoX.write(ServoXPos);
myServoY.write(ServoYPos);
Serial.begin(9600);
}
void loop() {
XAxleValue = readAxis(XAxlePin);
YAxleValue = readAxis(YAxlePin);
if (XAxleValue > 0) {
ServoXPos++;
myServoX.write(ServoXPos);
delay(100 * (7 - XAxleValue));
}
if (XAxleValue < 0) {
ServoXPos--;
myServoX.write(ServoXPos);
delay(100 * (7 + XAxleValue));
}
if (YAxleValue > 0) {
ServoYPos++;
myServoY.write(ServoYPos);
delay(100 * (7 - YAxleValue));
}
if (YAxleValue < 0) {
ServoYPos--;
myServoY.write(ServoYPos);
delay(100 * (7 + YAxleValue));
}
// Limites mecânicos
ServoXPos = constrain(ServoXPos, ServoXHomePos - 20, ServoXHomePos + 20);
ServoYPos = constrain(ServoYPos, ServoYHomePos - 20, ServoYHomePos + 20);
delay(10);
}
int readAxis(int pin) {
int reading = analogRead(pin);
reading = map(reading, 0, 1023, 0, range);
int distance = reading - center;
if (abs(distance) < threshold) distance = 0;
return distance;
}
Ideias de Expansão
- Sensores IR nos buracos → buzzer toca ao cair.
- Sensor no final → toca melodia de vitória.
- Display OLED com cronômetro / pontuação.
- Versão 2 jogadores: dois joysticks, servos maiores.
- Caixa acrílica transparente para versão "profissional".
Processo de manufatura
- Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense
- Construa um Jogo em Tempo Real com Giroscópio: Arduino Nano + Sensor MPU-6050
- Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
- Construa um Homem de Ferro com Arduino: Componentes, Sensores e Guia Passo a Passo
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Controlador de Umidificador DIY com Arduino e Relé – Configuração Segura de Alta Tensão
- Medição de Distância em Tempo Real com Sonar Arduino e Visualização no Processing
- MobBob: Construa Seu Próprio Robô Arduino, Controlado via Smartphone Android
- Lâmpada de Mesa Reativa a Áudio com Arduino Nano
- Jogo Pong Neon em Matriz NeoPixel com Arduino Nano