Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano

Onderdelen en benodigdheden

LED (standaard) – 6× rood, 2× geel, 1× groen × 9
SparkFun Drukknop 12mm × 1
Arduino Nano R3 × 1
Female Header 8-pins 1 rij (0.1") × 1
DC Barrel Jack × 1

Nodige gereedschappen

  • CNC-freze (voor frontplaat)

Apps en online diensten

  • Arduino IDE

Over dit project

Video

(Zie projectpagina voor filmpje)

Overzicht

Ik wilde al lang een simpel, leuk spel voor één persoon maken. Het is LED Roulette: een licht beweegt heen en weer over 9 LED's (6 rood, 2 geel, 1 groen). Druk op de knop om te stoppen. Doel: land op de groene LED. Simpel om te maken en te spelen.

DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano

Stap 1: Ontwerpen & Frezen

Ontworpen in Fusion 360: frontplaat met 9 LED-gaten en tact-switch opening. Uitgefreesd met Millright CNC-router.

DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano

DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano

DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano

Stap 2: Spelmechanica

  • Licht "beweegt" heen en weer over de LED-array.
  • Knopdruk stopt het licht direct → interrupt voor directe reactie.
  • Elke LED = index in array. Huidige LED-index wordt bijgehouden.
  • Vertraging tussen stappen = moeilijkheidsgraad.
  • Opstart: gebruiker kiest moeilijkheid door knop in te druken (verkort vertraging).
  • Na stoppen: dubbelklik om te bevestigen ("lock in").

Stap 3: Assemblage

Stukken geschuurd voor afronding, met hete lijm samengevoegd.

DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano

Conclusies

Perfect voor een korte pauze van schermen – op reis of thuis. Kan multiplayer: elke niet-groene LED = strafpunten, wie na x rondes minst punten heeft, wint.

DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano

Code

Code (C/C++)

Vereist TTBOUNCE library: GitHub

/* Pins 2-10 gebruikt */
#include <TTBOUNCE.h>

int delay_time = 0;
const uint8_t led_array[9] = {4,3,5,6,7,8,9,10,11};
const uint8_t button = 2;
uint8_t difficulty = 0;
uint8_t current_led = 0;
bool dir_flag = true;      // true = rechts, false = links
bool game_ended = false;
bool is_win = false;
bool is_finished_selecting = false;

TTBOUNCE b = TTBOUNCE(button);

void doubleClick() {
  Serial.println("double click");
  is_finished_selecting = true;
  delay_time = floor(500 / (difficulty + 1)); // ms = 500 / (diff+1)
  Serial.println("difficulty: " + String(delay_time));
  sweep();
}

void click() {
  Serial.print("Click | ");
  digitalWrite(led_array[difficulty], LOW);
  difficulty++;
  if (difficulty > 8) difficulty = 0;
  digitalWrite(led_array[difficulty], HIGH);
  Serial.println("Difficulty is: " + String(difficulty));
  delay(100);
}

void setup() {
  Serial.begin(9600);
  b.attachDoubleClick(doubleClick);
  b.attachClick(click);
  b.setActiveLow();
  b.enablePullup();
  for (int i = 0; i < 9; i++) pinMode(led_array[i], OUTPUT);
  sweep();
  pulse();
  difficulty = 0;
  digitalWrite(led_array[difficulty], HIGH);
  while (!is_finished_selecting) b.update();
  b.update();
  pinMode(button, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(button), button_pressed, FALLING);
  delay(1000);
}

void loop() {
  if (!game_ended) {
    move_led();
    delay(delay_time);
  } else {
    Serial.println("Game over");
    if (is_win) {
      Serial.println("you won");
      for (int i = 0; i < 5; i++) { pulse(); delay(100); }
    }
    sweep();
    game_ended = false;
    is_win = false;
    delay(2000);
  }
}

void move_led() {
  digitalWrite(led_array[current_led], LOW);
  if (current_led == 8) { dir_flag = false; current_led--; }
  else if (current_led == 0) { dir_flag = true; current_led++; }
  else if (dir_flag) current_led++;
  else current_led--;
  digitalWrite(led_array[current_led], HIGH);
}

void pulse() {
  for (int i = 0; i < 9; i++) digitalWrite(led_array[i], HIGH);
  delay(100);
  for (int i = 0; i < 9; i++) digitalWrite(led_array[i], LOW);
}

void sweep() {
  for (int i = 0; i < 9; i++) { digitalWrite(led_array[i], HIGH); delay(50); digitalWrite(led_array[i], LOW); }
  for (int i = 8; i >= 0; i--) { digitalWrite(led_array[i], HIGH); delay(50); digitalWrite(led_array[i], LOW); }
}

void button_pressed() {
  Serial.println("Button pressed on LED: " + String(current_led));
  game_ended = true;
  is_win = (current_led == 4); // groen is index 4
  current_led = 0;
  delay(500);
}

Schema

DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano

Productieproces

  1. Bouw een real-time gyroscoop-spel met Arduino Nano & MPU-6050 sensor
  2. Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
  3. Bouw Je Eigen 37-LED Roulette-spel met Arduino Nano
  4. DIY Arduino USB Gaming Controller – Bouw Je Eigen High-Performance Gamepad
  5. Bouw een Tetris-spel met Arduino Nano op een Zelfgemaakte 16×8 LED-matrix
  6. Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
  7. Bouw een Slimme Arduino Vierpotige Robot: Stap-voor-Stap Handleiding
  8. Pixel Chaser: Interactieve één-tik LED-spel met Arduino Nano
  9. Naadloze LED-dimmer met Bolt IoT en Arduino UNO
  10. Arduino Flip Clock met 8×8 LED Matrix – DIY Real-Time Clock Project
  11. Arduino RGB LED Kleurmixer – Beginner-vriendelijk DIY-project