Thread Tools
Nov 14, 2011, 09:28 PM
Registered User
LukeZ's Avatar
Thread OP
New Product

Open Source Lights - Arduino based RC Light Controller

I've been disappointed with the RC light controllers available on the market and decided to make my own. It works pretty well in my opinion so I decided I'd post it as an open source project. There is a bill of materials, Eagle Cad files, Arduino code, etc... You can also order a printed PCB from OSHPark, the details are below.

I'll go into a more thorough discussion of the features in follow-up posts, but basically these are the specs as of now:
- Presently tailored for RC cars
- Control up to 8 light circuits, 500 mA current each.
- At a minimum requires a throttle channel but can also accept the steering channel as well as a third channel for more functionality.
- Each light can respond to various "States": forward, reverse, stopped, stopped after delay, accelerating, decelerating, braking, right turn, left turn, and any of up to 5 positions for the channel 3 switch if attached.
- For each light in each State you can set the value you want it to be: On, Xenon-on effect, Off, Fade off effect, Blink, Soft Blink, Fast Blink, Backfire effect, or Dim (Xenon, Fade Off, Soft Blink, and Dim only available on 6 of the 8 lights).
- All the settings for all the States for each light is called a "Scheme". You can have as many Schemes as you like and you can switch between them from your controller using nothing but the steering channel.
- All the settings/states/schemes are set in the Arduino code, but they are in tabular format and there is an example already there so it is quite simple to do. Ideally someone would write up a nifty Windows app to do it...
- The circuit is all through-hole components so while it is not terribly small it is easy to solder.
- Requires an Atmega328 with the Arduino bootloader pre-installed.
- Code can be updated on the board with any of the common FTDI cables.
- Works with both 5 and 6-volt RC systems.
- Compatible with the inexpensive YeahRacing LED light cables purchased from RCMart or wherever.
- Can be used as a failsafe - all the lights blink like crazy if radio signal is lost.

This post will always have the most up-to-date source files, though some of the pictures may show older versions.

How to get one: I don't sell these. But you can buy bare boards from OSH Park, and all the components needed to assemble it, from DigiKey (use the attached bill-of-materials below). For more information on the hardware, scroll down a few posts.

For those wanting to experiment with an Arduino Nano, see this post.

Now on GitHub!: The most recent code will always be included as an attachment to this post, but you can also grab the source from our GitHub page - or submit a pull request if you've made improvements!

See this great video for an example of OSL in action. This is by Sergio from Switzerland,
he also contributed the code for the Xenon and backfiring effect.
Anonymous Drift Team & SRCDF (3 min 4 sec)

Last edited by LukeZ; Aug 21, 2020 at 09:28 AM. Reason: Update firmware to 2.21
Sign up now
to remove ads between posts
Nov 14, 2011, 09:29 PM
Registered User
LukeZ's Avatar
Thread OP
Basic Theory of Operation

Explanation of States
Each light can respond to 13 different conditions, or states. These are:
- Channel 3 - Up to 5 positions (1,2,3,4,5)
- Forward
- Reverse
- Stop
- Stop Delay (set the delay time in the UserConfig tab, default is 30 seconds)
- Brake
- Right Turn
- Left Turn
- Sharp acceleration
- Sharp deceleration

State Notes:
- At the very least, you must plug in the Throttle channel. Steering and Channel 3 are optional
- If you do not plug in a steering channel, then obviously you will never encounter the Right Turn & Left Turn States
- If you do not plug in a third channel, the program will only use the values specified in Position 1 as the default. In other words, it acts as if you have a one-position switch that is always in Position 1
- If your third channel is only a two-position switch, the program will switch between Position 1 and Position 5
- If your third channel is a three position switch, you can select Position 1, Position 3, and Position 5. Positions 2 and 4 will be ignored.
- If your third channel is a 5 position switch, obviously then you can select all five.
- For the third channel to operate correctly, and in fact, for all channels to operate correctly, you need to run through the Radio Setup once. This should be the very first thing you do when you first complete your board.

Explanation of Settings
For each light, you need to specify what will happen in each state - this is called the setting. The possible settings are:
- ON
- XENON (a special turn-on effect)
- FADEOFF (turns off slowly)
- BLINK - Will blink at the rate set in the UserConfig.h
- SOFTBLINK - Same rate as BLINK, but lights fade in and out. Fade time can be set in UserConfig.h
- FASTBLINK - Will blink at the fast rate set in UserConfig.h
- DIM - Will dim to the level set in UserConfig.h
- BACKFIRE - special backfiring effect intended to be used with the decelerating State
- NA - Use this when you don't want a state to do anything.

Settings Notes:
- For the positions determined by Channel 3, it is best to specify an explicit setting, in other words, you usually don't want them to be NA (set them ON, OFF, whatever).
- The opposite is true for all the other states - if you don't want anything to happen during the Forward state for example, set it to NA, not OFF. Otherwise, your light will turn off when going forward.
- Some settings will only work on the first six lights (1-6): SOFTBLINK, DIM, FADEOFF, and XENON. These lights are marked on the board with a star (*). If you try to use those settings on lights 7 or 8 nothing bad will happen, but the effect won't show, the lights will just turn on or off.

Explanation of Schemes
A Scheme defines every setting for every light in every state. You may have multiple Schemes, the code defaults to 2 schemes.

Instructions - Software Setup in Arduino
This project assumes you are familiar with the Arduino IDE and know how to open a sketch, and load it onto an Arduino. After you download the Zip file from the post above (or from GitHub):

1. Put the folder named "OpenSourceLights" into your Arduino "Sketches" folder. This may be a place you specified or it may be the default location that Arduino chose when you installed the IDE. If you are unsure where Arduino thinks your Sketches folder is:
- Open the Arduino IDE
- Go to File -> Preferences
- At the top of the popup screen that appears, look at the path under the heading "Sketchbook location". This shows you where your Sketches folder is.

2. Also put the folder named "libraries" into your Sketches folder. There may already be a libraries folder there, if so just overwrite it (overwriting in this case will simply add the new libraries).

3. Compile and upload
- Open the Arduino IDE
- Make sure you have the correct board selected. Go to Tools -> Board -> "Arduino Duemilanove or Diecimila"
- Make sure you have the correct processor selected. Go to Tools -> Processor -> "ATmega328"
- Make sure you have the correct com port selected (the one hooked up to your board) - this is in Tools -> Serial Port
- Click the "Upload" button to send the code to the board (this is the icon with the arrow facing right)

The OSL board doesn't have onboard USB so you need to load your scketches using an FTDI cable like one of these: (An FTDI cable is basically a USB-Serial converter used for communicating with microcontrollers)
SparkFun FTDI cable: FTDI Cable 5V (~$18)
Adafruit FTDI cable: USB FTDI TTL-232 cable (~$20)

OR, what I have recently found to be more useful, use a standard USB cable with one of these FTDI breakout boards:
SparkFun FTDI breakout: FTDI Basic Breakout (~$15)
Adafruit FTDI breakout: FTDI Friend (~$15)
You can leave the breakout board plugged into your OSL circuit while you are doing your testing and setup. It is much easier to plug and un-plug a USB cable than the FTDI connector. Once you are done with setup and OSL is finally installed in your car, you can remove the FTDI breakout board and use it for your next project.

Note: the FTDI must be plugged in correctly. Align the Black wire of your FTDI with the "BLK" mark on the OSL board and the Green wire with the "GR" mark.

- - - - - - -

Ok, once you open the sketch you will see several tabs along the top. At the very left is the main loop code and that tab is called "OpenSourceLights". Most people don't need to mess with that. However you will want to look at the next two tabs:

AA_LIGHT_SETUP - tab in the Arduino IDE
EDIT: Nick Segers has made an Excel file that will automate the generation of this entire section. Download it from the list of files in the first post above.

This is where you specify what happens to each light for each state as well as where you can create multiple schemes. Examples are provided in the code comments, and it's pretty self-explanatory. Basically each scheme consists of a table. Each table has 8 rows, one for each of the 8 lights. For each row there are 12 columns representing the 12 states. The values in the table are whatever setting that light will be in for that state. Remember the possible settings listed above (you must type them in all upper-case).

See below for an example:

//     Pos 1      Pos 2      Pos 3      Pos 4       Pos 5     Forward     Reverse     Stop      Brake     Right Turn     Left Turn      Accelerating   Decelerating
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------
    {  OFF,       OFF,       XENON,     XENON,      XENON,     NA,         NA,         NA,       NA,       NA,            NA,           FASTBLINK,     NA       },  // Light 1    -- Headlight One - XENON on when Channel 3 is in the middle-to-far position - FASTBLINK on overtaking
    {  OFF,       FADEOFF,   ON,        ON,         ON,        NA,         NA,         NA,       NA,       NA,            NA,           NA,            NA       },  // Light 2    -- Headlight Two - ON when Channel 3 is in the middle-to-far position, fadeoff otherwise
    {  OFF,       OFF,       DIM,       DIM,        DIM,       NA,         NA,         NA,       ON,       NA,            NA,           NA,            NA       },  // Light 3    -- Brake Light - ON when Braking, otherwise DIM if Channel 3 is in the middle-to-far positions
    {  OFF,       OFF,       DIM,       DIM,        DIM,       NA,         NA,         NA,       NA,       BLINK,         NA,           NA,            NA       },  // Light 4    -- Right Turn Lights - BLINK when turning Right, otherwise DIM if Channel 3 is in middle-to-far positions
    {  OFF,       OFF,       DIM,       DIM,        DIM,       NA,         NA,         NA,       NA,       NA,            BLINK,        NA,            NA       },  // Light 5    -- Left Turn Lights - BLINK when turning Left, otherwise DIM if Channel 3 is in middle-to-far positions
    {  OFF,       OFF,       OFF,       OFF,        OFF,       NA,         ON,         NA,       NA,       NA,            NA,           NA,            NA       },  // Light 6    -- Reverse Lights - only on when moving in Reverse
    {  OFF,       OFF,       OFF,       OFF,        OFF,       NA,         NA,         NA,       NA,       NA,            NA,           NA,            BACKFIRE },  // Light 7    -- Muffler Light - special backfire effect when decelerating
    {  OFF,       OFF,       OFF,       OFF,        OFF,       NA,         BLINK,      NA,       NA,       NA,            NA,           NA,            NA       }   // Light 8    -- Backup hazards - blinks when car is in reverse.
Don't worry about the prog_int16 stuff or anything that looks confusing. Just change the values (OFF, ON, etc...) remembering to spell things correctly and keeping a comma between each one.

AA_User_Config.h - tab in the Arduino IDE
This is where various configurations are made, such as how many schemes do you want to use, does your speed control use a double-tap for reverse, debugging options, etc... Look it over, many settings can be tweaked to make the code behave appropriately for your car.

Instructions - Power Considerations when Programming
Whenever the OSL board is plugged into your computer via the FTDI/USB cable, it is receiving 5 volts from your computer. Whenever the OSL board is plugged into your receiver, and your receiver is powered (by the car battery through the ESC), then it is receiving 5 volts from your receiver.

Although I have had both sources connected simultaneously and have yet to experience any bad results, it is really best to power the board from one source only at a time. If you are going to connect the OSL board to your computer, disconnect your car battery first!

The other thing to point out - when you power the OSL board from the computer, the 5 volts from the USB will power not only the OSL board but also your receiver, your servos, lights connected to the OSL, etc... A computer USB port is current limited, usually at 500mAh. The computer won't source more than this in order to protect itself. If you have a lot of servos and other peripherals connected, then your receiver may attempt to draw more than 500mAh. This won't hurt the computer, the computer will stop at 500, but what happens is that the receiver and/or the OSL can "brown out" and reset. If that happens, your programming may not work.

So if you get brown-outs you can try disconnecting your servo or other attachments. You shouldn't need to disconnect your motor - so long as you don't plug in your car battery, the motor will not be powered (speed controls do not power their motors from the 5 volt receiver supply!)

Instructions - Radio Setup
When you have a new model you need to run through the Radio setup routine once so the Light Controller can recognize the channels on your radio, which direction is forward and backwards, etc... You only need to do this once, and it doesn't have anything to do with the light settings. You can upload new light settings to your controller as many times as you want and your radio settings will remain unchanged.

You can run through the radio setup mode without a computer connection; the green and red LEDs on the board will indicate to you what the various steps are (described below). However, you can also perform the radio setup while connected to your computer. If you open a Serial Monitor in Arduino (under the Tools menu) you can see information displayed on your computer screen for each step of the radio setup. Either way the setup is the same, but the helpful messages on the computer may be easier.

NOTE: If you decide to do your radio programming with the OSL connected to your computer, please remember to unplug your car battery first! If you have problems with the OSL or the receiver "browning out" during radio setup, you can also unplug your steering servo (but leave the steering channel connected to the OSL board).

NOTE: If you decide to do your radio programming without a connection to the computer, then you do need to keep your car battery plugged in, otherwise you will have no power to the car. But in this case, you will probably want to disconnect your motor from the ESC! The radio setup requires you to move the throttle back and forth, so you don't want your car running off the bench!

In software v2.02 and later, too enter radio setup mode simply hold down the button on the board for two seconds. In software v2.01 and earlier, you must hold down the button while power is being applied and keep holding for two seconds. That is much more difficult to do so it is recommended you use v2.02 or later.

Once radio setup begins you will see the Red LED on the board light solid. The Red LED will stay lit for the duration of setup mode, and the Green LED will blink to indicate which stage you are in. There are three stages to the Radio setup. At the beginning of each stage the Green LED will blink slowly once, twice or three times (depending on if you are on the first, second or third stage). This means get ready for the upcoming stage. Each stage lasts about ten or fifteen seconds. While it is in the given stage, the Green LED will continue to blink quickly once, twice or three times, again depending on the stage. This is the sequence, and what you need to do:

Stage 1
Green LED blinks slowly once. This tells you get ready for stage 1. Then while it is in stage 1 it will continue to blink quickly 1 time. During stage 1, the controller is memorizing the minimum and maximum travel values of your radio. So while it is blinking 1 time over and over again, move your throttle stick, steering wheel, and channel 3 switch (if used) back and forth to their extreme limits. The controller will recognize these and save the values.

Stage 2
Green LED blinks slowly twice. This tells you get ready for stage 2. While it remains in stage 2 the Green LED will continue to blink quickly 2 times over and over. During stage 2, the controller is memorizing your center points. Release your throttle, release your steering, and if you are using a 3- or 5-position switch on Channel 3, set it to the middle position. If you have a 2 position switch on Channel 3, set it to ON. Leave the controls untouched during this phase and the controller will memorize what the center values are.

Stage 3
Green LED blinks slowly three times. This tells you get ready for stage 3. While it remains in stage 3 the Green LED will continue to blink quickly 3 times over and over. During stage 3, the controller will detect any channel reversing you may have. While in stage three, hold your throttle stick to full forward, hold your steering wheel to full right, and if you are using Channel 3, set the switch to the ON position (if 2 position switch) or to the 3rd position (if you have a 3 position switch) or to the 5th position (if you have a 5-position switch). Hold these things in place while the LED continues to blink 3 times.

Radio Setup - Complete
After the three stages are complete the Green LED will turn on and stay lit for 3 long seconds, and then both it and the Red LED will turn off. Radio setup is now complete, and you shouldn't need to run it again, unless your trims change drastically or you move the controller to a new model.

Instructions - Changing Schemes on the Fly
We have seen above that you can program multiple lighting schemes into the Arduino code. You can change from scheme to scheme from your transmitter. Note: the program will only let you enter change scheme mode if the car has been stopped for several seconds.

Here is a written description how to do it, but see the video below for a visual example: To enter Change-Scheme-Mode from the transmitter, turn your steering wheel back and forth all the way to the ends quickly at least six times (three to the left and three to the right). To acknowledge that you have entered Change-Scheme-Mode, every light hooked up to the controller as well as the onboard indicator LEDs will "twinkle" (or blink very rapidly) for a few seconds. This lets you know that you're in Change-Scheme-Mode. After that, all the lights will blink out the number representing the currently selected scheme (if you are in scheme 2 for example, the lights will blink twice, then pause, then blink twice again, over and over). To change schemes, turn the steering wheel over for a second. If you turn it to the right it will increment to the next scheme, and if you turn it to the left, it will go back to the previous scheme. Each time you arrive at a new scheme the sequence of blinks will change to indicate which one you are on.

To exit the change-scheme-mode and save the selected scheme as the active one, hold the steering wheel all the way over (doesn't matter which direction) and hold it there for two seconds. All the lights will twinkle again and it will save that scheme as the active one. It will remember this setting even when power is lost, and next time you power up it will be on the same scheme as you left it. Of course if you want to change it again it is quite easy, using only the steering wheel.

Last edited by LukeZ; Aug 24, 2017 at 12:23 PM.
Nov 14, 2011, 09:30 PM
Registered User
LukeZ's Avatar
Thread OP
Instructions - Hardware Notes

Hardware Versions
v1.3 (11/14/2011): The original board posted was v1.3, which was later found to have the 2N2222 transistors wired backwards from what they should be (collector and emitter pins were swapped). Strangely they still worked fine and I built nearly a dozen versions this way that had no problem. If you have a v1.3 board, and have not yet assembled it, you should rotate the transistors 180 degrees from what the silkscreen shows. Place them on the board with the flat of the transistor facing the Arduino chip. This will ensure the pins are in the correct locations.

v1.4 (4/28/2014): Fixed the orientation of the LED transistors.

v1.5 (9/18/2014): Slightly enlarged the drill holes for the JST sockets for the LED plugs. The OSH Park boards were just a tad too tight, although the same size was fine from BatchPCB (no longer in business).

v1.6 (10/05/2014): Increased the size of all pads, to make soldering easier.

v1.7 (10/05/2015): Added jumper to select between Rx power or a secondary power source for the LEDs. Transistors were changed from 2n2222 to BC33725. Base resistor value was dropped to 562 ohms. These changes allow approximately 500mA to be safely driven through each transistor (if your power supply can handle it). Also increased the size of the pads yet again, they were still too small to solder!

Buying Bare Boards
I do not sell boards myself, but you can purchase them from OSH Park: LukeZ's Open Source RC Lights v1.7
(Here is an SMD version for those inclined - designed by irun4fundotca, see this post for details: OpenSource Lights v1.6SMD)

OSH Park requires a minimum order of 3 boards. At the time of this update, the cost for 3 was roughly $19 shipped. I don't make any money on this, the price is set by OSH Park and the money goes to them.

Alternatively, since this is open source, you are free to take the Eagle files posted above to your favorite fab house.

Atmega328 Chip
Assembling the board is simple and straightforward. Programming the chip using the Arduino IDE is as easy as programming any other Arduino - that is, once you get the Arduino bootloader onto your chip! This is not so simple. There are tutorials online for how to do this, if you are interested. If not, never fear: you can buy Atmega328 chips with the bootloader already installed, here are two sources:
SparkFun ATmega328 with Arduino Optiboot (Uno)
Adafruit Arduino bootloader-programmed chip (Atmega328P)

Price is about the same for both, around $6. Not having to worry about getting the bootloader on the chip will save you a lot of trouble. Just build the circuit, plug in your FTDI cable (see the previous post), and this will look just like an Arduino to the IDE.

Powering the Board
Starting with board revision 1.7 the user has two options for LED power. In either case, the onboard chip always gets power from your radio receiver through the channel input cables, and this voltage should not exceed 6 volts.

Almost all users will want to power the LEDs from their receiver as well. To accomplish this, you must remember to solder the small SMD jumper on the top of the board labelled "Rx Pwr". Simply put a blob of solder over both pads so they are bridged (see picture below).

For those users who may wish to drive their LEDs with a voltage greater than 6 volts, leave the "Rx Pwr" jumper alone. Instead install two through-hole header pins on the board in the location labeled "Alt Pwr." Now attach your alternative power source to these headers using a Dupont or JST plug.

The least expensive LEDs that already come soldered to cable assemblies with JST plugs are the ones from YeahRacing (series LK-0008 for 3mm LEDs, LK-0009 for 5mm LEDs). Even better the YeahRacing LEDs come with current-limiting resistors already installed in the cable so you don't need to include them on the board (resistors R11-R18 are the limiting resistors for outputs 1-8, if you don't need one just jump across the resistor position on the board with a small piece of wire). Other brands that work are 3Racing and Tamiya but these do not come with current limiting resistors (so install one on the board), and the Tamiyas are overpriced and usually have different ratings. All three of these brands use the same plugs and the same polarity, which this board is designed to be compatible with.

The YeahRacing lights can be purchased in many places, my favorite is RCMart. Here is their YeahRacing LED list: Click Here.

The YeahRacing LEDs come in 3mm and 5mm versions in all kinds of colors from Red, White, Blue, Green, Yellow, and Orange. They come as a string of two LEDs wired in parallel and they run about $3 bucks a set.

However you can use whatever LED you like and if you look in the Bill of Material spreadsheet you will also see part numbers of the JST plugs at DigiKey for making your own cables. Even better, buy pre-made cables on eBay for cheap, about 50 for $10. Do a search for something like "PH Female Connector Leads", something like these: PH 2.0mm Pitch 2 Pin Female Connector with 26AWG 300mm Leads Cable

Current Capacity
Tests were done with the OSL board using the transistors specified in the schematic (BC337) and it was found each output could source approximately 500 mA of current. Most LEDs draw far less than this (typically somewhere in the 20-40 mA range), so you will need to provide series limiting resistors to prevent them burning out (see below). But if you are trying to power a higher current LED or multiple LEDs in parallel, know that you can get up to 500 mA per output.

LED Current Limiting Resistors
As mentioned above most LEDs draw very little current and in order to prevent them being burned out you will need to install a current-limiting resistor. These are resistors R11-R18 on the schematic. The value of the resistor depends on the LEDs you are using and the amount of current you want to allow.

Typically the LEDs available in the RC Car market today come in a string of two LEDs per cable, wired in parallel. Unfortunately specs are rarely listed for any of these products. Testing has found that a series resistor of 100 ohms is almost always adequate for these arrangements, even if operating at 6 volts. The YeahRacing LEDs are unique in that they already come with a current-limiting resistor installed inline so these don't need an extra resistor on the board (R11-R18 are the current limiting resistors on the board, just jumper over any you don't need).

If you wish to maximize the light output you may go to a lower resistor, say 75 or even 50 ohms. However be sure to measure current draw with a meter - you shouldn't usually exceed 20mAh per LED, which would be 40mAh total for a string of two LEDs in parallel.

If you want to be extra safe, a 150 ohm resistor could be used.

If you make your own LED strings or know the specs of the LED you are using, you can calculate the resistor value precisely using free online calculators, such as this one: LED Resistor Calculator.

EDIT: I recently found these very cool current limiters sold for cheap by Hansen Hobbies. They have a 10mA and a 20mA version, and they are presently less than a dollar apiece. Most LEDs are rated at 20mA. If you want to use one of these, just wire it inline with your LED wire leads, and jumper across the limiting resistor spot on the board.


Firmware Wish-List / To-Do
  • Simultaneous rather than sequential light updates. Presently if two outputs need to be dimmed, for example, the first will dim and then the second, but not together. This is because we update each light in turn. For quick actions like on/off there is no noticeable difference, but for dimming, xenon, softblink, and others the current system is poorly arranged. Probably the approach I would take is to split up those time-consuming effects into discrete steps that are handled at short intervals, either through polling or perhaps with a timed interrupt using an output compare register on one of the timers.
  • Add "short" and "long" states to Channel 3 input, meaning one action if Channel 3 goes to a certain position briefly and a different action if it stays at a certain position longer. This perhaps only makes sense with a 3-position switch where center is off and the two ends can each have long and short presses.
  • Add "next" and "previous" states to Channel 3, ie, a state that occurs when you move the Channel 3 switch to a certain position once, and then a new state when you move the switch to that position twice ("next"), etc... Then when you move the Channel 3 switch to the other position, cycle back down through the states ("previous"). We would want at least 5 states but I suppose you could do more. This is not the same functionality as what already exists for a 5-position switch - rather this would let you control 5 positions or more with a simple 3-position switch. Combined with "short" and "long" presses mentioned above, a simple 3-position switch could be made to do quite a lot. See the discussion starting in post 645 for more.
  • Use pin-change interrupts to read incoming PWM pulses for improved performance. See the Scout ESC code on GitHub for a potential example. That one uses external interrupts of which the ATmega328 only has two, so OSL will have to use the more generic pin-change interrupts, but the approach will be roughly the same. Using interrupts would eliminate the need to poll the PWM input pins.
  • Create a Windows program that can communicate with the OSL, instructing it to update settings and schemes which the user selected in the Windows GUI. This would eliminate the need for uses to modify the source code in order to change settings. This would require moving Schemes and User Config settings to EEPROM from program memory (PROGMEM) where they are now. One downside to this change is that users who did simply want to change settings in code would probably face more hassle.

Hardware Wish-List / To-Do
  • More input channels
  • Servo outputs
  • Sound capabilities
  • Ability to wash dishes
Last edited by LukeZ; May 30, 2017 at 11:00 AM.
Nov 14, 2011, 09:30 PM
Registered User
LukeZ's Avatar
Thread OP
Here are a couple videos that show the device in operation.

Open Source RC Lights - Intro (5 min 58 sec)

Open Source RC Lights - Radio Setup (4 min 8 sec)

Open Source RC Lights - Example (2 min 1 sec)
Last edited by LukeZ; Oct 05, 2014 at 04:49 PM.
Dec 09, 2011, 03:34 AM
Registered User
I have not started with Arduino yet, but this looks like a good reference when I'm ready.
Dec 11, 2011, 06:55 AM
Registered User
Hi Luke

it's possible to upload this program in Arduino Pro Mini 328 ?
Dec 11, 2011, 01:24 PM
Registered User
LukeZ's Avatar
Thread OP
Yes, the code should work fine on the Pro Mini 328. It is the same processor used here just in a different package.
Dec 19, 2011, 09:50 PM
Jsutherland8's Avatar

Open Source Lights - Arduino based RC Light Controller

Ya this is great.......

Like those ARDUINO projects.
Last edited by Jsutherland8; Dec 19, 2011 at 11:56 PM. Reason: + ?
Dec 19, 2011, 11:54 PM
Yes, "that" Karl...
karl k's Avatar
Excellent work. I really like the way you have the schemes set up.

Very well thought out. Keep up the good work.
Jan 16, 2012, 05:22 PM
Registered User
Could this be build on arduino board itself? I'm starting with it myself. Eventually I'd like a setup similar to yours but with few changes. I want hazard lights to come on say after 10sec standstill and a flame from exhaust - say 2-colour led flashing after letting off throttle. Is that doable? Thanks
Jan 17, 2012, 04:33 PM
Registered User
LukeZ's Avatar
Thread OP
Fallaci - yes, you could use a standard Arduino board, you will just need to add the transistors for controlling your lights (or you can use the Arduino pins directly if you keep the current within limits!).

The code can be modified to do anything you like. I don't really have time to make many modifications right now but you are familiar with Arduino programming just take a look at the code, I think you will find it rather easy to add the features you are talking about.

Apr 05, 2014, 03:21 PM
Registered User
Hi Luke,

great idea. Do you sell the bare boards? batchpcd does not worl


Apr 05, 2014, 10:06 PM
Quad Crasher
kad's Avatar
Originally Posted by HongKongPfui
Hi Luke,

great idea. Do you sell the bare boards? batchpcd does not worl


You can get boards from OSH Park. You'll have to order 3, but it's only $18.50 for the set.

Apr 10, 2014, 08:21 PM
Registered User
LukeZ's Avatar
Thread OP
Thanks Kad for responding. Mike, you're right, BatchPCB closed down and was bought out by OSH Park. You can order the boards from the link Kad provided. EDIT: To get the latest version, you should actually order from the link posted above in the Hardware Notes section. This fixes an issue with the transistor pins and has a cleaner silkscreen.

Also the instructional videos had gotten removed, but I reposted them, you will see them above.

To answer your question about whether I am providing boards: no, you should buy them from OSH Park.

HOWEVER - I do have four, assembled and tested boards which I will give away for free. I will mail them to the first four people who contact me via PM, BUT you must also indicate to me you have an actual project to use it in and you must commit to post your results here in this thread! If you just have a general idea of vague testing you would like to do, please do not request one. I want to see these end up in actual RC models.

Please send your requests to me via PM so we don't clutter this thread with it.
Last edited by LukeZ; Apr 28, 2014 at 12:37 PM.
Apr 10, 2014, 10:03 PM
Registered User
nice project

but I think it lacks a honking.

add channel for speaker " Beepppppp"

and when turn left or turn right or reverse , speaker also will work as Led blink: Beep....beep........beep

Quick Reply

Thread Tools

Similar Threads
Category Thread Thread Starter Forum Replies Last Post
Discussion Arduino Nav Light Controller chuck99z28 DIY Electronics 65 Mar 23, 2019 06:25 PM
Discussion Linux Based Open Source Control System (OSRC) Gizmoman31 UAV - Unmanned Aerial Vehicles 10 Mar 18, 2012 11:26 AM
Idea Linux Based Open Source Control System (OSRC) Gizmoman31 Aerial Photography 9 Mar 18, 2012 11:25 AM
Question Any open source ARM based multi roter heli? ctrl Multirotor Drone Talk 7 Jul 20, 2011 05:44 AM