roboforum.ru

Технический форум по робототехнике.

Arduino - шаг за шагом

Re: Arduino - шаг за шагом

elmot » 04 май 2012, 10:49

Kitam1n писал(а):1) привязать управление к клавишам, например к стандартным E,S,D,F, а скорость ШИМа регулировать стрелками. Например: нажимаем E, тележка начинает двигаться вперед на малом ШИМе, стрелками начинаем прибавлять шим - тачка едет быстрее... отпускаем клавиши - все останавливается...

Это ужасно. 2 руки надо для управления.
Kitam1n писал(а):2) сделать специальное поле, разделенное на зоны
Изображение
Двигатели срабатывают в зависимости от того на какой квадрат наведена мышь:
-если на самый центральный - это стоп
-если на самый передний центральный - полный вперед
-если на самый левый центральный - разворот на месте(моторы крутятся в разную сторону)
... ну и т.д. сколько полей сделал столько и вариантов
Получается оперативное управление двигателями мышью...
Что скажите?

У меня так примерно и сделано, но аналоговый gamepad все равно лучше.

Re: Arduino - шаг за шагом

Kitam1n » 04 май 2012, 10:59

elmot писал(а):Это ужасно. 2 руки надо для управления.

Согласен, а ведь еще камера

elmot писал(а):У меня так примерно и сделано, но аналоговый gamepad все равно лучше.

Gamepad вещь, обязательно задумаюсь как только соберу это, а то бюджет растет, а продукт все на резинках крепится :)
А можно по подробней как ты реализовал управление на поле? Я где то видел, теперь не могу найти.
-нужно нажимать мышкой или просто водить по полю?

Re: Arduino - шаг за шагом

Myp » 04 май 2012, 11:26

хоспади, зачем такие извращения
машины прекрасно рулятся 4мя кнопками в компьютерных игрушках
в обычном автосимуляторе либо WASD либо стрелочки.
при нажатии шим постепенно увеличивается, при отпускании плавно уменьшается.
если очень надо можно добавить коробку софтовую передач на кнопки E и Q
тоесть разбить шим на нужное количество диапазонов и выбирать нужный например 0-33 33-66 66-100
кнопкой Q понижаем диапазон, E повышаем, тогда кнопки направления будут менять шим только в пределах диапазона.

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

Re: Arduino - шаг за шагом

elmot » 04 май 2012, 11:43

elmot писал(а):У меня так примерно и сделано, но аналоговый gamepad все равно лучше.

Gamepad вещь, обязательно задумаюсь как только соберу это, а то бюджет растет, а продукт все на резинках крепится :)
А можно по подробней как ты реализовал управление на поле? Я где то видел, теперь не могу найти.
-нужно нажимать мышкой или просто водить по полю?[/quote]
Чот мне тоже не найти.
В стиле Малевича. Черный квадрат с целью посередине. Мыша посередине - стоим. Смещение вверх-вниз от центра задает скорость(сумму ШИМ бортов). Смещение вправо-влево - разницу ШИМ бортов, т.е. поворот. Такой же алгоритм поверх картинки - поворот камеры.
Мышу надо жать.

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

Не, мое лучше.

Re: Arduino - шаг за шагом

Kitam1n » 04 май 2012, 12:12

Myp писал(а):хоспади, зачем такие извращения

я же писал :oops:
Kitam1n писал(а):...нужен тот, кто вовремя ударит указкой по голове направив на путь истинный...


Тоже хорошая идея, обязательно попробую.
Как сделать плавное поднятие ШИМа по нажатию клавиши я представляю (это было в простых примерах по Arduino), с плавным отпусканием тоже думаю разберусь.
А вот как сделать что бы при циклическом нажатии на клавишу ШИМ начинал подниматься не с нуля опять, а с того уровня до которого он упал... задача для меня по труднее.

Добавлено спустя 27 минут 20 секунд:
elmot писал(а):сумма ШИМ бортов

Я расположил кучу кнопок на поле, каждая кнопка отправляет свою команду при наведении мышью, скетч Arduino обрабатывает каждую команду и от нее рулит моторами. Это бред, я знаю. Но работает.
Правильнее сделать что бы программа отслеживала координаты мыши, но я не знаю пока как это делать.
Я делаю в Visual Studio.

Re: Arduino - шаг за шагом

Myp » 04 май 2012, 15:32

нажатие кнопки - величина X
величина шима - Y
константа - Z
X больше Z в 2 раза

тогда шим на моторы в цикле раз в несколько секунд вычисляется по формуле Y = Y - Z + X
при нажатии кнопки на клаве результат Y будет плавно расти, при отпускании плавно уменьшаться.

Re: Arduino - шаг за шагом

Kitam1n » 04 май 2012, 17:44

elmot писал(а):Смещение вверх-вниз от центра задает скорость(сумму ШИМ бортов). Смещение вправо-влево - разницу ШИМ бортов, т.е. поворот.


не как не могу врубиться как реализовать алгоритм преобразования координат в цифры двух ШИМ, т.е. зависимость двух ШИМ сигналов от "x" и "y".
Допустим у меня координатная плоскость "x"(от 0 до 100) и "y"(от 0 до 100). Например при x= 100 и y = 0 мне нужно что бы оба двигателя работали на полную. Соответственно при x=100 и y=100 один из моторов работал в пол силы, а x=0, y = 100 работал только один мотор, и в таком духе...
Координатную плоскость могу сделать с любыми цифрами в т.ч. с отрицательными.
Формулы пробовал, да видно мозгов не хватает

Re: Arduino - шаг за шагом

Kitam1n » 11 май 2012, 12:12

Мыслей тьма, пишу очень кратко.
Каждый последующий шаг в улучшении программы для управления дается все сложнее и сложнее (но дается).
I. Сделал поле управления ШИМом 2-х моторов мышью, чем дальше от центра, тем больше ШИМ, поля меняют направление движения(выделил красным). В целом имеется уже целая куча способов управления: кнопки, координатная плоскость, ползунки…
Сейчас двигаюсь к написанию клиент-сервер, что бы отказаться от сторонних программ удаленного доступа, а так же хочу добавить очередное экспериментальное управление посредством 4-х клавиш (аля W,A,S,D).
Изображение

II. Подключил 6-ти контактное реле для заднего хода, пока одно для эксперимента: при старте напряжение проседает и реле выключается на долю секунды. Т.е. если резко врубить задний ход получается следующее:
1) отдельный пин включает реле (через L293)
2) меняется полярность на моторе
3) delay 0.5 сек (что бы реле успело нормально включиться, не было одновременной работы моторов и переключения реле и резкого реверса)
4) включаются моторы
5) напруга проседает с 12 до 8(это то, что успевает поймать мультиметр), ток подскакивает до 14 и реле выключается, соответственно полярность моторов восстанавливается
6) мотор начинает крутиться в обычном направлении :crazy:
7) ток и напряжение выравнивается
8 ) срабатывает реле меняя палярность на моторе
9) мотор с колесом тормозится и начинает крутиться в другую сторону :no:
Короче полный "пердимоноколь" :(
Если трогаться плавно с ШИМом, нагрузки нет, и реле не выключается.
Как то не логично, что при старте реле вырубается, а при реверсе нет.
Сделал для реле отдельное питание, стало работать как положено, но это конечно не дело. Нужно думать, Н-мост не хочу пока делать, но боюсь придется.

Re: Arduino - шаг за шагом

Kitam1n » 23 май 2012, 12:20

Всем привет!
Надумал прикрутить Gamepad для управления. Посмотрел Gamepad(USB) для PC, цены весьма доступные.
Куда посоветуете копать дальше?
Сейчас клиент подключается к серверу по Wi-Fi и отправляет команды в COM.
Получается что мне нужно добавить в клиент обработку данных с Gamepad`а, которые в свою очередь уже будут отправляться в COM..?

Re: Arduino - шаг за шагом

dccharacter » 23 май 2012, 12:32

Kitam1n писал(а):Всем привет!
Надумал прикрутить Gamepad для управления. Посмотрел Gamepad(USB) для PC, цены весьма доступные.
Куда посоветуете копать дальше?
Сейчас клиент подключается к серверу по Wi-Fi и отправляет команды в COM.
Получается что мне нужно добавить в клиент обработку данных с Gamepad`а, которые в свою очередь уже будут отправляться в COM..?

Возьми джойстик от PlayStation. Примеры скетчей есть в Arduino PlayGround. Почитай там сперва инфу, чтобы правильный джой купить. До 300 руб стоят.

Re: Arduino - шаг за шагом

elmot » 23 май 2012, 12:33

Кто клиент? кто сервер? рисунок нарисуй, кто у тебя куда цепляется.

Re: Arduino - шаг за шагом

Kitam1n » 23 май 2012, 13:03

Исправляюсь!!!
Схема классическая:
1) Клиент (Ноутбук №1) отправляет команды через Wi-Fi на Сервер (Ноутбук №2).
2) Сервер переправляет команды в COM на Arduino. Тележка ездит.

Мне нужно подключить Gamepad к Ноубуку №1. Настроить Клиент что бы он мог получать от него команды и отправлять их Серверу.
Клиент и Сервер написаны на C#. Хотелось бы и Gamepad подружить с C#, но не принципиально.
Вложения
Схема.JPG

Re: Arduino - шаг за шагом

dccharacter » 23 май 2012, 13:06

При чем тут Ардуино тогда?

Re: Arduino - шаг за шагом

elmot » 23 май 2012, 13:07

Значит ты все правильно понимаешь. Гугли библиотеки для джойстика к сишарпу. С т.з. API - джойстик и геймпад в принципе похожи.
GamePad обязательно аналоговый, лучше бы беспроводный.

Re: Arduino - шаг за шагом

Kitam1n » 23 май 2012, 13:49

dccharacter писал(а):При чем тут Ардуино тогда?

Ты наверно подумал что мне нужно подключить Gamepad непосредственно к Arduino?
К сожалению это не так.

elmot писал(а):Гугли библиотеки для джойстика к сишарпу.
GamePad обязательно аналоговый, лучше бы беспроводный.


Аналоговый? ага, эт важно.

Туго гуглится, ну ладно, очередная скала познаний все равно будет взята.


cron
Rambler\'s Top100 Mail.ru counter