-
Notifications
You must be signed in to change notification settings - Fork 0
/
ultrasonic.m
72 lines (61 loc) · 2.44 KB
/
ultrasonic.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
% Car automation
% Touch sensor (1) Color sensor (1) Ultrasonic sensor (1) Gyro sensor (1)
% javaclasspath('/Applications/MATLAB_R2023b.app/toolbox/ev3')
%brick = Brick('ioType','wifi','wfAddr','127.0.0.1','wfPort',5555,'wfSN','0016533dbaf5')
classdef ultrasonic
properties(Constant)
nextWallDistance = 0;
end
methods(Static)
function changeDetected = wallChange(brick)
initialDistance = brick.UltrasonicDist(4);
changeDetected = false;
while true
currentDistance = brick.UltrasonicDist(4);
fprintf('Current distance: %.3f cm, Initial distance: %.3f cm\n', currentDistance, initialDistance);
if (currentDistance - initialDistance) > 0.5
ultrasonic.nextWallDistance = currentDistance;
changeDetected = true;
fprintf('New wall at %.3f cm away. Changing direction.\n', ultrasonic.nextWallDistance);
break;
else
brick.MoveMotor('AB', -60);
pause(1);
end
end
end
function goForward(brick, speed)
brick.MoveMotor('AB', -speed);
end
function turnLeft(brick, speed, duration)
brick.MoveMotor('A', speed);
%brick.MoveMotor('B', -speed);
pause(duration);
brick.StopAllMotors('Brake');
end
function turnRight(brick, speed, duration)
%brick.MoveMotor('A', -speed);
brick.MoveMotor('B', speed);
pause(duration);
brick.StopAllMotors('Brake');
end
function turnLeft2(brick, speed, angle)
brick.ResetMotorAngle('A');
brick.ResetMotorAngle('B');
brick.MoveMotorAngleRel('A', speed, angle, 'Brake');
brick.MoveMotorAngleRel('B', -speed, angle, 'Brake');
brick.WaitForMotor('A');
brick.WaitForMotor('B');
% brick.StopAllMotors('Brake');
end
function turnRight2(brick, speed, angle)
brick.ResetMotorAngle('A');
brick.ResetMotorAngle('B');
brick.MoveMotorAngleRel('A', -speed, angle, 'Brake');
brick.MoveMotorAngleRel('B', speed, angle, 'Brake');
brick.WaitForMotor('A');
brick.WaitForMotor('B');
% brick.StopAllMotors('Brake');
end
end
end