Devices & Components
Arduino Uno Rev3
Single row female header 2 x 4 pin
22 gauge solid core wire
Arduino Proto Shield
Linear Regulator (7805)
IR Receiver EK8460
Dual H-Bridge motor drivers L293D
Heatsink + Insulator/Mounting Kits for L7805
3 mm LED: Red
Tactile Switch, Top Actuated
DC Motor, 12 V
Resistor 1k ohm
Smart Car Wheels
Electrolytic Capacitor, 10 µF
Hardware & Tools
Soldering iron (generic)
Helping Hand Tool, with Magnifying Glass
Solder Flux, Soldering
Plier, Needle Nose
Solder Wire, Lead Free
Software & Tools
Arduino IDE
Project description
Code
IR REMOTE CONTROLLED CAR - l293D H-BRIDGE
arduino
A remote controlled 2 wheel car that uses an L293D H-bridge, 2 3V-6V DC geared motors, an IR receiver and a remote.
1/* 2 IR_remcon_car_L293D 3 4 A remote controlled 2 wheel car that uses an L293D H-bridge, 5 2 3V-6V DC geared motors, an IR receiver and a remote. 6 7 The circuit: 8 * IR Receiver pin 7 9 * L293D H-bridge pins 10,9,4,5,2,3 10 11 Created 17 April 2022 12 By VideotronicMaker 13 https://videotronicmaker.com/ 14 15 based on the IR remote controlled car sketch 16 by Hosyond for the Hosyond Smart Car Kit 17 18*/ 19 20#include <IRremote.h> 21int RECV_PIN = 7; 22IRrecv irrecv(RECV_PIN); 23decode_results results; // use IRrecvDemo from IRremote library by Ken Shirriff to get your remote codes 24#define REM_FW 0x00FF629D // defining remote button forward 25#define REM_RV 0x00FFA857 // defining remote button reverse 26#define REM_LF 0x00FF22DD // defining remote button left 27#define REM_RT 0x00FFC23D // defining remote button right 28#define REM_STOP 0x00FF02FD // defining remote button stop 29const int LFT_EN=5; // Left Enable and Motor speed value from 0-255 on pin 5 30const int RGT_EN=9; // Right Enable and Motor speed value from 0-255 on pin 9 31const int LEFT_MC1F=12; // defining pin12 left reverse 32const int LEFT_MC2B=6; // defining pin6 left forward 33const int RIGHT_MC1F=2; // defining pin2 right reverse 34const int RIGHT_MC2B=3; // defining pin3 right forward 35byte LPWM_val = 225; // set speed of left motor using pwm (Set any value between 0-255) 36byte RPWM_val = 225; // set speed of right motor using pwm (Set any value between 0-255) 37void M_Control_IO_config(void) // Motor Control IO Function 38{ 39 pinMode(LEFT_MC1F,OUTPUT); // declare pin 4 to be an OUTPUT 40 pinMode(LEFT_MC2B,OUTPUT); // declare pin 5 to be an OUTPUT 41 pinMode(RIGHT_MC1F,OUTPUT); // declare pin 2 to be an OUTPUT 42 pinMode(RIGHT_MC2B,OUTPUT); // declare pin 3 to be an OUTPUT 43 pinMode(LFT_EN,OUTPUT); // declare pin 10 (PWM/speed value) to be an OUTPUT 44 pinMode(RGT_EN,OUTPUT); // declare pin 19 (PWM/speed value) to be an OUTPUT 45} 46void Set_Speed(byte Left,byte Right) //Function to set the speed.byte refers to 47{ //the integer value set above at LPWM_val and RPWN_val 48 analogWrite(LFT_EN,Left); 49 analogWrite(RGT_EN,Right); 50} 51void forward() // Function to move forward 52 { 53 digitalWrite(RIGHT_MC1F,LOW); 54 digitalWrite(RIGHT_MC2B,HIGH); 55 digitalWrite(LEFT_MC1F,LOW); 56 digitalWrite(LEFT_MC2B,HIGH); 57 } 58void turnRight() // Function to turn right 59 { 60 digitalWrite(RIGHT_MC1F,LOW); 61 digitalWrite(RIGHT_MC2B,HIGH); 62 digitalWrite(LEFT_MC1F,HIGH); 63 digitalWrite(LEFT_MC2B,LOW); 64 } 65void turnLeft() // Function to turn left 66 { 67 digitalWrite(RIGHT_MC1F,HIGH); 68 digitalWrite(RIGHT_MC2B,LOW); 69 digitalWrite(LEFT_MC1F,LOW); 70 digitalWrite(LEFT_MC2B,HIGH); 71 } 72void stopp() // Function to stop 73 { 74 digitalWrite(RIGHT_MC1F,HIGH); 75 digitalWrite(RIGHT_MC2B,HIGH); 76 digitalWrite(LEFT_MC1F,HIGH); 77 digitalWrite(LEFT_MC2B,HIGH); 78 } 79void reverse() // Function to go in reverse 80 { 81 digitalWrite(RIGHT_MC1F,HIGH); 82 digitalWrite(RIGHT_MC2B,LOW); 83 digitalWrite(LEFT_MC1F,HIGH); 84 digitalWrite(LEFT_MC2B,LOW); 85 } 86void IR_Control(void) 87{ 88 unsigned long Key; 89 if(irrecv.decode(&results)) //check if serial port receives data 90 { 91 Key = results.value; 92 switch(Key) 93 { 94 case REM_FW:forward(); //Up arrow button on remote 95 break; 96 case REM_RV:reverse(); //Down arrow button on remote 97 break; 98 case REM_LF:turnLeft(); //Left arrow button on remote 99 break; 100 case REM_RT:turnRight(); //Right arrow button on remote 101 break; 102 case REM_STOP:stopp(); //OK button on remote 103 break; 104 default: 105 break; 106 } 107 irrecv.resume(); //recieve the next value 108 } 109 110} 111void setup() 112{ 113 M_Control_IO_config(); // 114 Set_Speed(LPWM_val,RPWM_val); 115 irrecv.enableIRIn(); //Enable the receiver 116 Serial.begin(9600); //Initialize the serial port, Bluetooth used as serial port, setting baud ratio at 9600 117 stopp(); 118} 119 120void loop() { 121 IR_Control(); // Main code to run repeatedly 122 123}
Downloadable files
IR REMOTE CAR SCHEMATIC
IR REMOTE CAR SCHEMATIC

Comments
Only logged in users can leave comments