Ход работы
- Изучили материал
- Сделали схему и задали значения переменных, массивов
//моторы
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();
}
Как работает машина с парктроником
- По переключателю запускается машина
- Считываются данные с датчика расстояния
- Если спереди нет препятствия, то она едет вперед
- Если есть препятствие, то машина останавливается, едет назад и разворачивается
Компоненты
- Двигатель – 2
- Кнопка – 1
- Датчик расстояния – 1
- L298N Mootori driver — 1
- Батарейка АА — 5

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