From e66efbbe8df2dd4e7de0a1e9bd129cf92e00f92f Mon Sep 17 00:00:00 2001 From: vikle012 Date: Wed, 11 Sep 2019 13:57:14 +0200 Subject: Initializes repo. --- Kod/bilbana/IOFunctions/set_car_speed.m | 56 +++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Kod/bilbana/IOFunctions/set_car_speed.m (limited to 'Kod/bilbana/IOFunctions/set_car_speed.m') diff --git a/Kod/bilbana/IOFunctions/set_car_speed.m b/Kod/bilbana/IOFunctions/set_car_speed.m new file mode 100644 index 0000000..3aab1db --- /dev/null +++ b/Kod/bilbana/IOFunctions/set_car_speed.m @@ -0,0 +1,56 @@ +function [] = set_car_speed(track,speed) +%SET_CAR_SPEED Sets the specified car (track) to a specified speed. +% Changes the duty cycle of counter 0 and 4 to change speed of car on +% track 1 and track 2 respectively. Valid values of the duty cycle are +% between 0 and 1, the input speed of the cars are defined as percent. +% +% Tobias Lindell 2013-02-12. + +global mytaskh +global lib + +switch nargin + case 2 + % Check if _any_ counters been initilized, stop program if not + if isempty(mytaskh) + disp(['User needs to initialize counters for track ',num2str(track),' before setting car speed!']) + clearvars -global mytaskh lib + return + end + + % Setting duty cycle, with limits + speed = min(99, speed); + speed = max(0.1,speed); + duty_cycle = speed / 100; + + switch track + case 1 + % Check if track 1 counter has been initialized, stop program if not + if isfield(mytaskh,'ctr_0') + % Stop task (necessary to change duty cycle) + calllib(lib,'DAQmxStopTask',mytaskh.ctr_0); + % Set new duty cycle + calllib(lib,'DAQmxSetCOPulseDutyCyc',mytaskh.ctr_0,'Dev1/ctr0',duty_cycle); + % Restart task + calllib(lib,'DAQmxStartTask',mytaskh.ctr_0); + else + disp(['User needs to initialize counters for track ',num2str(track),' before setting car speed!']) + return + end + case 2 + if isfield(mytaskh,'ctr_4') + calllib(lib,'DAQmxStopTask',mytaskh.ctr_4); + calllib(lib,'DAQmxSetCOPulseDutyCyc',mytaskh.ctr_4,'Dev1/ctr4',duty_cycle); + calllib(lib,'DAQmxStartTask',mytaskh.ctr_4); + else + disp(['User needs to initialize counters for track ',num2str(track),' before setting car speed!']) + return + end + otherwise + disp('Wrong track number sent to set_car_speed!') + return + end + otherwise + disp('Wrong number of arguments sent to set_car_speed(track,speed)! Should be 2!') +end +end -- cgit v1.2.1