Created
November 23, 2023 14:44
-
-
Save Aditya-Jyoti/2e719fdc4828ccb29e2ea782b824391c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <IRremote.hpp> | |
#define FORWARD 24 | |
#define BACKWARD 82 | |
#define LEFTWARD 8 | |
#define RIGHTWARD 90 | |
#define START 71 | |
#define STOP 69 | |
#define IR_RECEIVE_PIN 2 | |
#define MOTOR_LEFT_SPEED 6 // pwm | |
#define MOTOR_LEFT_OUT1 7 | |
#define MOTOR_LEFT_OUT2 8 | |
#define MOTOR_RIGHT_SPEED 11 // pwm | |
#define MOTOR_RIGHT_OUT1 12 | |
#define MOTOR_RIGHT_OUT2 13 | |
#define TURN_DELAY 200 | |
#define MOVE_DELAY 200 | |
void stopLeftWheel() { | |
analogWrite(MOTOR_LEFT_SPEED, 0); | |
} | |
void stopRightWheel() { | |
analogWrite(MOTOR_RIGHT_SPEED, 0); | |
} | |
void startLeftWheel() { | |
analogWrite(MOTOR_LEFT_SPEED, 255); | |
} | |
void startRightWheel() { | |
analogWrite(MOTOR_RIGHT_SPEED, 255); | |
} | |
void leftWheelMoveForward() { | |
digitalWrite(MOTOR_LEFT_OUT1, HIGH); | |
digitalWrite(MOTOR_LEFT_OUT2, LOW); | |
} | |
void leftWheelMoveBackward() { | |
digitalWrite(MOTOR_LEFT_OUT1, LOW); | |
digitalWrite(MOTOR_LEFT_OUT2, HIGH); | |
} | |
void rightWheelMoveForward() { | |
digitalWrite(MOTOR_RIGHT_OUT1, HIGH); | |
digitalWrite(MOTOR_RIGHT_OUT2, LOW); | |
} | |
void rightWheelMoveBackward() { | |
digitalWrite(MOTOR_RIGHT_OUT1, LOW); | |
digitalWrite(MOTOR_RIGHT_OUT2, HIGH); | |
} | |
void moveForward() { | |
startLeftWheel(); | |
leftWheelMoveForward(); | |
startRightWheel(); | |
rightWheelMoveForward(); | |
delay(MOVE_DELAY); | |
} | |
void moveBackward() { | |
startLeftWheel(); | |
leftWheelMoveBackward(); | |
startRightWheel(); | |
rightWheelMoveBackward(); | |
delay(MOVE_DELAY); | |
} | |
void moveLeft() { | |
startRightWheel(); | |
rightWheelMoveForward(); | |
startLeftWheel(); | |
leftWheelMoveBackward(); | |
delay(TURN_DELAY); | |
} | |
void moveRight() { | |
startLeftWheel(); | |
leftWheelMoveForward(); | |
startRightWheel(); | |
rightWheelMoveBackward(); | |
delay(TURN_DELAY); | |
} | |
void startCar() { | |
startLeftWheel(); | |
startRightWheel(); | |
} | |
void stopCar() { | |
stopLeftWheel(); | |
stopRightWheel(); | |
} | |
void setup() | |
{ | |
Serial.begin(9600); | |
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); | |
pinMode(MOTOR_LEFT_SPEED, OUTPUT); | |
pinMode(MOTOR_LEFT_OUT1, OUTPUT); | |
pinMode(MOTOR_LEFT_OUT2, OUTPUT); | |
pinMode(MOTOR_RIGHT_SPEED, OUTPUT); | |
pinMode(MOTOR_RIGHT_OUT1, OUTPUT); | |
pinMode(MOTOR_RIGHT_OUT2, OUTPUT); | |
} | |
void loop() { | |
if (IrReceiver.decode()) { | |
int val = IrReceiver.decodedIRData.command; | |
if (val == FORWARD) { // forward | |
moveForward(); | |
stopCar(); | |
} | |
else if (val == BACKWARD) { // back | |
moveBackward(); | |
stopCar(); | |
} | |
else if (val == LEFTWARD) { // left | |
moveLeft(); | |
stopCar(); | |
} | |
else if (val == RIGHTWARD) { // right | |
moveRight(); | |
stopCar(); | |
} | |
else if (val == START) { // start car | |
startCar(); | |
} | |
else if (val == STOP) { // stop car | |
stopCar(); | |
} | |
IrReceiver.resume(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment