Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-Murmellabyrinth aus Pappe: Selbstbau-Brettspiel mit Joystick-Steuerung

Komponenten und Zubehör

Benötigte Werkzeuge

Apps und Online-Dienste

Über dieses Projekt

Ein klassisches Geschicklichkeitsspiel (Labyrinth) neu interpretiert: Statt manueller Kippknöpfe steuern zwei Servos die Neigung der Spielfläche (X- und Y-Achse) per Joystick. Das gesamte Gehäuse besteht aus Pappe – in ca. 1 Stunde gebaut.

Design & Zuschnitt

  1. Basis: 20 × 20 cm Quadrat.
  2. Zwei Seitenwände: 14 × 16 cm gleichschenklige Trapeze. Eines mit rechteckiger Aussparung für Servo X, das andere mit 3-mm-Loch mittig für Servowelle X.
  3. Vier Innenstreben: 14 × 4 cm. Eine mit Servoaussparung Y, eine mit 3-mm-Loch für Servowelle Y.
  4. Spielfeld: 12 × 12 cm, Labyrinthvorlage aufkleben, Wände (1,5 × 12 cm Streifen) ausschneiden und aufkleben.
  5. Servos in den Aussparungen fixieren, Servohebel an den beweglichen Streben befestigen (Schrauben).

Verdrahtung

Code

Der Sketch nutzt die Servo.h-Bibliothek. Der Joystick-Wert (0–1023) wird auf einen Bereich von 0–12 gemappt, Mittelposition = 6. Eine Totzone (Schwellenwert 3) verhindert Zittern. Die Servos bewegen sich stufenweise mit verzögerter Geschwindigkeit (je weiter der Joystick gedrückt, desto schneller). Endlagen auf ±20° um Mittelposition begrenzt.

#include <Servo.h>
Servo servoX, servoY;
const int pinX = 8, pinY = 9;
const int joyX = A0, joyY = A1;
int homeX = 90, homeY = 90;
int posX = 103, posY = 135;
const int range = 12, center = range/2, threshold = range/4;

void setup() {
  servoX.attach(pinX); servoY.attach(pinY);
  servoX.write(homeX); servoY.write(homeY);
  posX = homeX; posY = homeY;
  Serial.begin(9600);
}

int readAxis(int pin) {
  int reading = analogRead(pin);
  reading = map(reading, 0, 1023, 0, range);
  int dist = reading - center;
  if (abs(dist) < threshold) dist = 0;
  return dist;
}

void loop() {
  int xVal = readAxis(joyX);
  int yVal = readAxis(joyY);
  Serial.print(xVal); Serial.print(" - "); Serial.println(yVal);

  if (xVal > 0) { posX++; servoX.write(posX); delay(100*(7-xVal)); }
  if (xVal < 0) { posX--; servoX.write(posX); delay(100*(7+xVal)); }
  if (yVal > 0) { posY++; servoY.write(posY); delay(100*(7-yVal)); }
  if (yVal < 0) { posY--; servoY.write(posY); delay(100*(7+yVal)); }

  posX = constrain(posX, homeX-20, homeX+20);
  posY = constrain(posY, homeY-20, homeY+20);
  delay(10);
}

Ideen für Erweiterungen

Fazit

Ein tolles Wochenendprojekt für Groß und Klein: Mechanik, Elektronik und Code verbinden sich zu einem spielbaren Gerät, das zum Weiterentwickeln einlädt.

Herstellungsprozess

  1. TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
  2. Echtzeit-Gyroskop-Spiel mit Arduino Nano & MPU-6050
  3. Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
  4. Arduino Iron Man bauen: Komponenten, Sensoren & Schritt-für-Schritt-Anleitung
  5. Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
  6. DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
  7. Echtzeit-Entfernungsmessung mit Arduino Sonar & Processing-Visualisierung
  8. MobBob: Eigenen Arduino-Roboter bauen, per Android-Smartphone steuern
  9. Audio-reaktive Schreibtischlampe mit Arduino Nano bauen
  10. NeoPixel-Matrix Pong auf Arduino Nano: Neon-Pong selbst bauen