Ребята, можете п0м0чь со скетчем для робота? Робот, который пятится от препятствия

Всем привет!

Ребята, строю своего первого робота, вроде в железе он готов, но теперь сложности со скетчем.
В качестве моторов для колес (крышек от сока) взяты две сервомашинки SG90, УЗ-датчик расстояния (определить препятствие впереди) HC-SR04, "бортовой компьютер" - Arduino Nano, еще красненький LED, чтобы включаться, когда робот видит препятствие и самая обычная 18650 как источник питания.

Вот он на фото:



Пожалуйста, если вам не трудно и есть свободное время, могли бы помочь со скетчем?
Просто, поначалу казалось, что это вообще легко будет, но у сервомашинок, оказывается абсолютное позиционирование (!), нельзя задать просто "+1 оборот вперед", чтобы робот поехал.

Сначала хочу просто решить задачу минимум - чтобы робот просто "пятился" от препятствия (выставленной ладони перед ним) назад и старался объехать ладонь справа или слева. То есть, датчик расстояния определяет препятствие на расстоянии 50мм или ближе - дает команды светодиоду - "включиться на 2 секунды, затем выключиться", затем сервам - "отъехать назад на полкорпуса, повернуть направо или налево, повернуться вперед (влево/вправо) на 90 градусов, поехать вперед снова, пока нет препятствия", правильно?

Если я верно понимаю, то "пятиться" робот будет так - внешний диаметр-крышек-колес - 35 мм, значит по формуле длины окружности C = Пи * диаметр = 110 мм. 80 мм (полкорпуса робота) назад - это 80 / 110 = 0.72 оборота или поворот левой сервы по часовой стрелке вперед, а правой назад на 260 градусов.
Но лучше вообще как-то вначале "конвертировать" абсолютное движение серв SG90 в "относительное" движение.

Я не прошу сделать за меня все, я делаю этого робота просто как хобби в свободное от учебы время.
Но с программированием "не дружу", мне проще руками что-то собрать, чем писать код.

Если можете - пожалуйста, помогите составить "каркас" будущего кода робота, а я уже дальше буду его усложнять, добавлять ему более сложное поведение, вроде запоминания пройденного пути (добавлю еще карту памяти SD).

Заранее большое спасибо всем!

Блин, у SG90, оказывается, аппаратное ограничение на вращение (зубец-ограничитель на шестерне, не более 180 градусов поворота).
Пойду завтра шаговики куплю с драйверами (ULN2003), переделаю.

360 градусов
https://www.amazon.com/Wishiot-Continuous-Rotation-Microbit-Helicopter/dp/B0BZH7JK4N

Всем привет!
Ребят, купил мотор-редукторы DC, с колесами сразу.
Подсоединил два через 4-канальный модуль реле:

Только есть какая-то странная проблема - один из моторов крутит нормально, а второй - только с толкача.
Перепаял на другой (купил 4 шт) - ничего не поменялось, правый крутит нормально, левый - стоит. Крутнешь - начинает крутить.

Соединил по схеме "прямой и реверс" через 2 реле каждый:

Промерил сопротивления - все одинаково.

Питание всего робота с единой 18650 (~4 Вольта), но на каждую нагрузку подведено отдельной "линией" (т.е. на Ардуино своя, на модуль реле своя, на ультразвуковой датчик расстояния своя, но все от единого аккума).

Запитал с USB в Ардуину от зарядки 33 Ватта - аналогично.

Кто в схемотехнике понимает, можете объяснить, в чем моя ошибка?

Спасибо!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.