| Buy from US | Buy from UK | Buy from DE | Buy from IT | Buy from FR | Buy from ES |
In this tutorial, we will use KOOKYE Smart tank car to make a simple remote controlled smart car. Once the car installation is completed, we will use a Infrared Remote to control the car movements including go forward, go back, left turn and right turn.
There is a IR receiver and remote control. The Arduino board would translate the programs to the predefined behaviors once it receive the IR signals from remote control.
Step 1: Install latest Arduino IDE (If you have Arduino IDE version after 1.1.16, please skip this step)
Download Arduino IDE from https://www.arduino.cc/en/Main/Software?setlang=en , then install the software.
Step 2: Install IRremote library into Arduino IDE (If you have already installed IRremote library, please skip this step)
Download IRremote library from http://www.kookye.com/download/car/IRremote.zip, then import the library into Arduino IDE(Open Arduino IDE-> click Sketch->Include Library->Add .Zip Library)
Step 3:Download Lesson 4sample code from http://www.kookye.com/download/car/tank_robot_lesson4.zip , unzip the download zip file tank_robot_lesson4.zip, you will see a folder called tank_robot_lesson4.
Step 4: Connect UNO R3 board to PC with USB cable, Open Arduino IDE -> click file -> click Open -> choose code “tank_robot_lesson4.ino” in tank_robot_lesson4 folder, load the code into arduino.

Step 5:Choose corresponding board and port for your project,upload the sketch to the board.

Part 1: Define the button that you will be using on IR remote control. (If you use the lesson 1example code, the Arduino IDE Serial Monitor will output its counterpart IR code.)
#define IR_ADVANCE 0x00FF18E7 //code from IR controller "▲" button #define IR_BACK 0x00FF4AB5 //code from IR controller "▼" button #define IR_RIGHT 0x00FF5AA5 //code from IR controller ">" button #define IR_LEFT 0x00FF10EF //code from IR controller "<" button #define IR_SERVO 0x00FF38C7 //code from IR controller "OK" button #define IR_OPENLED 0x00FFB04F //code from IR controller "#" button #define IR_CLOSELED 0x00FF6897 //code from IR controller "*" button #define IR_BEEP 0x00FF9867 //code from IR controller "0" button
Part 2:The function on IR Remote Control
| Button | Function |
| ▲ | go forward |
| ▼ | go back |
| > | turn right |
| < | turn left |
| OK | servo rotate |
| # | turn on LED |
| * | turn off LED |
| 0 | buzzer beep |
Part 3: Define movement name for each button.
enum DN
{
GO_ADVANCE, //go ahead
GO_LEFT, //left turn
GO_RIGHT,//right turn
GO_BACK,//go back
MOVE_SERVO,//move servo
OPEN_LED,//open led
CLOSE_LED,//close led
BEEP,//control buzzer
DEF
}Drive_Num=DEF;
Part 4:Decode the IR signal and translate button code into movment name. void do_IR_Tick()
void do_IR_Tick()
{
if(IR.decode(&IRresults))
{
if(IRresults.value==IR_ADVANCE)
{
Drive_Num=GO_ADVANCE;
}
else if(IRresults.value==IR_RIGHT)
{
Drive_Num=GO_RIGHT;
}
else if(IRresults.value==IR_LEFT)
{
Drive_Num=GO_LEFT;
}
else if(IRresults.value==IR_BACK)
{
Drive_Num=GO_BACK;
}
else if(IRresults.value==IR_SERVO)
{
Drive_Num=MOVE_SERVO;
}
else if(IRresults.value==IR_OPENLED)
{
Drive_Num=OPEN_LED;
}
else if(IRresults.value==IR_CLOSELED)
{
Drive_Num=CLOSE_LED;
}
else if(IRresults.value==IR_BEEP)
{
Drive_Num=BEEP;
}
IRresults.value = 0;
IR.resume();
}
}
Part 5: Execute movement function as per movement name from Part 4.
void do_Drive_Tick()
{
switch (Drive_Num)
{
case GO_ADVANCE:
go_ahead(10);JogFlag = true;JogTimeCnt = 1;JogTime=millis();break;//if GO_ADVANCE code is detected, then go advance
case GO_LEFT:
turn_left(10);JogFlag = true;JogTimeCnt = 1;JogTime=millis();break;//if GO_LEFT code is detected, then turn left
case GO_RIGHT:
turn_right(10);JogFlag = true;JogTimeCnt = 1;JogTime=millis();break;//if GO_RIGHT code is detected, then turn right
case GO_BACK:
go_back(10);JogFlag = true;JogTimeCnt = 1;JogTime=millis();break;//if GO_BACK code is detected, then backward
case MOVE_SERVO:
move_servo();JogFlag = true;JogTimeCnt = 1;JogTime=millis();break;//move servo
case OPEN_LED:
open_led(1),open_led(2);JogTime = 0;break;//open led
case CLOSE_LED:
close_led(1),close_led(2);JogTime = 0;break;//close led
case BEEP:
control_beep();JogTime = 0;break;//control beep
default:break;
}
Drive_Num=DEF;
//keep current moving mode for 200 millis seconds
if(millis()-JogTime>=200)
{
JogTime=millis();
if(JogFlag == true)
{
stopFlag = false;
if(JogTimeCnt <= 0) { JogFlag = false; stopFlag = true; } JogTimeCnt--; } if(stopFlag == true) { JogTimeCnt=0; go_stop(); } } }
V. Hardware Installation:
Step 1: Install expansion board on UNO R3 board.

Step 2: Move the wire connected to pinout(GND,VCC,S) in IR recevier to the counterpart pin in expansion board as the following picture.

Step 3: Turn the switch of expansion board to “1” and “2” position, as the following photo shows.

Step 4: Put two 12865 batteries in battery box and turn the swith of box to “ON”. (If you have finished the above steps on lesson one, please skip these steps)
Step 5:
Press IR controller keys to control the car movements as per predefine code.
Note: Please check the wire connections if the tank car can not work as expected.
Your browser does not support the video tag.
Youtube link–https://youtu.be/xc3YXAJL8mY
DownLoad Url osoyoo.com