slom писал(а):так у вас там вроде пульт проводной? а у меня беспроводной
Беспроводной не отличается от проводного, у проводного разьем через провод идет прямо на джой, а у беспроводного - провод заменен воздухом. По интерфейсу они одинаковые. У беспроводного есть нюанс - его нельзя очень часто опрашивать, т.к толщина эфира ограничена.
slom, обещаешь всех тут напоить, если получится? Особенно angel-а?
Не, я знаю что программисты "3d max" сделаны из другого теста, но чтоб таааааак
Я себя переАсилил и заставил прочитать тему, есть вопросы:
Ты джой подключил к новой дуине, так? rs232 на этой дуине свободен, так? На основной дуине стоит блютуска, которую надо выкинуть и заменить на in rs232 от первой дуины. Чтоб не перелопачивать код, который крутится на основной дуине (который с моторами), надо генерировать этот протокол дуиной с джойстиком. Давай ссылку на этот протокол.
На новой дуине (который с джойстиком) надо отработать алгоритм работы джоя. Надо временно rs232 через плату rs232/usb подключить к компу. Далее, в программе, где происходит чтение джойстика, надо вставить "Serial.println" в соотв. ветки опроса джоя. Ссылок на скетчи дали кучу, они все подходят. Как и куда вставлять код, зависит от скетча. Например, твой код из:
http://roboforum.ru/forum86/topic15339-30.html#p326083Хм, чо-то там слишком непонятно, хм. Почему "ps2x.read_gamepad" происходит после "LXservo.write"? Ну, понятно что в зацикленном коде все идет друг за другом, но как-то неправильно. И выложен какой-то маленький кусок, тебе страшно показать остальное? Или ты партизан и мы не должны знать больше?
- Код: Выделить всё • Развернуть
void loop(){
LXservo.write(map(ps2x.Analog(PSS_LX), 255, 0, 0, 180)); ;
delay(50);
ps2x.read_gamepad(false, 0);
LYservo.write(map(ps2x.Analog(PSS_LY), 0, 255, 0, 90)); ;
delay(50);
ps2x.read_gamepad(false, 0);
dir_pwm(ps2x.Analog(PSS_RY),2); //обрабатываем правый джойстик
digitalWrite(R_dir, mass[2]);
analogWrite(R_pwm, mass[3]);
}
А, понял, это стандартные библиотеки дуины. Но, блин, надо выкладывать код всех функций, я хз что в "ps2x.Analog(PSS_LX), 255, 0, 0, 180" и сам искать не хочу...
Ладн, пока забиваем на твой код, берем чужой, но полный, например этот:
https://github.com/onyxfish/loganbot/blob/master/lib/PS2X_lib/examples/PS2X_Example/PS2X_Example.inoОчень понятный код, очень все красиво. А, нет
Берем код, который ты упоминал (это я издеваюсь над способом мышления 3d max) :
http://robocontroller.ru/news/besprovodnoj_dzhojstik_ot_playstation_arduino/2013-10-19-32Очень понятный код, очень все красиво, ой было уже
Там есть место:
- Код: Выделить всё • Развернуть
ps2x.read_gamepad(false, vibrate); //считывание данных с джойстика и установка скорости вибрации
if(ps2x.Button(PSB_START)) //будет TRUE пока кнопка нажата
Serial.println("Start is being held"); // Start нажат
if(ps2x.Button(PSB_SELECT))
Serial.println("Select is being held"); // Select нажат
if(ps2x.Button(PSB_PAD_UP)) { //будет TRUE пока кнопка нажата
Serial.print("Up held this hard: "); // ВВЕРХ нажато, сила нажатия:
Serial.println(ps2x.Analog(PSAB_PAD_UP), DEC);
}
if(ps2x.Button(PSB_PAD_RIGHT)){
Serial.print("Right held this hard: "); // ВПРАВО нажато, сила нажатия:
Serial.println(ps2x.Analog(PSAB_PAD_RIGHT), DEC);
}
if(ps2x.Button(PSB_PAD_LEFT)){
Serial.print("LEFT held this hard: "); // ВЛЕВО нажато, сила нажатия:
Serial.println(ps2x.Analog(PSAB_PAD_LEFT), DEC);
}
if(ps2x.Button(PSB_PAD_DOWN)){
Serial.print("DOWN held this hard: "); // ВНИЗ нажато, сила нажатия:
Serial.println(ps2x.Analog(PSAB_PAD_DOWN), DEC);
}
Вооот, прям наш случай, вот прямо заменить все эти англицкие выражения в "Serial.print()", типа заменить это "DOWN held this hard: " на это: "ВНИЗ нажато, сила нажатия:"
Как только у тебя будет отклик на все кнопки джоя и вывод в терминал понятного для тебя текста, так сразу можно начинать преобразовывать весь этот текст в протокол управления основной платой. Ну, ссылку на тот протокол ты нам таки дашь
А вспомнил (это я опять над 3d max), основная плата где-то была в описаниях, т.е. ее протокол мы сможем найти сами