int distance;
int Step = 0; // Шаги программы
void setup() {
// Инициализируем порты для моторов
pinMode(4, OUTPUT);
pinMode(5, OUTPUT); // Правый
pinMode(6, OUTPUT); // Левый
pinMode(7, OUTPUT);
// Порты для датчика линии
pinMode(12, INPUT); // Левый
// Порты дальномера
pinMode(8, OUTPUT); // Триггер
pinMode(3, INPUT); // Эхо
}
void loop() {
// Шаг 0 - ожидание 1 с после запуска
if(Step == 0) {
analogWrite(5, 0); // Скорость правый мотор
analogWrite(6, 0); // Скорость левый мотор
delay(1000);
Step = 1;
}
// Шаг 1 - Вращение, поиск кегли.
if(Step == 1) {
analogWrite(5, 70); // Скорость правый мотор
analogWrite(6, 70); // Скорость левый мотор
digitalWrite(4, 0); // Направление правый
digitalWrite(7, 1); // Направление левый
// Посылка импульса соник
digitalWrite(8, HIGH);
delayMicroseconds(10);
digitalWrite(8, LOW);
// Чтение импульса
distance = pulseIn(3, HIGH)/58;
if(distance <= 50) {
Step = 2; // Переключение на второй шаг.
}
}
// Шаг 2 - Выталкиваем кеглю, пока не встретим линию.
if(Step == 2) {
analogWrite(5, 100);
analogWrite(6, 100);
digitalWrite(4, 1);
digitalWrite(7, 1);
// Считываем значения датчика линии
bool Lsensor = digitalRead(12);
if(Lsensor == 1) {
Step = 3; // Переключение на третий шаг.
}
}
// Шаг 3 - Отползаем.
if(Step == 3) {
digitalWrite(4, 0);
digitalWrite(7, 0);
delay(800);
Step = 0;
}
}