MRMS
mrm-col-can.h
1 #pragma once
2 #include "Arduino.h"
3 #include <mrm-board.h>
4 
12 #define CAN_ID_COL_CAN0_IN 0x310
13 #define CAN_ID_COL_CAN0_OUT 0x311
14 #define CAN_ID_COL_CAN1_IN 0x312
15 #define CAN_ID_COL_CAN1_OUT 0x313
16 #define CAN_ID_COL_CAN2_IN 0x314
17 #define CAN_ID_COL_CAN2_OUT 0x315
18 #define CAN_ID_COL_CAN3_IN 0x316
19 #define CAN_ID_COL_CAN3_OUT 0x317
20 #define CAN_ID_COL_CAN4_IN 0x318
21 #define CAN_ID_COL_CAN4_OUT 0x319
22 #define CAN_ID_COL_CAN5_IN 0x31A
23 #define CAN_ID_COL_CAN5_OUT 0x31B
24 #define CAN_ID_COL_CAN6_IN 0x31C
25 #define CAN_ID_COL_CAN6_OUT 0x31D
26 #define CAN_ID_COL_CAN7_IN 0x31E
27 #define CAN_ID_COL_CAN7_OUT 0x31F
28 
29 //CANBus commands
30 #define CAN_COL_SENDING_COLORS_1_TO_3 0x06
31 #define CAN_COL_SENDING_COLORS_4_TO_6 0x07
32 #define CAN_COL_ILLUMINATION_CURRENT 0x50
33 #define CAN_COL_SWITCH_TO_HSV 0x51
34 #define CAN_COL_SWITCH_TO_6_COLORS 0x52
35 #define CAN_COL_SENDING_HSV 0x53
36 #define CAN_COL_INTEGRATION_TIME 0x54
37 #define CAN_COL_GAIN 0x55
38 #define CAN_COL_PATTERN_RECORD 0x56
39 #define CAN_COL_PATTERN_SENDING 0x57
40 #define CAN_COL_PATTERN_REQUEST 0x58
41 #define CAN_COL_PATTERN_ERASE 0x59
42 
43 #define MRM_COL_CAN_COLORS 6
44 #define MRM_COL_CAN_INACTIVITY_ALLOWED_MS 10000
45 #define MRM_COL_CAN_PATTERN_COUNT 16
46 
47 class Mrm_col_can : public SensorBoard
48 {
49  std::vector<bool>* _hsv;
50  std::vector<uint8_t>* _hue;
51  std::vector<uint8_t>* _patternBy6Colors;
52  std::vector<uint8_t>* _patternByHSV;
53  std::vector<uint32_t>* _patternRecognizedAtMs;
54  std::vector<uint16_t[MRM_COL_CAN_COLORS]>* readings; // Analog readings of all sensors
55  std::vector<uint8_t>* _saturation;
56  std::vector<uint8_t>* _value;
57 
62  bool colorsStarted(uint8_t deviceNumber);
63 
68  bool hsvStarted(uint8_t deviceNumber);
69 
70 public:
71 
76  Mrm_col_can(Robot* robot = NULL, uint8_t maxNumberOfBoards = 4);
77 
78  ~Mrm_col_can();
79 
83  void add(char * deviceName = (char*)"");
84 
89  uint16_t colorBlue(uint8_t deviceNumber);
90 
95  uint16_t colorGreen(uint8_t deviceNumber);
96 
101  uint16_t colorOrange(uint8_t deviceNumber);
102 
107  uint16_t colorRed(uint8_t deviceNumber);
108 
113  uint16_t colorViolet(uint8_t deviceNumber);
114 
119  uint16_t colorYellow(uint8_t deviceNumber);
120 
129  void gain(uint8_t deviceNumber = 0, uint8_t gainValue = 0);
130 
135  uint8_t hue(uint8_t deviceNumber);
136 
141  void illumination(uint8_t deviceNumber = 0, uint8_t current = 0);
142 
147  void integrationTime(uint8_t deviceNumber = 0, uint8_t value = 18);
148 
153  bool messageDecode(uint32_t canId, uint8_t data[8]);
154 
158  void patternErase(uint8_t deviceNumber = 0xFF);
159 
162  void patternPrint();
163 
168  uint8_t patternRecognizedBy6Colors(uint8_t deviceNumber);
169 
175  uint8_t patternRecognizedByHSV(uint8_t deviceNumber);
176 
181  void patternRecord(uint8_t patternNumber = 0, uint8_t deviceNumber = 0);
182 
185  void patternsRecord();
186 
192  uint16_t reading(uint8_t color = 0, uint8_t sensorNumber = 0);
193 
198  uint8_t saturation(uint8_t deviceNumber);
199 
202  void readingsPrint();
203 
207  void switchToHSV(uint8_t deviceNumber = 0xFF);
208 
212  void switchTo6Colors(uint8_t deviceNumber = 0xFF);
213 
217  void test(bool hsvSelect);
218 
223  uint8_t value(uint8_t deviceNumber);
224 
225 };
226 
227 
Definition: mrm-col-can.h:48
uint8_t hue(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:215
uint16_t colorViolet(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:147
uint16_t colorOrange(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:99
void patternErase(uint8_t deviceNumber=0xFF)
Definition: mrm-col-can.cpp:311
void readingsPrint()
Definition: mrm-col-can.cpp:407
void patternsRecord()
Definition: mrm-col-can.cpp:371
uint16_t colorGreen(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:88
uint8_t patternRecognizedByHSV(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:347
void patternPrint()
Definition: mrm-col-can.cpp:323
void test(bool hsvSelect)
Definition: mrm-col-can.cpp:462
uint8_t patternRecognizedBy6Colors(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:334
uint16_t reading(uint8_t color=0, uint8_t sensorNumber=0)
Definition: mrm-col-can.cpp:397
void gain(uint8_t deviceNumber=0, uint8_t gainValue=0)
Definition: mrm-col-can.cpp:173
Mrm_col_can(Robot *robot=NULL, uint8_t maxNumberOfBoards=4)
Definition: mrm-col-can.cpp:8
uint16_t colorRed(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:110
void patternRecord(uint8_t patternNumber=0, uint8_t deviceNumber=0)
Definition: mrm-col-can.cpp:359
void add(char *deviceName=(char *)"")
Definition: mrm-col-can.cpp:26
void illumination(uint8_t deviceNumber=0, uint8_t current=0)
Definition: mrm-col-can.cpp:226
uint8_t value(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:489
void integrationTime(uint8_t deviceNumber=0, uint8_t value=18)
Definition: mrm-col-can.cpp:241
bool messageDecode(uint32_t canId, uint8_t data[8])
Definition: mrm-col-can.cpp:255
uint16_t colorBlue(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:77
void switchToHSV(uint8_t deviceNumber=0xFF)
Definition: mrm-col-can.cpp:431
uint8_t saturation(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:420
void switchTo6Colors(uint8_t deviceNumber=0xFF)
Definition: mrm-col-can.cpp:446
uint16_t colorYellow(uint8_t deviceNumber)
Definition: mrm-col-can.cpp:158
Definition: mrm-robot.h:42
Definition: mrm-board.h:356