function [error,errorstr]=mouse(H,speed)

scuid=[2 4];

% Comprimento dos elos
L1=9.5;
L2=9.5;
L3=6.0;
L=[L1 L2 L3];

% Coordenadas cartesianas iniciais
x0=0;
y0=0.5;

% Activação dos PWMs
[error,errorstr]=inituc(H,scuid);
if (error==1), return, end

% Esperar que a activação dos PWMs seja feito
disp 'Activando PWMs...'
pause(5)
disp 'PWMs activados!'

% Posicionamento da perna nas coordenadas iniciais
[theta,error,errorstr]=motioncartesian(H,[x0,y0],L,speed);
if (error==1), return, end

% Espera que os motores terminem o movimento
[stat,error,errorstr]=waitmotionfin(H,scuid);
if (stat==0), return, end

% Callback para medição dos sensores de força e da corrente
function_name=['show_force(' num2str(H) ',[' num2str(scuid) '],2)'];
tmr=timer;
tmr.executionmode='fixedrate';
tmr.startdelay=0;
tmr.period=0.25;
tmr.timerfcn=function_name;
% Arrancar a callback
start(tmr);

figure(2);

% Sem erros de input no inicio
err=0;
errstr='OK';

% Inicialização das variáveis de trabalho
x=x0;   y=y0;
theta=[-pi/2 0];

figure(1);
while(1)
    
    % Aplicação de um movimento cartesiano
    [thetanew,err,errstr]=motioncartesian(H,[x,y],L,speed);
    if (err==0)
        theta=thetanew;
    end

    leg_draw(theta,L);
    
    hold on
    % Cálculo das coordenadas das juntas (cinemática directa)
    if (err==1)
        text(-sum(L),floor(-L(1)/8),0,errstr);
    end
    text(0,floor(L(1)/8),'EXIT');
    hold off
    
    % Pedido de novas coordenadas
    [x,y]=ginput(1);
    if (abs(x)<L(1)/4 && abs(y)<L(1)/4)
        break
    end
    
    y=y+L(1)+L(2)+L(3);
end

motioncartesian(H,[x0,y0],L,speed);

% Espera que os motores terminem o movimento
[stat,error,errorstr]=waitmotionfin(H,scuid);
if (stat==0), return, end

% Para a callback
stop(tmr);

close all

% Desactivação dos PWMs
[error,errorstr]=killuc(H,scuid);
if (error==1), return, end

disp 'Bye Bye'