1 | #include "Arduino.h" |
2 | #include "ard1.h" |
3 | #include "serial.h" |
4 | #include "reset.h" |
5 |
|
6 |
|
7 | void oninput(String message); |
8 |
|
9 | // One time |
10 | void setup() { |
11 | digitalWrite(PIN_RESET, HIGH); |
12 | serial(); |
13 | Serial.println("ARD1: Motor Controller Active"); |
14 | pinMode(PIN_BRAKES, OUTPUT); |
15 | pinMode(PIN_MR_D, OUTPUT); |
16 | pinMode(PIN_MR_R, OUTPUT); |
17 | pinMode(PIN_ML_D, OUTPUT); |
18 | pinMode(PIN_ML_R, OUTPUT); |
19 | } |
20 |
|
21 | int brakes = 1; |
22 |
|
23 | void oninput (String message) { |
24 | Serial.print("ARD1: Received information - "); |
25 | Serial.println(message); |
26 | if (message == String("Restart")) { |
27 | Serial.println("ARD1: Restarting..."); |
28 | reset(); |
29 | } else if (message == String("b0")) { |
30 | Serial.println("ARD1: Turning brakes off"); |
31 | brakes = 0; |
32 | digitalWrite(PIN_BRAKES, HIGH); |
33 | } else if (message == String("b1")) { |
34 | Serial.println("ARD1: Turning brakes on"); |
35 | brakes = 1; |
36 | digitalWrite(PIN_MR_D, LOW); |
37 | digitalWrite(PIN_MR_R, LOW); |
38 | digitalWrite(PIN_ML_D, LOW); |
39 | digitalWrite(PIN_ML_R, LOW); |
40 | delay(CHANGE_DELAY); |
41 | digitalWrite(PIN_BRAKES, LOW); |
42 | } |
43 | if (brakes == 1) return; |
44 | if (message == String("mr0")) { |
45 | Serial.println("ARD1: Turning MotorRight off"); |
46 | digitalWrite(PIN_MR_D, LOW); |
47 | digitalWrite(PIN_MR_R, LOW); |
48 | } else if (message == String("mr1")) { |
49 | Serial.println("ARD1: Turning MotorRight on (drive)"); |
50 | digitalWrite(PIN_MR_R, LOW); |
51 | delay(CHANGE_DELAY); |
52 | digitalWrite(PIN_MR_D, HIGH); |
53 | } else if (message == String("mr-1")) { |
54 | Serial.println("ARD1: Turning MotorRight on (reverse)"); |
55 | digitalWrite(PIN_MR_D, LOW); |
56 | delay(CHANGE_DELAY); |
57 | digitalWrite(PIN_MR_R, HIGH); |
58 | } else if (message == String("ml0")) { |
59 | Serial.println("ARD1: Turning MotorLeft off"); |
60 | digitalWrite(PIN_ML_D, LOW); |
61 | digitalWrite(PIN_ML_R, LOW); |
62 | } else if (message == String("ml1")) { |
63 | Serial.println("ARD1: Turning MotorLeft on (drive)"); |
64 | digitalWrite(PIN_ML_R, LOW); |
65 | delay(CHANGE_DELAY); |
66 | digitalWrite(PIN_ML_D, HIGH); |
67 | } else if (message == String("ml-1")) { |
68 | Serial.println("ARD1: Turning MotorLeft on (reverse)"); |
69 | digitalWrite(PIN_ML_D, LOW); |
70 | delay(CHANGE_DELAY); |
71 | digitalWrite(PIN_ML_R, HIGH); |
72 | } else if (message == String("m0")) { |
73 | Serial.println("ARD1: Turning both motors off"); |
74 | digitalWrite(PIN_MR_D, LOW); |
75 | digitalWrite(PIN_MR_R, LOW); |
76 | digitalWrite(PIN_ML_D, LOW); |
77 | digitalWrite(PIN_ML_R, LOW); |
78 | } else if (message == String("m1")) { |
79 | Serial.println("ARD1: Turning both motors on (Drive)"); |
80 | digitalWrite(PIN_MR_R, LOW); |
81 | digitalWrite(PIN_ML_R, LOW); |
82 | delay(CHANGE_DELAY); |
83 | digitalWrite(PIN_MR_D, HIGH); |
84 | digitalWrite(PIN_ML_D, HIGH); |
85 | } else if (message == String("m-1")) { |
86 | Serial.println("ARD1: Turning both motors on (Reverse)"); |
87 | digitalWrite(PIN_MR_D, LOW); |
88 | digitalWrite(PIN_ML_D, LOW); |
89 | delay(CHANGE_DELAY); |
90 | digitalWrite(PIN_MR_R, HIGH); |
91 | digitalWrite(PIN_ML_R, HIGH); |
92 | } |
93 | } |
94 |
|
95 | // Repeatedly |
96 | void loop() { |
97 | if (Serial.available() > 0) oninput(Serial.readStringUntil(';')); |
98 | delay(500); |
99 | } |
100 |
|