No description
Find a file
2024-04-04 19:05:40 +02:00
doc new M,n commands - start integration of Network mode 2023-07-19 18:13:10 +02:00
open-led-race patch sound init on startup (thanks to Dieter Paul !) 2024-04-04 19:05:40 +02:00
.gitignore new M,n commands - start integration of Network mode 2023-07-19 18:13:10 +02:00
changelog.txt Merge branch 'lab' 2023-08-19 18:36:05 +02:00
README.md ver 0.9.9 / adde support for Relay Race (Network mode) 2023-08-19 18:29:32 +02:00

OLR-Arduino - Minimalist race game with LED strip

Software running on OLR Board (Arduino) implementing a 'Car Race' where a 'car' is a light moving along a LED Strip (WS2812/WS2813).
Manage up to 4 'cars' and optionals Slope (with gravity effect), Pitlane, Electric cars mode (need to recharge battery in Pitlane), etc
Players use push-button controllers to move the 'cars' - The quicker you push the button the faster the light (car) moves along the LED Strip.
The software can receive configuration commands via Serial interface: (--see: doc/OLR_Protocol_Serial.pdf)

Standalone mode

The software running on OLR Board (Arduino) implements a race as described above where up to 4 people can play using the push buttons.

Network mode / Relay Race

A "NetworkClient" software, running on an external 'Host' (Computer, SBC,..) controls the Software running on OLR Board (Arduino).
Together they implements a Relay Race where 'cars' starts a Race in Racetrack 'A', than goes to Racetrack 'B', etc.
-- see: https://gitlab.com/open-led-race-network/networkclient

Hardware

Tested on [Arduino Nano] and [Arduino Every].

Change settings in [olr-settings.h] to adapt to your hardware configuration.

///////////////////////////////////////////////////////////////////////////////
//  __________________________LED Strip____________________________________  //
//   
//  For WS2812 LED Strip: 
//   _______  __                          ____[WS2812 LED Strip connector]____
//  |__Arduino_ |                        |                                    |
//  |    +5V    |>---------------------->| V+  (usually Red cable)            |
//  |    GND    |>---------------------->| GND (usually White cable)          |
//  |  PIN_LED  |>---->[R 500 ohms]----->| DI  (data in - usually Green cable)|
//   \_________/                          \__________________________________/
//
//
//  For WS2813 LED Strip: 
//     WS2813 have a 4th cable: Backup data lines (BI- usually Blue cable)
//     Connect BI cable to GND 
//   ___________                          ____[WS2813 LED Strip connector]_____
//  |__Arduino_ |                        |                                     |
//  |    +5V    |>---------------------->| V+  (usually Red cable)             |
//  |    GND    |>----------------o----->| GND (usually White cable)           |
//  |           |                  \---->| BI  (backup in - usually Blue cable)|       
//  |  PIN_LED  |>---->[R 500 ohms]----->| DI  (data in - usually Green cable) |             
//   \_________/                          \___________________________________/
//  
//  __________________________Loudspeaker___________________________________  //
//
//   ___________                          _____________
//  |__Arduino_ |                        |             |
//  |    GND    |>--------------------->o| Loudspeaker |
//  | PIN_AUDIO |>----->[CAP 2uF]------>o|             |
//   \_________/                         |_____________|
//
///////////////////////////////////////////////////////////////////////////////
enum hw_setup {    // If you have a custom hardware (i.e not the OLR PCB), 
  PIN_LED = 2,     // set PIN_LED and PIN_AUDIO accordingly
  PIN_AUDIO =  3,   
};


///////////////////////////////////////////////////////////////////////////////
//  __________________ Digital Controllers (Buttons)_______________________  //
//
//   ________________               
//  |____Arduino____ |            ________________ 
//  |      GND       |>-------->o| Button 1 (Red) |
//  | DIG_CTRL_1_PIN |>-------->o|________________|
//  |                |            __________________
//  |      GND       |>-------->o| Button 2 (Green) |
//  | DIG_CTRL_2_PIN |>-------->o|__________________|
//  |                |            _________________
//  |      GND       |>-------->o| Button 3 (Blue) |
//  | DIG_CTRL_3_PIN |>-------->o|_________________|
//  |                |            __________________
//  |      GND       |>-------->o| Button 4 (White) |
//  | DIG_CTRL_4_PIN |>-------->o|__________________|
//   \______________/                        
//
///////////////////////////////////////////////////////////////////////////////
#define DIG_CTRL_1_PIN  A2 // switch player 1 to PIN and GND
#define DIG_CTRL_2_PIN  A0 // switch player 2 to PIN and GND
#define DIG_CTRL_3_PIN  A3 // switch player 3 to PIN and GND
#define DIG_CTRL_4_PIN  A1 // switch player 4 to PIN and GND