srgts

ggdh

Рис. 1. Принципиальная электрическая схема.

#include <Servo.h>
Servo servo;

int trig = 14, echo = 16 ;
const int motorA = 4;
const int motorB = 5;
const int servoPin = 12;
int delta = 100;

void setSpeed(int power) {                    // power -255 ... 255
  digitalWrite(motorB, power < 0);
  analogWrite(motorA, (power < 0) ? (255 + power) : power);
}

void setTurn(int turn) {                      // power -100 ... 100
  servo.write(map(turn, -100, 100, 20, 130)); //Корректировка прямо и диапазон углов поворота
}

void setup() {
  pinMode(motorA, OUTPUT);
  pinMode(motorB, OUTPUT);
  setSpeed(0);
  servo.attach(servoPin);
  servo.write(90);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

void loop() {
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  int duration = pulseIn(echo, HIGH) / 5.8;
  if (duration > 400 - delta) {
    setTurn(0);
    setSpeed(150);
    delta = 200;
  }
  else {
    delta = 0;
    setTurn(-100);
    setSpeed(-150);
    delay(1400);
  }
  delay(50);
}

Лист. 1. Программа автоматизации движения робота с предотвращением столкновений