Remote Controlled Kart
This instructable was created in fulfillment of the project requirement of the Makecourse at the University of South Florida (www.makecourse.com).
I will be detailing the steps taken in completing this project
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
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.
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() {
Serial.begin(9600);
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(IN1,HIGH);
digitalWrite(IN4,HIGH);//turn on the motor
digitalWrite(IN3,LOW);
}
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(IN1,LOW);
digitalWrite(IN4,LOW);//turn on the motor
digitalWrite(IN3,HIGH);
}
if (results.value == five){
digitalWrite(IN1,LOW);//Setting all pins low turns off the motor
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
if (results.value == six){
digitalWrite(IN1,LOW);//turnning on one motor makes your kart turn
digitalWrite(IN2,LOW);
digitalWrite(IN4,HIGH);
digitalWrite(IN3,LOW);
}
if (results.value == four){
digitalWrite(IN2,LOW);//turnning on the other motor makes it turn in the other direction
digitalWrite(IN1,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
}
// put your main code here, to run repeatedly:
}