Está en la página 1de 3

function varargout = servo_control(varargin)

% *************************************************************
%PROGRAMA QUE CONTROLA LAS ARTICULACIONES DE UN BRAZO ROBOT
%DE CINCO GRADOS DE LIBERTAD
% *************************************************************

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @servo_control_OpeningFcn, ...
'gui_OutputFcn', @servo_control_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

%*-*-FUNCIN DE CONDICIONES INICIALES*-*-*


function servo_control_OpeningFcn(hObject, eventdata, handles,
varargin)
%*-*-INICIO DE CONDICIONES INICIALES*-*-*
%*-*-CDIGO para centrar la interfaz
movegui(hObject,'center')
%*-*-FIN de CDIGO para centrar la interfaz
%*-*-Limpiar la pantalla y mostrar mensaje*-*-*-*-
clc; disp('Programa Ejecutndose')
%*-*-Configuracin del puerto serial*-*-*-*-*-*-*-*
handles.SerPIC = serial('COM1');%Seleccionar puerto COM1
set(handles.SerPIC,'BaudRate',2400);%Velocidad 2400 baudios
set(handles.SerPIC,'DataBits',8);%8 bits de datos
set(handles.SerPIC,'Parity','none');%Sin control de paridad
set(handles.SerPIC,'StopBits',1);%Un bit de parada
set(handles.SerPIC,'FlowControl','none');%Sin control de flujo
fopen(handles.SerPIC); %--Abrir el puerto serial
%********----------***************-----------************----------*
%*-*-FIN DE CONDICIONES INICIALES*-*-*

% Choose default command line output for servo_control


handles.output = hObject;
% Update handles structure
guidata(hObject, handles);

% --- Outputs from this function are returned to the command line.
function varargout = servo_control_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;

%********PROGRAMACIN PRINCIPAL*-*-*-*-*-*-*-
%CONTIENE:
%CONTROL DE LOS SLIDER QUE ENVIAN DATOS SERIALES
%AL MICROCONTROLADOR PIC 16F628A
% ----------- MOVIMIENTO DE LA MUECA-PIN 4-------------------
function motor_uno_Callback(hObject, eventdata, handles)
set(handles.motor_uno,'Enable','inactive')
val_s=round(get(hObject,'Value'));
grados=round((val_s*0.9)-45);
set(handles.pos_1,'String',grados);
fprintf(handles.SerPIC,'%c',[char(4) char(val_s)]);
pause(0.7)
set(handles.motor_uno,'Enable','on')
%----------------------------------------------------

% ----------- MOVIMIENTO DEL CODO-PIN 2-------------------.


function motor_dos_Callback(hObject, eventdata, handles)
%Slider que controla el motor del codo
set(handles.motor_dos,'Enable','inactive')
maxi=get(hObject,'Max');%Tomar valor mximo
mini=get(hObject,'Min');%Tomar valor mnimo
val_s=round(get(hObject,'Value'));
val_s=maxi-val_s+mini;%Inversin de movimiento
grados=round((val_s*0.9)-45);
set(handles.pos_2,'String',grados);
fprintf(handles.SerPIC,'%c',[char(2) char(val_s)]);%
pause(0.7)
set(handles.motor_dos,'Enable','on')
%---------------------------------------------------------------

% ----------- MOVIMIENTO DE GIRO -PIN 3-------------------.


function motor_tres_Callback(hObject, eventdata, handles)
%Slider que controla el motor tres (codo)
set(handles.motor_tres,'Enable','inactive')
val_s=round(get(hObject,'Value'));
grados=round((val_s*0.9)-45);
set(handles.pos_3,'String',grados);
fprintf(handles.SerPIC,'%c',[char(3) char(val_s)]);%
pause(0.7)
set(handles.motor_tres,'Enable','on')
%------------------------------------------------------------------

% ----------- MOVIMIENTO DE LA BASE-PIN 1-------------------


function motor_cuatro_Callback(hObject, eventdata, handles)
set(handles.motor_cuatro,'Enable','inactive')
maxi=get(hObject,'Max');%Tomar valor mximo
mini=get(hObject,'Min');%Tomar valor mnimo
val_s=round(get(hObject,'Value'));
val_s=maxi-val_s+mini;%Inversin de movimiento
grados=round((val_s*0.9)-45);%Conversin a grados
set(handles.pos_4,'String',grados);
fprintf(handles.SerPIC,'%c',[char(1) char(val_s)]);%
pause(0.7)
set(handles.motor_cuatro,'Enable','on')
%------------------------------------------------------------------

% --- Executes on slider movement.


function motor_cinco_Callback(hObject, eventdata, handles)
%Slider que controla el motor cinco (pinza)
set(handles.motor_cinco,'Enable','inactive')
val_s=round(get(hObject,'Value'));
set(handles.pos_5,'String',val_s);
fprintf(handles.SerPIC,'%c',[char(5) char(val_s)]);%
pause(0.7)
set(handles.motor_cinco,'Enable','on')
%-------------------------------------

% --- Executes during object deletion, before destroying properties.


function figure1_DeleteFcn(hObject, eventdata, handles)
%*-*-Cierra el puerto serial al cerrar la interfaz grfica*-*-*-
clc
try
fclose(handles.SerPIC) %--CIERRA EL PUERTO COM
delete(handles.SerPIC)
clear handles.SerPIC
disp('Puerto Serial Cerrado')
catch
disp('Error al cerrar el puerto serial')
end

También podría gustarte