Ход работы

  1. Изучили материал
  2. Сделали схему и задали значения переменных, массивов
//моторы
int in1 = 9;
int in2 = 10;
int in3 = 7; 
int in4 = 11;

//сенсор 
const int echoPin = 2;
const int trigPin = 3;

//массив с дистанциями 
int distances[2] = {};

//дистанции
long duration, distance, distance_all;
float dist_result;

//переменная, которая будет принимать значение после работы функции
int viis;

void setup() {
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);   
  pinMode(in1, OUTPUT);   
  pinMode(in2, OUTPUT);    
  pinMode(in3, OUTPUT);   
  pinMode(in4, OUTPUT);     
  Serial.begin(9600); 
}

3. Написали вспомогательные функции

//функция вычисляет показания датчика и проверяет их
int ping() {                     
  for (int i = 0; i < 2; i++) { //цикл два раза вносит значение дистанции в массив
    digitalWrite(trigPin, 0);
    delayMicroseconds(2);
    digitalWrite(trigPin, 1);
    delayMicroseconds(10);
    digitalWrite(trigPin, 0);
    duration = pulseIn(echoPin, 1);
    distance = duration / 58;
    distances[i] = distance;
  }
   //проверка дистанции
   int dist_check_sum; /
   dist_check_sum = distances[0] + distances[1];
   dist_result = dist_check_sum / 2;
   return dist_result;
}

//функция для моторов
void demo()
{
  viis = ping(); //использование функции 
  if (viis > 20 && viis < 1900) {  //высокое значение стоит из-за какой-то ошибке, которую мы так и не обнаружили
    digitalWrite(in1, HIGH);  
    digitalWrite(in2, LOW);  
    digitalWrite(in3, LOW);   
    digitalWrite(in4, HIGH);
  }
  else if (viis < 19 || viis > 1900) {
    digitalWrite(in1, LOW); 
    digitalWrite(in2, HIGH);  
    digitalWrite(in3, HIGH);  
    digitalWrite(in4, LOW);
    delay(1000);
    digitalWrite(in1, LOW); 
    digitalWrite(in2, HIGH);  
    digitalWrite(in3, LOW);  
    digitalWrite(in4, LOW);
    delay(1000);
  }
}

4. Далее все применилось в основном цикле

void loop() {
  viis = ping();
  //Serial.print(" cm");
  Serial.println(viis);
  demo();
}

Как работает машина с парктроником

  1. По переключателю запускается машина
  2. Считываются данные с датчика расстояния
  3. Если спереди нет препятствия, то она едет вперед
  4. Если есть препятствие, то машина останавливается, едет назад и разворачивается

Компоненты

  • Двигатель – 2
  • Кнопка – 1
  • Датчик расстояния – 1
  • L298N Mootori driver — 1
  • Батарейка АА — 5
Arduino UNO R3

Возможности применения в жизни

  • Перевоза чего-то по маршруту
  • Для машин на радиоуправлении
  • В роботах пылесосах

Видео работы