Introduction: Remote Controlled Kart

This instructable was created in fulfillment of the project requirement of the Makecourse at the University of South Florida (

I will be detailing the steps taken in completing this project

Step 1: Mechanical Components

The Kart is composed of three parts:

All Components can be 3d printed, care should be taken in designing the dimensions, recommended minimum area of the housing is 7 cm by 13 cm.

The housing covers the electric and Arduino components, while the base acts as were everything is placed on and is support for the wheels. The spoiler is just an accessory.

The back wheels can be 3D printed but it is recommended that they are bought

Step 2:

Step 3:

Step 4: Control System

The electrical components of the Kart are the IR Remote, the IR Receiver, a breadboard, the Arduino hardware receiver, a Dual H bridge DC Stepper, 2 motors and wires.

The Remote sends signals to the IR Receiver which is connected on the breadboard; The signals are sent through the Arduino to the Dual H bridge which controls the motors.

The code is written using the Arduino C++ Interface.

Step 5: CODE

#include //includes IR remote library

int RECV_PIN = 11; //Initialize the IR reciever pin

int val;

#define two 16718055 //Serial moniter decimal values for relevant remote control buttons are defined so they can be used

#define eight 16730805

#define five 16726215

#define four 16716015

#define six 16734885

IRrecv irrecv(RECV_PIN); //Create the receiver object, using a name of your choice.

decode_results results; //Receive IR code. Returns true if a code was received, or false if nothing received yet. When a code is received, information is stored into "results".

#define IN1 5 //Define pin numbers for motors, each motor is controlled by two signals

#define IN2 6

#define IN3 2

#define IN4 3

void setup() {


irrecv.enableIRIn(); //Begin the receiving process.

pinMode(IN1, OUTPUT); //make all motor pins output pins

pinMode(IN2, OUTPUT);

pinMode(IN3, OUTPUT);

pinMode(IN4, OUTPUT);

// put your setup code here, to run once:


void loop() {

if (irrecv.decode(&results)) {

Serial.println(results.value, DEC);

irrecv.resume(); // Receive the next value

if (results.value == two){

digitalWrite(IN2,LOW);//Setting one pin for a motor high and the other low turns on the motor


digitalWrite(IN4,HIGH);//turn on the motor



if (results.value == eight){

digitalWrite(IN2,HIGH);//Setting one pin for a motor high and the other low in the opposite of the original format makes it spin in other direction


digitalWrite(IN4,LOW);//turn on the motor



if (results.value == five){

digitalWrite(IN1,LOW);//Setting all pins low turns off the motor





if (results.value == six){

digitalWrite(IN1,LOW);//turnning on one motor makes your kart turn





if (results.value == four){

digitalWrite(IN2,LOW);//turnning on the other motor makes it turn in the other direction






// put your main code here, to run repeatedly: