1char command;
2int const directionA = 12;
3int const directionB = 13;
4int const speedA = 3;
5int const speedB = 11;
6int const brakeA = 9;
7int const brakeB = 8;
8bool flagBackward;
9
10void setup() {
11 Serial.begin(9600);
12 pinMode(directionA, OUTPUT);
13 pinMode(directionB, OUTPUT);
14 pinMode(speedA, OUTPUT);
15 pinMode(speedB, OUTPUT);
16 pinMode(brakeA, OUTPUT);
17 pinMode(brakeB, OUTPUT);
18}
19
20void loop() {
21
22 if (Serial.available() > 0) {
23
24 command = Serial.read();
25
26 switch (command) {
27 case ('='):
28 flagBackward = false;
29 analogWrite(speedA, 0);
30 analogWrite(speedB, 0);
31 digitalWrite(brakeA, HIGH);
32 digitalWrite(brakeB, HIGH);
33 break;
34
35 case ('F'):
36 flagBackward = false;
37 digitalWrite(brakeA, LOW);
38 digitalWrite(brakeB, LOW);
39 digitalWrite(directionA, LOW);
40 digitalWrite(directionB, LOW);
41 analogWrite(speedA, 255);
42 analogWrite(speedB, 255);
43 break;
44
45 case ('B'):
46 flagBackward = true;
47 digitalWrite(brakeA, LOW);
48 digitalWrite(brakeB, LOW);
49 digitalWrite(directionA, HIGH);
50 digitalWrite(directionB, HIGH);
51 analogWrite(speedA, 255);
52 analogWrite(speedB, 255);
53 break;
54
55 case ('R'):
56 digitalWrite(brakeA, LOW);
57 digitalWrite(brakeB, HIGH);
58 if (flagBackward == false) {
59 digitalWrite(directionA, LOW);
60 } else {
61 digitalWrite(directionA, HIGH);
62 }
63 digitalWrite(directionB, HIGH);
64 analogWrite(speedA, 255);
65 analogWrite(speedB, 0);
66 break;
67
68 case ('L'):
69 digitalWrite(brakeA, HIGH);
70 digitalWrite(brakeB, LOW);
71 digitalWrite(directionA, HIGH);
72 if (flagBackward == false) {
73 digitalWrite(directionB, LOW);
74 } else {
75 digitalWrite(directionB, HIGH);
76 }
77 analogWrite(speedA, 0);
78 analogWrite(speedB, 255);
79 break;
80
81 }
82 }
83}
84