ol82 писал(а):Еще не очень нравится, что далеко заскакивает за границу. Чем можно поправить, чтоб сразу назад драпал?
Бот ждет, что оба датчика "засветятся". Можно отскакивать при срабатывании не обоих, а любого из пары.
Меняем условие (Правый_черный И Левый_черный)
на условие (Правый_белый ИЛИ Левый_белый)
- Код: Выделить всё • Развернуть
if (R_Sensor<100 || L_Sensor<100)
и меняем блоки действий местами.
Заодно, можно поправить реакцию бота.
- Код: Выделить всё • Развернуть
{
go_stop(); //Стоп!
delay(100); //Джем 100 мс
go_back(); //Движемся назад
delay(1000); //1 секунду.
// При анализе края возможна ситуация, что потом, при поиске цели, бот будет рыскать
// налево-направо. Поэтому можно ввести дополнительную переменную, и записывать
// в нее предыдущий поворот. Я назвал её turn, добавив перед setup() строчку byte turn = 0;
if (L_Sensor<=100) {
go_right(); //Поворачиваем направо если последним сработал левый
turn=1;
} else {
go_left(); //иначе поворачиваем налево
turn=2;
}
delay(300); //300 мс
go_forward(); //Движемся вперед
delay(300); //300 мс
}
else
{
if (dist_cm>40) //Если дистанция до объекта больше 40 см то
{
// поиск цели
if (turn==1) {
go_right(); //Поворачиваем направо если сработал левый
} else {
go_left(); //иначе поворачиваем налево
}
}
else
{
go_forward(); //если поймана цель атакуем
}
}
Можно еще добавить реакцию на потерю преграды, чтобы он менял направление поворота на обратное, но это, думаю, вы уже сами сможете сделать.