function Joy_Inverso(hObject, eventdata, handles)
global flag_joy Px Py Pz
global teta1 teta4 teta5 teta6 tetap tetaf d2 d3 l1 d4 x_joyantesPx y_joyantesPy z_joyantesPz
warning off;
%ai=analoginput('joy',1); % the number is an ID number of installed joystick (see Controller IDs in Control panel/Gaming options
%addchannel(ai,[1 2 3 4 5 6]);
%channels
% 1 - X axis
% 2 - Y axis
% 3 - Z axis
% 4 - R axis
% 5 - buttons pressed (quasy binary data - see below)
% 6 - no of buttons pressed at the time
% Set up the display
flag_joy=1;
while flag_joy==1
pause(0.05);
samples = jst;
samples(1) = -samples(1)*100; %Y data
samples(2) = samples(2)*100; %X data
samples(3) = -samples(3)*100; %Z data
% decoding the data from dll. You may play with the dll. Please see
% JoyIn.cpp
ButtonsPressed = samples(5);
BP = ButtonsPressed;
if BP==32 %BP==32 =>R1 controlar eixos dos XX
% pause(0.01);
x_joy=samples(2); %%varia entre -100 e 100
x_joy=x_joy+x_joyantesPx;
x_joyantesPx=x_joy;
Pxmax=sqrt((282^2)-(Py^2));
Pxmin=sqrt((112.75^2)-(Py^2));
if(x_joy>=0)
Px=((x_joy*(Pxmax-Pxmin)/100)+Pxmin);
else
Px=((x_joy*(Pxmax-Pxmin)/100)-Pxmin);
end
if(x_joy>100)
Px=Pxmax;
end
if(x_joy<-100)
Px=-Pxmax;
end
teta1=atan2(Py,Px)+atan2(sqrt(Px^2+Py^2-l1^2),l1);
d2=Pz;
d3=sin(teta1)*Px-cos(teta1)*Py-d4;
teta4=atan2(1,0);
teta5=(tetap*pi)/180;
tetaf=(tetaf*pi)/180;
teta6=tetaf-teta4;
Pxstr=num2str(Px);
Pystr=num2str(Py);
Pzstr=num2str(Pz);
set(handles.textpz,'String',Pzstr);
set(handles.textpx,'String',Pxstr);
set(handles.textpy,'String',Pystr);
SimuladorCs('Desenha_robo',hObject, eventdata,handles); %tem q estar dentro senao o cpu est a 100%
teta1deg=teta1*180/pi;
teta4deg=teta4*180/pi;
teta5deg=teta5*180/pi;
teta6deg=teta6*180/pi;
set(handles.textteta1,'String',num2str(teta1deg));
set(handles.textteta4,'String',num2str(teta4deg));
set(handles.textteta5,'String',num2str(teta5deg));
set(handles.textteta6,'String',num2str(teta6deg));
set(handles.textd2,'String',num2str(d2));
set(handles.textd3,'String',num2str(d3));
end
if BP==128 %BP==128 =>R2 controlar eixos dos YY
% pause(0.01);
y_joy=samples(1); %%varia entre -100 e 100
%y_joy=y_joy+100; %%varia entre 0 e 200
y_joy=y_joy+y_joyantesPy;
y_joyantesPy=y_joy;
Pymax=sqrt((282^2)-(Px^2));
Pymin=sqrt((112.75^2)-(Px^2));
if(y_joy>=0)
Py=((y_joy*(Pymax-Pymin)/100)+Pymin);
else
Py=((y_joy*(Pymax-Pymin)/100)-Pymin);
end
if(y_joy>100)
Py=Pymax;
end
if(y_joy<-100)
Py=-Pymax;
end
teta1=atan2(Py,Px)+atan2(sqrt(Px^2+Py^2-l1^2),l1);
d2=Pz;
d3=sin(teta1)*Px-cos(teta1)*Py-d4;
teta4=atan2(1,0);
teta5=(tetap*pi)/180;
tetaf=(tetaf*pi)/180;
teta6=tetaf-teta4;
Pxstr=num2str(Px);
Pystr=num2str(Py);
Pzstr=num2str(Pz);
set(handles.textpx,'String',Pxstr);
set(handles.textpy,'String',Pystr);
set(handles.textpz,'String',Pzstr);
SimuladorCs('Desenha_robo',hObject, eventdata,handles); %tem q estar dentro senao o cpu est a 100%
teta1deg=teta1*180/pi;
teta4deg=teta4*180/pi;
teta5deg=teta5*180/pi;
teta6deg=teta6*180/pi;
set(handles.textteta1,'String',num2str(teta1deg));
set(handles.textteta4,'String',num2str(teta4deg));
set(handles.textteta5,'String',num2str(teta5deg));
set(handles.textteta6,'String',num2str(teta6deg));
set(handles.textd2,'String',num2str(d2));
set(handles.textd3,'String',num2str(d3));
end
if BP==16 %BP==16 =>L1 controlar eixos dos ZZ
% pause(0.01);
z_joy=samples(3); %%varia entre -100 e 100
%z_joy=z_joy+100; %%varia entre 0 e 200
z_joy=z_joy+z_joyantesPz;
z_joyantesPz=z_joy;
Pz=((z_joy*180)/200)+90;
if(z_joy>100)
Pz=180;
end
if(z_joy<-100)
Pz=0;
end
teta1=atan2(Py,Px)+atan2(sqrt(Px^2+Py^2-l1^2),l1);
d2=Pz;
d3=sin(teta1)*Px-cos(teta1)*Py-d4;
teta4=atan2(1,0);
teta5=(tetap*pi)/180;
tetaf=(tetaf*pi)/180;
teta6=tetaf-teta4;
Pxstr=num2str(Px);
Pystr=num2str(Py);
Pzstr=num2str(Pz);
set(handles.textpz,'String',Pzstr);
set(handles.textpx,'String',Pxstr);
set(handles.textpy,'String',Pystr);
SimuladorCs('Desenha_robo',hObject, eventdata,handles); %tem q estar dentro senao o cpu est a 100%
teta1deg=teta1*180/pi;
teta4deg=teta4*180/pi;
teta5deg=teta5*180/pi;
teta6deg=teta6*180/pi;
set(handles.textteta1,'String',num2str(teta1deg));
set(handles.textteta4,'String',num2str(teta4deg));
set(handles.textteta5,'String',num2str(teta5deg));
set(handles.textteta6,'String',num2str(teta6deg));
set(handles.textd2,'String',num2str(d2));
set(handles.textd3,'String',num2str(d3));
end
end