Dmitry__ писал(а):
slom писал(а):
вас я бы угостил хорошим пивом или чем покрепче
Kxe, смотри, я злопамятный, ведь попрусь в Севастополь за пивом
А ты уверен, что после "наигрался" с этим джоем он тебя будет устраивать? Больше 15 метров управления на них не получить. Ну можно еще поколхозить внешние антенны, но это колхоз
да ради бога, что мне пива жалко... заезжайте
насчет 15 м то вполне устраивает. т.к это не самолет, и без камерный вариант управления. как раз для того чтобы делать что то вблизи(5-7 м) не дальше...
сейчас вообще телефоном управляю, через тот же блютус.
насчет проверки работоспособности так это первым же делом сделал:
Код:
Found Controller, configured successful pressures = false
rumble = false
Try out all the buttons, X will vibrate the controller, faster as you press harder;
holding L1 or R1 will print out the analog stick values.
Note: Go to www.billporter.info for updates and to report bugs.
Unknown Controller type found L2 pressed
Stick Values:127,109,127,128
Stick Values:127,109,127,128
Start is being held
Start is being held
Start is being held
Select is being held
Select is being held
Select is being held
Select is being held
Select is being held
Select is being held
Select is being held
L2 pressed
Stick Values:127,110,127,128
Stick Values:127,109,127,128
Stick Values:127,109,127,128
Stick Values:127,109,127,128
Stick Values:127,110,127,128
Stick Values:127,109,127,128
Stick Values:127,109,127,128
Stick Values:127,109,127,128
Stick Values:127,109,127,128
Stick Values:127,109,127,128
Stick Values:127,109,127,128
Stick Values:127,109,127,128
Stick Values:127,110,127,128
Stick Values:127,109,127,128
Stick Values:127,108,127,128
Stick Values:127,110,127,128
Stick Values:127,108,127,128
Stick Values:127,108,127,128
Stick Values:127,108,127,128
Stick Values:127,108,127,128
Stick Values:127,109,127,128
Stick Values:127,109,127,128
Stick Values:127,110,127,128
Stick Values:127,110,127,128
Stick Values:127,108,127,128
Stick Values:127,108,127,128
Stick Values:127,108,127,128
Stick Values:127,108,127,128
Stick Values:127,108,127,128
Stick Values:127,108,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
L2 pressed
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
R2 pressed
R2 pressed
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,0,128
Stick Values:127,128,0,128
Stick Values:127,128,0,128
Stick Values:127,128,0,128
R3 pressed
L3 pressed
R3 pressed
L3 pressed
Circle just pressed
Square just released
X just changed
X just changed
Triangle pressed
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
Stick Values:127,128,127,128
DOWN held this hard: 0
DOWN held this hard: 0
DOWN held this hard: 0
DOWN held this hard: 0
DOWN held this hard: 0
Up held this hard: 0
Up held this hard: 0
Up held this hard: 0
LEFT held this hard: 0
LEFT held this hard: 0
LEFT held this hard: 0
Right held this hard: 0
Right held this hard: 0
Right held this hard: 0
Select is being held
Select is being held
Select is being held
Start is being held
Start is being held
Start is being held
Start is being held
R3 pressed
Stick Values:127,107,127,128
Stick Values:127,107,127,128
Stick Values:127,107,127,128
Stick Values:127,107,127,128
правда при нажатии л1, р1 выдает такое
Код:
Stick Values:127,107,127,128
Stick Values:127,107,127,128
Stick Values:127,107,127,128
Stick Values:127,107,127,128
толи глюк толи так должно быть... ну и на короткое нажатие кнопки успевает проскочить 3-4 сообщения о ее нажатии
потом я пошел дальше и на левый стикер поставил управление 2мя сервами.
получился 2х осевой вращатель.
Код:
#include <PS2X_lib.h> //спец библиотека для работы с пультом сони пс2 for v1.6
#include <Servo.h>
PS2X ps2x;
int PS2 = 0;
Servo LXservo; // тут задаем имя сервы эта по оси х...
Servo LYservo;
#define L_dir 2 //пины для драйвера мотора
#define L_pwm 3
#define R_dir 4
#define R_pwm 5
int mass[4]; //здесь будем хранить значения для скоростей и направлений
//mass[0] лев.напр.
//mass[1] лев.скор.
//mass[2] прав.напр.
//mass[3] прав.скор.
void setup(){
LXservo.attach(8); //пины серв
LYservo.attach(6);
PS2 = ps2x.config_gamepad(13,11,10,12, true, true); //Настройка выводов: (clock, command, attention, data, true, true)
pinMode(L_dir, OUTPUT);
pinMode(L_pwm, OUTPUT);
pinMode(R_dir, OUTPUT);
pinMode(R_pwm, OUTPUT);
}
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]);
}
void dir_pwm(int Y, int n){ //Подпрограмма для обработки значений джойстика, тут непонятное чтото...
if (Y == 128){
mass[n+1] = 0;
}
if (Y >128){
mass[n+1] = Y*2-255;
mass[n] = 1;
}
if (Y <128){
mass[n+1] = 255-Y*2;
mass[n] = 0;
}
}
главный вопрос, как перенести выполнение этих функций на другую дуню...
тоесть сейчас оно работает на 1й ардуине. а надо чтобы с 1й шли команды на 2ю и там уже крутились сервы и моторы...
у меня такое чувство что там всего несколько строчек ну максимум 10 дописать и все... но блин примеров не нашел
Добавлено спустя 3 минуты 3 секунды:Scorpio писал(а):
Я использую в таких случаях
PCF8574у вас он есть, в у меня его нету.
к тому же у меня ардуина с мощным шилдом, туда сразу без лишних проводов и соединений, втыкаю сервы и все работает, а у вас там только разветвитель сигналов, еще нужна куча проводов и дополнительный стабилизатор на сервы....
к томуже для такого разветвителя тоже нужен особый код, а с этим как раз таки и проблемы