Создание рулетки на 37 светодиодов с Arduino Nano
Компоненты и материалы
| Arduino Nano R3 | 1 |
| Сдвиговый регистр 74HC595 | 5 |
| Светодиоды (LED) | 37 |
| Зуммер (Buzzer) | 1 |
| Транзистор NPN общего назначения | 1 |
| Таковая кнопка | 1 |
Необходимые инструменты
- Паяльник
Приложения и онлайн-сервисы
- Arduino IDE
О проекте
Рулетка — казино-игра, название от фр. «маленькое колесо». Игроки ставят на число, группы чисел, цвет (красное/чёрное), чёт/нечёт, высокие (19-36) или низкие (1-18) числа.
Большинство проектов используют 10 светодиодов, здесь — 37 светодиодов как в настоящем европейском колесе (один ноль + 36 чисел). При нажатии кнопки запускается «виртуальный шар»: светодиоды зажигаются последовательно, скорость плавно снижается до остановки на случайном числе. Звуковой эффект добавляет реализма. Скорость и время настраиваются в коде.

Устройство простое:
- Arduino Nano
- 5 сдвиговых регистров 74HC595
- 37 светодиодов
- NPN-транзистор
- 2 резистора
- Зуммер
Готовое устройство помещено в корпус из ПВХ с цветной обклейкой.
Код
int SER_Pin = 8; // pin 14 on 74HC595
int RCLK_Pin = 9; // pin 12 on 74HC595
int SRCLK_Pin = 10; // pin 11 on 74HC595
#define number_of_74hc595s 5
#define numOfRegisterPins number_of_74hc595s * 8
boolean registers[numOfRegisterPins];
int Randomwaarde;
int del = 5;
void setup() {
pinMode(SER_Pin, OUTPUT);
pinMode(RCLK_Pin, OUTPUT);
pinMode(SRCLK_Pin, OUTPUT);
clearRegisters();
writeRegisters();
randomSeed(analogRead(3));
Randomwaarde = random(190, 210);
Serial.println(Randomwaarde);
}
void clearRegisters() {
for (int i = numOfRegisterPins - 1; i >= 0; i--) registers[i] = LOW;
}
void writeRegisters() {
digitalWrite(RCLK_Pin, LOW);
for (int i = numOfRegisterPins - 1; i >= 0; i--) {
digitalWrite(SRCLK_Pin, LOW);
int val = registers[i];
digitalWrite(SER_Pin, val);
digitalWrite(SRCLK_Pin, HIGH);
}
digitalWrite(RCLK_Pin, HIGH);
}
void setRegisterPin(int index, int value) {
registers[index] = value;
}
void loop() {
for (int x = 0; x <= 36; x++) {
if (del <= Randomwaarde) {
setRegisterPin(x, HIGH);
writeRegisters();
delay(del);
setRegisterPin(x, LOW);
writeRegisters();
del++;
} else {
setRegisterPin(x, HIGH);
writeRegisters();
delay(10000);
setRegisterPin(x, LOW);
writeRegisters();
del = 5;
}
}
}
Схемы

Производственный процесс
- Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
- Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
- Интерактивная игра с джойстиком и LED-обратной связью на Arduino
- Портативный дальномер на Arduino Nano: HC-SR04, питание 18650, 3D-корпус
- MobBob: Самостоятельная сборка Arduino-робота под управлением Android-смартфона
- Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
- Медное гальваническое покрытие: умная система на Arduino UNO
- NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10