Using FM RC Controllers With Arduino

36K1848

Intro: Using FM RC Controllers With Arduino

I recently dug up my old RC transmitter and receiver and thought "How can i control my arduino with this?" so i powered on my scope to see what was going on at the receiver. Sure enough, it was sending out the standard PWM signal that servos use. Now I just needed something to control. What's easy and fun to control? LED's of course.

STEP 1: The Receiver

To begin with i had to figure out what pin on the receiver was the signal pin for the servo. I found an extension cable, there i could clearly see what pin it was.

STEP 2: Connecting It All

Now that i knew what pins were what i connected them to the arduino as follows:

I connected the signal to pin 8
and the led was connected to pin 11 because it has PWM capabilities.

I also connected the receiver ground to the arduinos ground and the 5v out from the receiver to the Vin on the arduino

STEP 3: The Code

Now i started coding, 
I used the pulseIn() function to read the pulses from the receiver and send them to the serial monitor, when i had those values i told the arduino to map those to the PWM values (0-255) and send them to the serial monitor again. 
Now when i moved the joystick on the remote i saw the values change.
Now the last part of the code sends those PWM values to the led and fades it accordingly.

I was happy when i got this working but i needed a bit more challenge, i wanted it to control an RGB LED. 

STEP 4: Connecting the RGB LED

Now, since i wanted RGB i would need to read three lines from the receiver, that was no problem since i already knew what lines to connect to the arduino.
I kept one output on pin 8
the next output was connected to pin 7 
and the last to pin 6



Since i was going to use an RGB led i decided to use my protoboard.

The ground of the led was connected to Gnd of the arduino using a 220 ohm resistor
the red was connected to pin 11
the green was connected to pin 10
and the blue was connected to pin 9

STEP 5: RGB Code

Now I just altered the code a bit to add two more led's and two more inputs.

I also removed the serial commands because i didn't need to debug it anymore.

Then i uploaded it and it worked fine :)


STEP 6: Conclusion

Just imagine the possibilities with this, these don't have to be led's.
It can also control the speed of any motor, just as long as you have different values for different positions of the joysticks you can do virtually anything with this.

The codes are here :)

8 Comments

pulseIn() is not one i have used before. with this logic your doing i should be able to pull the signal off of an IR reciever for a remote control? read the values of what any tv remote sends?
Modern TV Remotes transmit a Serial Bit Stream that encodes the various commands much like a Serial Communications data stream, with repeating "packets" of Start Bits, Toggle Bits, and Data Bits, so long as a button is held. The signal is NOT a constant PWM Duty Cycle such as is the case with an RC transmitter set to a specific setting of thrust/deflection/rotation, etc. So, the answer to your question is "no".
Hmm, that should work, i haven't tried that yet.
Try it and let me know how it worked out?
greetings from Iceland!! :P

Stumbled on this a few months ago, and finally got around to trying it out. thanks a bunch, I am having lots of fun with it. and my scale projects and pranks are going to get some serious upgrades :)

just as a word of warning, I was powering my arduino off a hobby grade lipo and had the rx on 4 alkaline AA. you dont need to have the rx supplying power to the arduino via vin and ground (though it is handy). all you need is the signal. i was running a servo mix and a led and a buzzer and ended up popping the alkalines which also took out the rx. unfortunately the RX for my transmitter i was using is no longer able to be purchase... anywhere.... I should have known to switch over to one of my hobby rx packs that can handle more draw... I pulled a RX out of one of my other RC's to verify that I could run my project as i wanted. but now i'm short an RX for one of my vehicles. oh well now i have an excuse to get that new radio I've had my eye on all season :)

Nice job
Maybe you can help me with something.
Goal subtrim for an antenna tracker
Sometimes an antenna tracker does not pinpoint the right way with the gps data provided
I need 2 PWM inputs 1000-2000 equal to 2 PWM outputs
Trim (with 2 analog pot meters )over the 2 PWM outputs
So I can tweak the tracker servos
Is that possible?
This is awesome! This will be very useful to me! Im building my first quadcopter, I plan to eventually turn it into an arduino based drone with autonomous flight capabilities. This will definitely help me get started in phase 2, creating a basic arduino flight controller. But first I have to complete phase 1.
From what I can gather from your ible here, you essentually made your own servo mixer. depending on joy position you can light up one color individually, or mix them to broaden the color spectrum. sero mixers use this same principle to product the V-tail function on many rc plane that don't have conventional control surfaces. Like a set of Elevons (V-tail} there is a model of twin engine cessna out there that uses Elevons. but you get my drift about your project. could've used this months ago when I was looking for a cheap servo mixing method for my rc heli. ended up buying premade mixers.lol!