Skip to content

Instantly share code, notes, and snippets.

@Aditya-Jyoti
Created November 23, 2023 14:44
Show Gist options
  • Save Aditya-Jyoti/2e719fdc4828ccb29e2ea782b824391c to your computer and use it in GitHub Desktop.
Save Aditya-Jyoti/2e719fdc4828ccb29e2ea782b824391c to your computer and use it in GitHub Desktop.
#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