How to Control Arduino With RC Receiver in 10 Minutes

Introduction: How to Control Arduino With RC Receiver in 10 Minutes

About: I love the song Come Get Your Love

In this tutorial I will be showing you how to control your Arduino with a RC receiver and transmitter. This is a very easy set up and only take about 10 minutes depending on how many things you are controlling. In this tutorial when the rudder stick is set left or right it will make the servo sweep (100 degrees to 0 degrees and back) but you could make it do more then just that.

Step 1: Resources


Arduino Uno or Mega

R/C controller and receiver (I'm using an expensive controller because I fly petrol aircraft)

(only needs to be cheapo)

servo (for example)

Step 2: Wiring

Ok you need to plug a wire from pin 7 to ch3 (and then if you want to add more channels you just need to plug in more pins) on the receiver at the top for the information line. Then plug positive which is the middle one to 5v on Arduino and then GND to GND.

The servo for this example is connected to pin 9 so hook it in and then GND to GND and vcc to 3.3v just for now or you can plug it into a separate battery pack.

Thats all the wiring for this tutorial

Step 3: Code

You code change this code to control motors or make it that the servos are more precise on where they move, but this is just for an example so you guys can get started, if you change or use this code please mention me in that i wrote out most of the code except that Nick Poole wrote out the pulse in part.

// RC PulseIn Serial Read out By: Nick Poole

//extended By Jason Mclaughlin


#include <Servo.h> // for servo in example

Servo myservo; //servo entity

int pos = 0; //position for servo

int ch1; // Here's where we'll keep our channel values

int ch2;

int ch3;

void setup() { myservo.attach(9);

pinMode(5, INPUT); // Set our input pins as such

pinMode(6, INPUT); pinMode(7, INPUT);

Serial.begin(9600); // Pour a bowl of Serial


void loop() {

ch1 = pulseIn(5, HIGH, 25000); // Read the pulse width of

ch2 = pulseIn(6, HIGH, 25000); // each channel

ch3 = pulseIn(7, HIGH, 25000);

Serial.print("Channel 1:"); // Print the value of

Serial.println(ch1); // each channel

Serial.print("Channel 2:");


Serial.print("Channel 3:");


if ((ch3 >= 1500) && (ch3 <= 1600)){// the center postion for controller


pos = 90;//set servo to center

myservo.write(pos); // set to pos which is 90



Serial.println("not between");

for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees

{ // in steps of 1 degree

myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(1); // waits 1ms for the servo to reach the position


for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees


myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(1); // waits 1ms for the servo to reach the position



delay(100); // I put this here just to make the terminal

// window happier


Step 4: Test

You made need to change this part of your code:

if ((ch3 >= 1500) && (ch3 <= 1600)){// the centre position for controller

Because the centre of your controller may have a different pulse output, to change it open serial monitor window and centre your stick it will have a number and that is your centre it may change, mine change randomly buy 100 so that is why it is between 1500 and 1600 because those are my centre numbers.

Have fun, I hope you liked this tutorial, because I was stuck with this and wanted to control my Arduino as well and I have figured it out and shared for everyone.


Be the First to Share


    • Science Fair Challenge

      Science Fair Challenge
    • Digital Fabrication Student Design Challenge

      Digital Fabrication Student Design Challenge
    • Tinkercad to Fusion 360 Challenge

      Tinkercad to Fusion 360 Challenge



    1 year ago

    What is the RC receiver that you're using here? I couldn't find it on Amazon((
    Thank you for your help!


    2 years ago

    Wow , man this really helped me out a lot with my personal rc project i am working on.
    4-Tec in the fast Lane.


    Question 3 years ago

    Sir its very nice and helpful for me. I need servo flapping code for two servo motors , I am using Arduino UNO as a controller at receiver end. I want as moves throttal the speed of flapping of servos increases or decreases.