MATLAB Client - example of communication between mbed and MATLAB

Experiment_Example_MATLAB.m

Committer:
Patrick Wensing
Date:
2015-09-22
Revision:
5:1497fccca82e
Parent:
4:41f9e216a12d

File content as of revision 5:1497fccca82e:

function output_data = Experiment_Example_MATLAB()
    figure(1);  clf;       % Create an empty figure to update later
    subplot(211)
    h1 = plot([0],[0]);
    h1.XData = []; h1.YData = [];
    ylabel('Position (counts)');
    
    subplot(212)
    h2 = plot([0],[0]);
    h2.XData = []; h2.YData = [];
    ylabel('Velocity (counts/s)');
    
    % This function will get called any time there is new data from
    % the FRDM board. Data comes in blocks, rather than one at a time.
    function my_callback(new_data)
        t = new_data(:,1);   % time
        pos = new_data(:,2); % position
        vel = new_data(:,3); % velocity
        N = length(pos);
        
        h1.XData(end+1:end+N) = t;   % Update subplot 1
        h1.YData(end+1:end+N) = pos;
        h2.XData(end+1:end+N) = t;   % Update subplot 2
        h2.YData(end+1:end+N) = vel;
    end
    
    frdm_ip  = '192.168.1.100';     % FRDM board ip
    frdm_port= 11223;               % FRDM board port  
    params.callback = @my_callback; % callback function
    params.timeout  = 2;            % end of experiment timeout
    
    % The example program provided takes two arguments
    v1 = 1.0;           % pwm applied for first second 
    v2 = 0.0;           % pwm applied for second second
    input = [v1 v2];    % input sent to FRDM board
    output_size = 3;    % number of outputs expected
   
    output_data = RunExperiment(frdm_ip,frdm_port,input,output_size,params);
    
end