#include <Servo.h>
Servo servo;
const int motorPin = 8;
const int trigPin = 6;
const int echoPin = 7;
bool autoMode = false;
void setup() {
Serial.begin(9600);
pinMode(motorPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servo.attach(9);
servo.write(90); // центр
}
long getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.034 / 2;
return distance;
}
void loop() {
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd == "FORWARD")
digitalWrite(motorPin, HIGH);
if (cmd == "STOP")
digitalWrite(motorPin, LOW);
if (cmd == "LEFT")
servo.write(45);
if (cmd == "RIGHT")
servo.write(135);
if (cmd == "CENTER")
servo.write(90);
if (cmd == "AUTO")
autoMode = true;
if (cmd == "MANUAL")
autoMode = false;
}
if (autoMode) {
long distance = getDistance();
Serial.print("DIST:");
Serial.println(distance);
if (distance < 15) {
digitalWrite(motorPin, LOW);
}
delay(300);
}
}