/********* 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: Motor Control - Source Code NOT compiled for: Arduino Uno - Source Code created on: 2025-10-29 17:54:21 ********* Pleasedontcode.com **********/ /****** SYSTEM REQUIREMENTS *****/ /****** SYSTEM REQUIREMENT 1 *****/ /* Implement a servo motor control system that */ /* adjusts its angle based on input from connected */ /* sensors, improving automation precision in the */ /* project. */ /****** END SYSTEM REQUIREMENTS *****/ /* START CODE */ // System Requirements: Implement a servo motor control system that adjusts its angle based on input from connected sensors, improving automation precision in the project. #include #include #define SERVO_PIN 3 #define ULTRASONIC_SENSOR_TRIG 11 #define ULTRASONIC_SENSOR_ECHO 12 #define MAX_REGULAR_MOTOR_SPEED 80 #define MAX_MOTOR_ADJUST_SPEED 170 #define DISTANCE_TO_CHECK 40 //Right motor int enableRightMotor=5; int rightMotorPin1=7; int rightMotorPin2=8; //Left motor int enableLeftMotor=6; int leftMotorPin1=9; int leftMotorPin2=10; NewPing mySensor(ULTRASONIC_SENSOR_TRIG, ULTRASONIC_SENSOR_ECHO, 400); Servo myServo; // Function to rotate motors at specified speeds void rotateMotor(int rightMotorSpeed, int leftMotorSpeed) { if (rightMotorSpeed < 0) { digitalWrite(rightMotorPin1,LOW); digitalWrite(rightMotorPin2,HIGH); } else if (rightMotorSpeed >= 0) { digitalWrite(rightMotorPin1,HIGH); digitalWrite(rightMotorPin2,LOW); } if (leftMotorSpeed < 0) { digitalWrite(leftMotorPin1,LOW); digitalWrite(leftMotorPin2,HIGH); } else if (leftMotorSpeed >= 0) { digitalWrite(leftMotorPin1,HIGH); digitalWrite(leftMotorPin2,LOW); } analogWrite(enableRightMotor, abs(rightMotorSpeed)); analogWrite(enableLeftMotor, abs(leftMotorSpeed)); } void setup() { // Initialize motor control pins pinMode(enableRightMotor,OUTPUT); pinMode(rightMotorPin1,OUTPUT); pinMode(rightMotorPin2,OUTPUT); pinMode(enableLeftMotor,OUTPUT); pinMode(leftMotorPin1,OUTPUT); pinMode(leftMotorPin2,OUTPUT); // Attach servo myServo.attach(SERVO_PIN); myServo.write(90); // Set servo to center position } void loop() { // Read distance using ultrasonic sensor int distance = mySensor.ping_cm(); // If object detected within threshold, perform avoidance maneuver if (distance > 0 && distance < DISTANCE_TO_CHECK) { // Stop motors rotateMotor(0, 0); delay(500); // Reverse motors rotateMotor(-MAX_MOTOR_ADJUST_SPEED, -MAX_MOTOR_ADJUST_SPEED); delay(200); // Stop motors rotateMotor(0, 0); delay(500); // Rotate servo to left myServo.write(180); delay(500); // Read left side distance int distanceLeft = mySensor.ping_cm(); // Rotate servo to right myServo.write(0); delay(500); // Read right side distance int distanceRight = mySensor.ping_cm(); // Return servo to center myServo.write(90); delay(500); // Decide turn direction based on distances if (distanceLeft == 0) { rotateMotor(MAX_MOTOR_ADJUST_SPEED, -MAX_MOTOR_ADJUST_SPEED); delay(550); } else if (distanceRight == 0) { rotateMotor(-MAX_MOTOR_ADJUST_SPEED, MAX_MOTOR_ADJUST_SPEED); delay(550); } else if (distanceLeft >= distanceRight) { rotateMotor(MAX_MOTOR_ADJUST_SPEED, -MAX_MOTOR_ADJUST_SPEED); delay(550); } else { rotateMotor(-MAX_MOTOR_ADJUST_SPEED, MAX_MOTOR_ADJUST_SPEED); delay(550); } // Stop motors after maneuver rotateMotor(0, 0); delay(550); } else { // Move forward rotateMotor(MAX_REGULAR_MOTOR_SPEED, MAX_REGULAR_MOTOR_SPEED); } } /* END CODE */