-
Notifications
You must be signed in to change notification settings - Fork 0
/
Project.m~
100 lines (75 loc) · 1.93 KB
/
Project.m~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
clear;
%
handle = EV3();
handle.connect('bt', 'serPort', '/dev/rfcomm0');
%
minDistanceDrive = 40;
error = 10;
distanceSensor = handle.sensor4;
motorRotateSensor = handle.motorC;
motorRight = handle.motorD;
motorLeft = handle.motorA;
soundSensor = handle.sensor3;
%MODES:
% 0 or 1 clap = stop;
% 2 claps = autonomous driving
% 3 claps = park
% 4 exit
currentMode = 0;
% set mode to dB
soundSensor.mode = DeviceMode.NXTSound.DB;
% clap detection threshold
clapThreshold = 30;
numSamples = 12;
% initialize sample array and state of lamps
values = zeros(numSamples, 1);
changes = zeros(numSamples - 1, 1);
iterations = 0;
AnzahlderKlatscher = 0;
changedClaps = false;
lastChanged = 0;
tic;
while 1
% start loop
iterations = iterations + 1;
% throw away oldest sample and add the new one at the end
values = values(2:end);
try
values(end+1) = soundSensor.value;
catch
values(end+1) = 0;
end
changes = diff(values);
NewNumberOfClaps = length(find(changes > clapThreshold == 1));
if(NewNumberOfClaps > AnzahlderKlatscher)
changedClaps = true;
AnzahlderKlatscher = NewNumberOfClaps;
lastChanged = toc;
end
if(toc - lastChanged > 0.5 && changedClaps)
currentMode = AnzahlderKlatscher;
changedClaps = false;
end
if(NewNumberOfClaps == 0)
AnzahlderKlatscher = 0;
end
display(num2str(currentMode));
%changing the mode
if(currentMode == 1)
elseif(currentMode == 2)
try
driveAutonomous(distanceSensor , motorRotateSensor, motorRight, motorLeft, minDistanceDrive, error );
catch
end
elseif(currentMode == 3)
try
parkRobot(distanceSensor , motorRotateSensor, motorRight, motorLeft );
catch
end
currentMode = 0;
elseif(currentMode == 4)
break;
end
pause(0.05);
end
handle.disconnect();