CCCPaste

Object Tracking Robot

/********* Pleasedontcode.com **********

	Pleasedontcode thanks you for automatic code generation! Enjoy your code!

	- Terms and Conditions:
	You have a non-exclusive, revocable, worldwide, royalty-free license
	for personal and commercial use. Attribution is optional; modifications
	are allowed, but you're responsible for code maintenance. We're not
	liable for any loss or damage. For full terms,
	please visit pleasedontcode.com/termsandconditions.

	- Project: Object_Tracking_Robot
	- Source Code compiled for: Arduino Uno
	- Source Code created on: 2024-01-07 21:01:40

********* Pleasedontcode.com **********/

/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
	/* start my moving myServo to 180 then back to 0 then */
	/* leave at 90 degrees.  go to main loop. */
/****** SYSTEM REQUIREMENT 2 *****/
	/* if distance between 5 and 15, move forward. if */
	/* rightSensor is high and leftSensor is low, turn */
	/* right. if rightSensor is low and leftSensor is */
	/* high, turn left. if distance is greater than 15, */
	/* stop. */
/****** END SYSTEM REQUIREMENTS *****/

/****** DEFINITION OF LIBRARIES *****/
#include 
#include 
#include 

/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);

/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t ultraSonic_HC_SR04_Echo_PIN = 3;
const uint8_t rightSensor_PIN = 4;
const uint8_t leftSensor_PIN = 5;

/***** DEFINITION OF DIGITAL OUTPUT PINS *****/
const uint8_t ultraSonic_HC_SR04_Trigger_PIN = 2;
const uint8_t motor_L293xQuadrupleHalf_HDriver_1A_PIN = 7;
const uint8_t motor_L293xQuadrupleHalf_HDriver_2A_PIN = 8;
const uint8_t motor_L293xQuadrupleHalf_HDriver_3A_PIN = 11;
const uint8_t motor_L293xQuadrupleHalf_HDriver_4A_PIN = 12;

/***** DEFINITION OF PWM OUTPUT PINS *****/
const uint8_t myServo_Servomotor_PWMSignal_PIN = 6;

/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
Ultrasonic ultrasonic(ultraSonic_HC_SR04_Trigger_PIN, ultraSonic_HC_SR04_Echo_PIN);
Servo myServo;

void setup(void)
{
  // put your setup code here, to run once:

  pinMode(ultraSonic_HC_SR04_Echo_PIN, INPUT);
  pinMode(rightSensor_PIN, INPUT);
  pinMode(leftSensor_PIN, INPUT);

  pinMode(ultraSonic_HC_SR04_Trigger_PIN, OUTPUT);
  pinMode(motor_L293xQuadrupleHalf_HDriver_1A_PIN, OUTPUT);
  pinMode(motor_L293xQuadrupleHalf_HDriver_2A_PIN, OUTPUT);
  pinMode(motor_L293xQuadrupleHalf_HDriver_3A_PIN, OUTPUT);
  pinMode(motor_L293xQuadrupleHalf_HDriver_4A_PIN, OUTPUT);
  pinMode(myServo_Servomotor_PWMSignal_PIN, OUTPUT);

  myServo.attach(myServo_Servomotor_PWMSignal_PIN);

  // SYSTEM REQUIREMENT 1: move myServo to 180 degrees, then back to 0 degrees, and leave at 90 degrees
  myServo.write(180);
  delay(1000);
  myServo.write(0);
  delay(1000);
  myServo.write(90);
}

void loop(void)
{
  // put your main code here, to run repeatedly:

  // SYSTEM REQUIREMENT 2: logic for moving forward, turning right, turning left, and stopping based on distance and sensor readings

  // Read the distance from the ultrasonic sensor
  unsigned int distance = ultrasonic.read();

  // Read the sensor values
  bool rightSensor = digitalRead(rightSensor_PIN);
  bool leftSensor = digitalRead(leftSensor_PIN);

  // Check if the distance is between 5 and 15
  if (distance >= 5 && distance <= 15)
  {
    // Move forward
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_1A_PIN, HIGH);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_2A_PIN, LOW);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_3A_PIN, HIGH);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_4A_PIN, LOW);
  }
  else if (rightSensor && !leftSensor)
  {
    // Turn right
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_1A_PIN, LOW);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_2A_PIN, HIGH);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_3A_PIN, HIGH);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_4A_PIN, LOW);
  }
  else if (!rightSensor && leftSensor)
  {
    // Turn left
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_1A_PIN, HIGH);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_2A_PIN, LOW);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_3A_PIN, LOW);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_4A_PIN, HIGH);
  }
  else
  {
    // Stop
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_1A_PIN, LOW);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_2A_PIN, LOW);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_3A_PIN, LOW);
    digitalWrite(motor_L293xQuadrupleHalf_HDriver_4A_PIN, LOW);
  }
}