%% Cdigos de inicializacin de la interfaz
function varargout = Interfaz_PPG(varargin)
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Interfaz_PPG_OpeningFcn, ...
'gui_OutputFcn', @Interfaz_PPG_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
% --- Executes just before Interfaz_PPG is made visible.
%ejecucion de la interfaz grafica
function Interfaz_PPG_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for Interfaz_PPG
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
handles.a=arduino;
handles.a
set(handles.puerto,'String',handles.a.Port);
set(handles.placa,'String',handles.a.Board);
set(handles.PININ,'String',handles.a.AvailableAnalogPins);
% --- Outputs from this function are returned to the command line.
function varargout = Interfaz_PPG_OutputFcn(hObject, eventdata, handles)
% Get default command line output from handles structure
varargout{1} = handles.output;
% ...::: Codigos de adquisicin y de interfaz :::...
% Ajuste de escala de voltaje
function vol_Callback(hObject, eventdata, handles)
function vol_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
% Ajuste de posicin
function pos_Callback(hObject, eventdata, handles)
function pos_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
% Ajuste de escala detiempo-----------------
function time_Callback(hObject, eventdata, handles)
function time_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
% Boton para reestablecer valores iniciales------------------------
function restart_Callback(hObject, eventdata, handles)
set(handles.vol,'Value',0);
set(handles.pos,'Value',0);
set(handles.time,'Value',1);
set(handles.superior,'Value',5);
set(handles.inferior,'Value',0);
set(handles.cursor_a,'Value',0);
set(handles.cursor_b,'Value',10);
% Boton para iniciar el programa-----------------------------------
function start_Callback(hObject, eventdata, handles)
clc
global stop
stop = 0;
global pause
pause = 0;
% Limpiamos y abrimos el puerto para Arduino--------------------
%puerto real---------------------------------------------------
delete(instrfind({'Port'},{'COM9'}));
IO = arduino('COM9');
% Parmetros de medidas---------------------------------------------
mps = 20;
tmax = get(handles.time,'Value'); % Tiempo de captura en segundos
tmax = round(tmax,0)*10;
pos = get(handles.pos,'Value');
vol = get(handles.vol,'Value');
% Preparar la figura----------------------------------------
cla(handles.axes1,'reset');
axes(handles.axes1);
axis([0 tmax (-0.5+pos+vol) (5+pos-vol)]);
l1 = line(nan,nan,'Color','b','LineWidth',2);
l2 = line(nan,nan,'Color','r','LineWidth',2);
l3 = line(nan,nan,'Color','g','LineWidth',2);
l4 = line(nan,nan,'Color','m','LineWidth',2);
l5 = line(nan,nan,'Color','c','LineWidth',2);
grid on
hold on
% Inicializar---------------------------------------------
v1 = zeros(1,tmax*mps);
i = 1;
a = 0;
b = tmax;
band = tmax;
% Ejecutar bucle cronometrado-------------------------------
while (stop == 0)
if(pause == 1)
myString = sprintf('En pausa');
else
myString = sprintf('T. Real');
end
set(handles.texto_pausa, 'String', myString);
tmax = get(handles.time,'Value');
if(tmax >= 1)
tmax = round(tmax,0)*10;
else
tmax = round(tmax*10,0);
end
pos = get(handles.pos,'Value');
vol = get(handles.vol,'Value');
ch = i/mps;
if (ch >= b)
cla(handles.axes1,'reset');
a = a + tmax;
b = b + tmax;
if(ch >= 60)
i = 1;
a = 0;
b = tmax;
end
v1 = zeros(a,b*mps);
axis([a b (-0.5+pos+vol) (5+pos-vol)])
l1 = line(nan,nan,'Color','b','LineWidth',2);
l2 = line(nan,nan,'Color','r','LineWidth',2);
l3 = line(nan,nan,'Color','g','LineWidth',2);
l4 = line(nan,nan,'Color','m','LineWidth',2);
l5 = line(nan,nan,'Color','c','LineWidth',2);
grid on
else
if(tmax ~= band)
b = a + tmax;
band = tmax;
end
%limites de grafica
axis([a b (-0.5+pos+vol) (5.5+pos-vol)])
end
% Leer del puerto analgico-----------------------------------A0
if(pause == 0)
v1(i)= readVoltage(IO,'A0');
end
% Dibujar en la figura
if(a == 0)
st = 1;
x = linspace(0,i/mps,i);
set(l1,'YData',v1(st:i),'XData',x); % Seal
else
st = a*mps;
x = linspace(a-1/20,i/mps,i-st+1);
set(l1,'YData',v1(st:i),'XData',x); % Seal
end
sup = linspace(get(handles.superior,'Value'), get(handles.superior,'Value'), length(x));
set(l2,'YData',sup,'XData',x); % Superior
inf = linspace(get(handles.inferior,'Value'), get(handles.inferior,'Value'), length(x));
set(l3,'YData',inf,'XData',x); % Inferior
A = a+(b-a)/10*get(handles.cursor_a,'Value');
set(l4,'YData',[0 5],'XData',[A A]); % A
B = a+(b-a)/10*get(handles.cursor_b,'Value');
set(l5,'YData',[0 5],'XData',[B B]); % B
dv = sprintf('%f', round(sup-inf,2));
set(handles.delta_v, 'String', dv);
dt = sprintf('%f', round(B-A,2));
set(handles.delta_t, 'String', dt);
drawnow
% Seguir
if(pause == 0)
i = i+1;
end
end
% Botn para detener el programa
function stop_Callback(hObject, eventdata, handles)
global stop
stop = 1;
% Slider de cursor superior
function superior_Callback(hObject, eventdata, handles)
function superior_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
% Slider de cursor inferior
function inferior_Callback(hObject, eventdata, handles)
function inferior_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
% Boton de pausa de Grfica
function pausa_Callback(hObject, eventdata, handles)
global pause
if(pause == 0)
pause = 1;
else
pause = 0;
end
% Slider de cursor A
function cursor_a_Callback(hObject, eventdata, handles)
function cursor_a_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
% Slider de cursor B
function cursor_b_Callback(hObject, eventdata, handles)
function cursor_b_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
function puerto_Callback(hObject, eventdata, handles)
% hObject handle to puerto (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of puerto as text
% str2double(get(hObject,'String')) returns contents of puerto as a double
% --- Executes during object creation, after setting all properties.
function puerto_CreateFcn(hObject, eventdata, handles)
% hObject handle to puerto (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function figure1_CloseRequestFcn(hObject, eventdata, handles)
% Hint: delete(hObject) closes the figure
clear handles.a
delete(hObject);
clear
Comments