forked from DexterInd/GoPiGo
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMotorController.cs
More file actions
154 lines (131 loc) · 4.15 KB
/
Copy pathMotorController.cs
File metadata and controls
154 lines (131 loc) · 4.15 KB
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
using System;
namespace GoPiGo
{
public interface IMotorController
{
IMotorController MoveForward();
IMotorController MoveForwardNoPid();
IMotorController MoveBackward();
IMotorController MoveBackwardNoPid();
IMotorController MoveLeft();
IMotorController RotateLeft();
IMotorController MoveRight();
IMotorController RotateRight();
IMotorController Stop();
IMotorController IncreaseSpeedBy10();
IMotorController DecreaseSpeedBy10();
IMotorController ControlMotorOne(int direction, int speed);
IMotorController RotateServo(int degrees);
IMotorController EnableServo();
IMotorController DisableServo();
IMotorController SetLeftMotorSpeed(int speed);
IMotorController SetRightMotorSpeed(int speed);
}
public class MotorController : IMotorController
{
internal MotorController(IGoPiGo goPiGo)
{
if (goPiGo == null) throw new ArgumentNullException(nameof(goPiGo));
GoPiGo = goPiGo;
}
public IGoPiGo GoPiGo { get;private set; }
public IMotorController MoveForward()
{
GoPiGo.RunCommand(Commands.MoveForward);
return this;
}
public IMotorController MoveForwardNoPid()
{
GoPiGo.RunCommand(Commands.MoveForwardNoPid);
return this;
}
public IMotorController MoveBackward()
{
GoPiGo.RunCommand(Commands.MoveBackward);
return this;
}
public IMotorController MoveBackwardNoPid()
{
GoPiGo.RunCommand(Commands.MoveBackwardNoPid);
return this;
}
public IMotorController MoveLeft()
{
GoPiGo.RunCommand(Commands.MoveLeft);
return this;
}
public IMotorController RotateLeft()
{
GoPiGo.RunCommand(Commands.RotateLeft);
return this;
}
public IMotorController MoveRight()
{
GoPiGo.RunCommand(Commands.MoveRight);
return this;
}
public IMotorController RotateRight()
{
GoPiGo.RunCommand(Commands.RotateRight);
return this;
}
public IMotorController Stop()
{
GoPiGo.RunCommand(Commands.Stop);
return this;
}
public IMotorController IncreaseSpeedBy10()
{
GoPiGo.RunCommand(Commands.IncreaseSpeedBy10);
return this;
}
public IMotorController DecreaseSpeedBy10()
{
GoPiGo.RunCommand(Commands.DecreaseSpeedBy10);
return this;
}
public IMotorController ControlMotorOne(int direction, int speed)
{
GoPiGo.RunCommand(Commands.MotorOne, (byte)direction, (byte)speed);
return this;
}
public IMotorController ControlMotorTwo(int direction, int speed)
{
GoPiGo.RunCommand(Commands.MotorTwo, (byte)direction, (byte)speed);
return this;
}
public IMotorController RotateServo(int degrees)
{
GoPiGo.RunCommand(Commands.RotateServo, (byte)degrees);
return this;
}
public IMotorController EnableServo()
{
GoPiGo.RunCommand(Commands.EnableServo);
return this;
}
public IMotorController DisableServo()
{
GoPiGo.RunCommand(Commands.DisableServo);
return this;
}
public IMotorController SetLeftMotorSpeed(int speed)
{
speed = Math.Min(speed, 255);
GoPiGo.RunCommand(Commands.SetLeftMotorSpeed, (byte)speed);
return this;
}
public IMotorController SetRightMotorSpeed(int speed)
{
speed = Math.Min(speed, 255);
GoPiGo.RunCommand(Commands.SetRightMotorSpeed, (byte)speed);
return this;
}
public IMotorController SetSpeed(int speed)
{
SetLeftMotorSpeed(speed);
SetRightMotorSpeed(speed);
return this;
}
}
}