Code
Code
//sensor pins
#define TRIG_PIN A1
#define ECHO_PIN A2
#define MAX_DISTANCE 200
#define MAX_SPEED 120 // sets speed of DC motors
#define MAX_SPEED_OFFSET 15
Servo myservo;
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
void setup(){
Serial.begin(115200);
myservo.attach(9);
myservo.write(115);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
delay(2000);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servo.attach(10);
sprayerservo.attach(3);
}
void loop(){
// Move the servo from 0 to 90 degrees
for (int angle = 0; angle <= 90; angle += 1) {
// Set the servo position
sprayerservo.write(angle);
// Wait for the servo to reach the desired position
delay(15);
}
int lookRight() {
myservo.write(50);
// delay(500);
int distance = readPing();
delay(100);
myservo.write(115);
return distance;
}
int lookLeft() {
myservo.write(170);
delay(500);
int distance = readPing();
delay(100);
myservo.write(115);
return distance;
// delay(100);
}
int readPing() {
delay(70);
int cm = sonar.ping_cm();
if (cm == 0) {
cm = 250;
}
return cm;
}
void moveStop() {
//analogWrite(ENA, 0);
//analogWrite(ENB, 0);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(500);
}
void moveForward() {
if (!goesForward) {
goesForward = true;
// analogWrite(ENA, MAX_SPEED);
// analogWrite(ENB, MAX_SPEED);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN4, HIGH);
digitalWrite(IN3, LOW);
}
delay(500);
}
void moveBackward() {
goesForward = false;
//analogWrite(ENA, MAX_SPEED);
//analogWrite(ENB, MAX_SPEED);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN4, LOW);
digitalWrite(IN3, HIGH);
delay(500);
}
void turnRight() {
//analogWrite(ENA, MAX_SPEED);
//analogWrite(ENB, MAX_SPEED - MAX_SPEED_OFFSET);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN4, LOW);
digitalWrite(IN3, HIGH);
delay(500);
moveStop();
}
void turnLeft() {
//analogWrite(ENA, MAX_SPEED - MAX_SPEED_OFFSET);
//analogWrite(ENB, MAX_SPEED);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN4, HIGH);
digitalWrite(IN3, LOW);
delay(500);
moveStop();
}