-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMove.cpp
135 lines (121 loc) · 3.19 KB
/
Move.cpp
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
#include <Arduino.h>
#include "Move.h"
#define L_WHL_SPD 5
#define R_WHL_SPD 6
#define L_WHL_FWD 7
#define L_WHL_BWD 8
#define R_WHL_BWD 9
#define R_WHL_FWD 11
#define SLOW 100
#define FAST 140
using namespace Move;
namespace {
void forward() {
analogWrite(L_WHL_SPD, SLOW);
analogWrite(R_WHL_SPD, SLOW);
digitalWrite(L_WHL_FWD, HIGH);
digitalWrite(L_WHL_BWD, LOW);
digitalWrite(R_WHL_FWD, HIGH);
digitalWrite(R_WHL_BWD, LOW);
}
void forwardPlus() {
analogWrite(L_WHL_SPD, FAST);
analogWrite(R_WHL_SPD, FAST);
digitalWrite(L_WHL_FWD, HIGH);
digitalWrite(L_WHL_BWD, LOW);
digitalWrite(R_WHL_FWD, HIGH);
digitalWrite(R_WHL_BWD, LOW);
}
void backward() {
analogWrite(L_WHL_SPD, SLOW);
analogWrite(R_WHL_SPD, SLOW);
digitalWrite(L_WHL_FWD, LOW);
digitalWrite(L_WHL_BWD, HIGH);
digitalWrite(R_WHL_FWD, LOW);
digitalWrite(R_WHL_BWD, HIGH);
}
void left() {
analogWrite(L_WHL_SPD, SLOW);
analogWrite(R_WHL_SPD, SLOW);
digitalWrite(L_WHL_FWD, LOW);
digitalWrite(L_WHL_BWD, HIGH);
digitalWrite(R_WHL_FWD, HIGH);
digitalWrite(R_WHL_BWD, LOW);
}
void leftPlus() {
analogWrite(L_WHL_SPD, FAST);
analogWrite(R_WHL_SPD, FAST);
digitalWrite(L_WHL_FWD, LOW);
digitalWrite(L_WHL_BWD, HIGH);
digitalWrite(R_WHL_FWD, HIGH);
digitalWrite(R_WHL_BWD, LOW);
}
void right() {
analogWrite(L_WHL_SPD, FAST);
analogWrite(R_WHL_SPD, FAST);
digitalWrite(L_WHL_FWD, HIGH);
digitalWrite(L_WHL_BWD, LOW);
digitalWrite(R_WHL_FWD, LOW);
digitalWrite(R_WHL_BWD, HIGH);
}
void rightPlus() {
analogWrite(L_WHL_SPD, SLOW);
analogWrite(R_WHL_SPD, SLOW);
digitalWrite(L_WHL_FWD, HIGH);
digitalWrite(L_WHL_BWD, LOW);
digitalWrite(R_WHL_FWD, LOW);
digitalWrite(R_WHL_BWD, HIGH);
}
}
void Move::setup() {
pinMode(L_WHL_FWD, OUTPUT);
pinMode(L_WHL_BWD, OUTPUT);
pinMode(R_WHL_BWD, OUTPUT);
pinMode(R_WHL_FWD, OUTPUT);
pinMode(L_WHL_SPD, OUTPUT);
pinMode(R_WHL_SPD, OUTPUT);
stop();
}
void Move::stop() {
digitalWrite(L_WHL_SPD, LOW);
digitalWrite(R_WHL_SPD, LOW);
}
void Move::move(Command m) {
switch (m) {
case Forward:
Serial.println("Forward");
forward();
break;
case ForwardPlus:
Serial.println("Forward Plus");
forwardPlus();
break;
case Backward:
Serial.println("Backward");
backward();
break;
case Left:
Serial.println("Left");
left();
break;
case LeftPlus:
Serial.println("Left Plus");
leftPlus();
break;
case Right:
Serial.println("Right");
right();
break;
case RightPlus:
Serial.println("Right Plus");
rightPlus();
break;
case Stop:
Serial.println("Stop");
stop();
break;
default:
stop();
break;
}
}