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.

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



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.

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.

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

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