Загрузка данных


#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);
  }
}