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

Всем привет!

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

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



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

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

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

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

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

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

Мошт, ты сначала светлодиодиком помигаешь? Почитаешь чонить? Не?

1 лайк

вообще-то стандартные сервы не умеют поворачиватся больше, чем на 1 оборот, так что без переделки серв ваш робот более чем на высчитанные 110мм от точки старта не уедет

1 лайк

Конечно, могли бы! Начинайте, пишите, выкладывайте!

Если надо, читайте форум, тут много тем про роботов, а то Вы, похоже, не читатель, а писатель:

вот тут я на тележку кое-что написал, оно не точно в тему, но для общего развития пойдёт

1 лайк

Вот, точно в тему и без слов. Это первое, что надо сделать :slight_smile:

1 лайк

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

С шаговиками рекомендую начать с такого, точное более, менее позиционирование их отличие:

1 лайк

Решил сделать самую медленную машинку на свете?

Я просто набираю опыт.
Она не для гонок, а чтобы научиться работать с электроникой и железом.

Ну давай тогда. Заодно руку накачаешь, держать перед датчиком по десять минут, пока она пятится.


Вот тогда с чего начинают ---- мотор-редукторы с колёсами.

1 лайк

Это слишком просто :grin:

Ну не 10 минут же, зачем утрировать?
Шаговик нормально работает, а у меня не военный железный робот, а игрушка чтобы потренироваться.

Сделай чуть посложней
image

1 лайк

может пора начинать дружить?

Пойми, писать для тебя код, даже “каркас” - никто не станет. Или ты пробуешь писать сам, или заказываешь за деньги, на нашем форуме у тебя других вариантов нет

Вы неправильное занятие себе нашли. Хобби с “ардуино” никак без программирования. В крайнем случае возможно получится только точное повторение чужих готовых проектов.
Так что либо начинайте дружить с программированием, либо выберите другое хобби - собирайте кораблики в бутылке, куйте ножи, вышивайте крестиком. Вариантов масса.

5 лайков

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

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

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

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

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

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

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

Спасибо!

так тут не только схемотехника, тут еще код нужен
Выкладывайте, как сигналы подаете