summaryrefslogtreecommitdiffstats
path: root/Kod/bilbana/IOFunctions/set_car_speed.m
diff options
context:
space:
mode:
authorvikle012 <viktor.leek@liu.se>2019-09-11 13:57:14 +0200
committervikle012 <viktor.leek@liu.se>2019-09-11 13:57:14 +0200
commite66efbbe8df2dd4e7de0a1e9bd129cf92e00f92f (patch)
tree5ec35be0c219a2e6b017e12e450e76157b9de044 /Kod/bilbana/IOFunctions/set_car_speed.m
downloadtfyy51-e66efbbe8df2dd4e7de0a1e9bd129cf92e00f92f.tar.gz
Initializes repo.
Diffstat (limited to 'Kod/bilbana/IOFunctions/set_car_speed.m')
-rw-r--r--Kod/bilbana/IOFunctions/set_car_speed.m56
1 files changed, 56 insertions, 0 deletions
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