/********* 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);
}
}