Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Светодиодная игра в рулетку

Компоненты и расходные материалы

LED (общий)
6 красных, 2 желтых, 1 зеленый
× 9
Кнопочный переключатель SparkFun, 12 мм
× 1
Arduino Nano R3
× 1
Женский заголовок 8, позиция 1, строка (0,1 ")
× 1
DC Barrel Jack
× 1

Необходимые инструменты и машины

Фрезерный станок с ЧПУ

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Видео:

Обзор

Долгое время я хотел создать простую, но увлекательную игру, в которую должен играть только один человек. Это очень просто, требуется только один Arduino Nano для его запуска. Это светодиодная рулетка. Цель игры - остановиться на зеленом светодиоде, избегая красных и желтых. Кажется, легко играть и делать, и это так.

Шаг 1

Во-первых, я начал с разработки устройства в Fusion 360. Я спроектировал переднюю панель так, чтобы она содержала 9 светодиодов, 6 красных, 2 желтых и 1 зеленый. Я также сделал место для тактового переключателя внизу. Затем я использовал свой фрезерный станок с ЧПУ Millright, чтобы вырезать детали, которые я спроектировал.

Шаг 2

Игровая механика выглядит так:свет будет «двигаться» вперед и назад между двумя краями и останавливаться при нажатии кнопки. Чтобы он среагировал немедленно, я использовал прерывание. Каждый светодиод соответствует индексу в массиве, который проходит циклически. текущий светодиодный индекс также получает свою собственную переменную. Также существует задержка между каждым шагом, соответствующая сложности. При запуске пользователь выбирает сложность, нажимая кнопку, чтобы уменьшить задержку между каждым изменением светодиода. После того, как загорится нужный светодиод, пользователь может дважды щелкнуть, чтобы заблокировать его.

Шаг 3

Я использовал наждачную бумагу, чтобы придать фанере красивую отделку и округлить ее. После этого я скрепила детали горячим клеем.

Заключения

Теперь, когда я хочу поиграть в простую игру, будь то дорога или просто уйти от экрана, это устройство дает мне прекрасную передышку. Я также могу сделать это многопользовательским, сделав каждый светодиод от зеленого на определенное количество очков, в результате чего побеждает человек, набравший наименьшее количество очков в конце.

Код

  • Код
Код C / C ++
 / * Используйте контакты 2-10 Вы можете получить библиотеку TTBOUNCE здесь:https://github.com/TOLDOTECHNIK/TTBOUNCE*/#include  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 =0; uint8_t current_led =0; bool dir_flag =true; // истина идет вправо, ложь идет влевоbool game_ended =false; bool is_win =false; bool is_finished_selecting =false; TTBOUNCE b =TTBOUNCE (button); void doubleClick () {Serial.println ("двойной щелчок"); is_finished_selecting =true; delay_time =этаж (500 / (сложность + 1)); // Формула:задержка (в мс) =500 / (сложность + 1) Serial.println ("сложность:" + String (delay_time)); sweep ();} void click () {Serial.print ("Щелкните |"); digitalWrite (led_array [сложность], LOW); сложность ++; если (сложность> 8) {сложность =0; } digitalWrite (led_array [сложность], ВЫСОКАЯ); Serial.println («Сложность:» + строка (сложность)); задержка (100);} установка void () {Serial.begin (9600); б.attachDoubleClick (двойной щелчок); b.attachClick (щелкните); b.setActiveLow (); b.enablePullup (); для (int я =0; я <9; я ++) {pinMode (led_array [я], ВЫХОД); } сметать(); пульс(); сложность =0; digitalWrite (led_array [сложность], ВЫСОКАЯ); в то время как (! is_finished_selecting) {b.update (); } b.update (); pinMode (кнопка, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (кнопка), button_pressed, ПАДЕНИЕ); задержка (1000);} void loop () {if (game_ended ==false) {move_led (); задержка (delay_time); } иначе, если (game_ended) {Serial.println (game_ended); Serial.println («Игра окончена»); if (is_win) {Serial.println («ты выиграл»); для (int я =0; я <5; я ++) {импульс (); задержка (100); } } сметать(); game_ended =ложь; is_win =ложь; задержка (2000); }} void move_led () {digitalWrite (led_array [current_led], LOW); если (current_led ==8) {dir_flag =false; current_led - =1; } иначе, если (current_led ==0) {dir_flag =true; current_led + =1; } иначе, если (dir_flag) {current_led + =1; } иначе, если (! dir_flag) {current_led - =1; } digitalWrite (led_array [current_led], HIGH);} void pulse () {для (int i =0; i <9; i ++) {digitalWrite (led_array [i], HIGH); } задержка (100); для (int я =0; я <9; я ++) {digitalWrite (led_array [я], LOW); }} void sweep () {для (int i =0; i <9; i ++) {digitalWrite (led_array [i], HIGH); задержка (50); digitalWrite (led_array [i], LOW); } для (int я =8; я> =0; я -) {digitalWrite (led_array [я], ВЫСОКИЙ); задержка (50); digitalWrite (led_array [i], LOW); }} void button_pressed () {Serial.println ("Кнопка нажата на светодиоде:" + String (current_led)); game_ended =правда; если (current_led ==4) {is_win =true; } иначе, если (current_led! =4) {is_win =false; } current_led =0; delay (500);} 

Схема


Производственный процесс

  1. Игра с гироскопом Arduino с MPU-6050
  2. Цифровые игральные кости Arduino
  3. Рулетка DIY 37 LED
  4. Игровой контроллер Arduino
  5. Игра Arduino Nano Tetris на самодельной матрице 16x8
  6. Arduino с Bluetooth для управления светодиодом!
  7. Четвероногий Arduino
  8. Игра Pixel Chaser
  9. Управление яркостью светодиода с помощью Bolt и Arduino
  10. Перекидные часы Arduino с одной светодиодной матрицей