1919#ifndef LOTTIE_LEMON_H
2020#define LOTTIE_LEMON_H
2121
22- #ifdef ARDUINO_AVR_ROBOT_MOTOR
23- #include " utility/LottieLemonMotorBoard.h"
24- #endif
25- #ifdef ARDUINO_AVR_ROBOT_CONTROL
26- #include " utility/LottieLemonControlBoard.h"
27- #endif
22+ #include < Arduino.h>
2823
2924namespace LottieLemon {
3025
26+ /*
27+ A message structure will be:
28+ switch mode (2):
29+ byte COMMAND_SWITCH_MODE, byte mode
30+ run (5):
31+ byte COMMAND_RUN, int speedL, int speedR
32+ analogWrite (3):
33+ byte COMMAND_ANALOG_WRITE, byte codename, byte value;
34+ digitalWrite (3):
35+ byte COMMAND_DIGITAL_WRITE, byte codename, byte value;
36+ analogRead (2):
37+ byte COMMAND_ANALOG_READ, byte codename;
38+ analogRead _return_ (4):
39+ byte COMMAND_ANALOG_READ_RE, byte codename, int value;
40+ digitalRead (2):
41+ byte COMMAND_DIGITAL_READ, byte codename;
42+ digitalRead _return_ (4):
43+ byte COMMAND_DIGITAL_READ_RE, byte codename, int value;
44+ read IR (1):
45+ byte COMMAND_READ_IR;
46+ read IR _return_ (9):
47+ byte COMMAND_READ_IR_RE, int valueA, int valueB, int valueC, int valueD;
48+
49+
50+ */
51+
3152 // Command code
32- enum {
53+ enum Command {
3354 COMMAND_SWITCH_MODE = 0 ,
3455 COMMAND_RUN = 10 ,
3556 COMMAND_MOTORS_STOP = 11 ,
@@ -48,55 +69,72 @@ namespace LottieLemon {
4869 COMMAND_LINE_FOLLOW_CONFIG = 100
4970 };
5071
51-
52- // component codename
53- enum {
54- CN_LEFT_MOTOR = 0 ,
55- CN_RIGHT_MOTOR = 1 ,
56- CN_IR = 2
57- };
58-
5972 // motor board modes
60- enum {
73+ enum Mode {
6174 MODE_SIMPLE = 0 ,
6275 MODE_LINE_FOLLOW = 1 ,
6376 MODE_ADJUST_MOTOR = 2 ,
6477 MODE_IR_CONTROL = 3
6578 };
6679
67- // bottom TKs, just for communication purpose
68- enum {
80+ // bottom TKs, just for communication purpose, DR, DW, AR
81+ enum BottomMicrocontrollerPin { // keep and extend to silkscreen names
6982 B_TK1 = 201 ,
7083 B_TK2 = 202 ,
7184 B_TK3 = 203 ,
72- B_TK4 = 204
85+ B_TK4 = 204 ,
86+ BOT_D7 = B_TK3,
87+ BOT_D8 = B_TK4,
88+ BOT_D9 = B_TK2,
89+ BOT_D10 = B_TK1
7390 };
7491
75- /*
76- A message structure will be:
77- switch mode (2):
78- byte COMMAND_SWITCH_MODE, byte mode
79- run (5):
80- byte COMMAND_RUN, int speedL, int speedR
81- analogWrite (3):
82- byte COMMAND_ANALOG_WRITE, byte codename, byte value;
83- digitalWrite (3):
84- byte COMMAND_DIGITAL_WRITE, byte codename, byte value;
85- analogRead (2):
86- byte COMMAND_ANALOG_READ, byte codename;
87- analogRead _return_ (4):
88- byte COMMAND_ANALOG_READ_RE, byte codename, int value;
89- digitalRead (2):
90- byte COMMAND_DIGITAL_READ, byte codename;
91- digitalRead _return_ (4):
92- byte COMMAND_DIGITAL_READ_RE, byte codename, int value;
93- read IR (1):
94- byte COMMAND_READ_IR;
95- read IR _return_ (9):
96- byte COMMAND_READ_IR_RE, int valueA, int valueB, int valueC, int valueD;
97-
92+ #ifdef ARDUINO_AVR_ROBOT_CONTROL
93+ // top TKs
94+ enum TopMultiplexerPin {
95+ T_TK0 = 100 ,
96+ T_TK1 = 101 ,
97+ T_TK2 = 102 ,
98+ T_TK3 = 103 ,
99+ T_TK4 = 104 ,
100+ T_TK5 = 105 ,
101+ T_TK6 = 106 ,
102+ T_TK7 = 107 ,
103+ TOP_M0 = T_TK0,
104+ TOP_M1 = T_TK1,
105+ TOP_M2 = T_TK2,
106+ TOP_M3 = T_TK3,
107+ TOP_M4 = T_TK4,
108+ TOP_M5 = T_TK5,
109+ TOP_M6 = T_TK6,
110+ TOP_M7 = T_TK7
111+ };
98112
99- */
113+ // top TKDs
114+ enum TopMicrocontrollerPin {
115+ T_TKD0 = TKD0,
116+ T_TKD1 = TKD1,
117+ T_TKD2 = TKD2,
118+ T_TKD3 = TKD3,
119+ T_TKD4 = TKD4, // Shared with MUXA
120+ T_TKD5 = TKD5, // Shared with MUXC
121+ T_LED1 = LED1,
122+ TOP_D0 = T_TKD0,
123+ TOP_D1 = T_TKD1,
124+ TOP_D2 = T_TKD2,
125+ TOP_D3 = T_TKD3,
126+ TOP_D4 = T_TKD4, // Shared with MUXA
127+ TOP_D5 = T_TKD5, // Shared with MUXC
128+ TOP_LED1 = T_LED1
129+ };
130+ #endif // ARDUINO_AVR_ROBOT_CONTROL
100131}
101132
133+ #ifdef ARDUINO_AVR_ROBOT_MOTOR
134+ #include " utility/LottieLemonMotorBoard.h"
135+ #endif
136+ #ifdef ARDUINO_AVR_ROBOT_CONTROL
137+ #include " utility/LottieLemonControlBoard.h"
138+ #endif
139+
102140#endif // LOTTIE_LEMON_H
0 commit comments