roboforum.ru

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

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

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

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

Сообщение elmot » 04 май 2012, 10:49

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

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

У меня так примерно и сделано, но аналоговый gamepad все равно лучше.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

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

Сообщение Kitam1n » 04 май 2012, 10:59

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

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

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

Gamepad вещь, обязательно задумаюсь как только соберу это, а то бюджет растет, а продукт все на резинках крепится :)
А можно по подробней как ты реализовал управление на поле? Я где то видел, теперь не могу найти.
-нужно нажимать мышкой или просто водить по полю?
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

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

Сообщение Myp » 04 май 2012, 11:26

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

нажимаем кнопку, разгоняемся, по достижении нужной скорости отпускаем и нажимаем кнопку циклично для поддержания нужной скорости.
тормоз пробелом, тоесть включаем кратковременно реверс.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

Сообщение elmot » 04 май 2012, 11:43

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

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

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

Не, мое лучше.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

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

Сообщение Kitam1n » 04 май 2012, 12:12

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

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


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

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

Я расположил кучу кнопок на поле, каждая кнопка отправляет свою команду при наведении мышью, скетч Arduino обрабатывает каждую команду и от нее рулит моторами. Это бред, я знаю. Но работает.
Правильнее сделать что бы программа отслеживала координаты мыши, но я не знаю пока как это делать.
Я делаю в Visual Studio.
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

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

Сообщение Myp » 04 май 2012, 15:32

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

тогда шим на моторы в цикле раз в несколько секунд вычисляется по формуле Y = Y - Z + X
при нажатии кнопки на клаве результат Y будет плавно расти, при отпускании плавно уменьшаться.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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 работал только один мотор, и в таком духе...
Координатную плоскость могу сделать с любыми цифрами в т.ч. с отрицательными.
Формулы пробовал, да видно мозгов не хватает
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

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:
Короче полный "пердимоноколь" :(
Если трогаться плавно с ШИМом, нагрузки нет, и реле не выключается.
Как то не логично, что при старте реле вырубается, а при реверсе нет.
Сделал для реле отдельное питание, стало работать как положено, но это конечно не дело. Нужно думать, Н-мост не хочу пока делать, но боюсь придется.
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

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

Сообщение Kitam1n » 23 май 2012, 12:20

Всем привет!
Надумал прикрутить Gamepad для управления. Посмотрел Gamepad(USB) для PC, цены весьма доступные.
Куда посоветуете копать дальше?
Сейчас клиент подключается к серверу по Wi-Fi и отправляет команды в COM.
Получается что мне нужно добавить в клиент обработку данных с Gamepad`а, которые в свою очередь уже будут отправляться в COM..?
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

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

Сообщение dccharacter » 23 май 2012, 12:32

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

Возьми джойстик от PlayStation. Примеры скетчей есть в Arduino PlayGround. Почитай там сперва инфу, чтобы правильный джой купить. До 300 руб стоят.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение elmot » 23 май 2012, 12:33

Кто клиент? кто сервер? рисунок нарисуй, кто у тебя куда цепляется.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

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

Сообщение Kitam1n » 23 май 2012, 13:03

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

Мне нужно подключить Gamepad к Ноубуку №1. Настроить Клиент что бы он мог получать от него команды и отправлять их Серверу.
Клиент и Сервер написаны на C#. Хотелось бы и Gamepad подружить с C#, но не принципиально.
Вложения
Схема.JPG
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

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

Сообщение dccharacter » 23 май 2012, 13:06

При чем тут Ардуино тогда?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение elmot » 23 май 2012, 13:07

Значит ты все правильно понимаешь. Гугли библиотеки для джойстика к сишарпу. С т.з. API - джойстик и геймпад в принципе похожи.
GamePad обязательно аналоговый, лучше бы беспроводный.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

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

Сообщение Kitam1n » 23 май 2012, 13:49

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

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

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


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

Туго гуглится, ну ладно, очередная скала познаний все равно будет взята.
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

Пред.След.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4