MRMS
mrm-col-b.h
1 #pragma once
2 #include "Arduino.h"
3 #include <mrm-board.h>
4 
12 #define CAN_ID_COL_B0_IN 0x380
13 #define CAN_ID_COL_B0_OUT 0x381
14 #define CAN_ID_COL_B1_IN 0x382
15 #define CAN_ID_COL_B1_OUT 0x383
16 #define CAN_ID_COL_B2_IN 0x384
17 #define CAN_ID_COL_B2_OUT 0x385
18 #define CAN_ID_COL_B3_IN 0x386
19 #define CAN_ID_COL_B3_OUT 0x387
20 #define CAN_ID_COL_B4_IN 0x388
21 #define CAN_ID_COL_B4_OUT 0x389
22 #define CAN_ID_COL_B5_IN 0x38A
23 #define CAN_ID_COL_B5_OUT 0x38B
24 #define CAN_ID_COL_B6_IN 0x38C
25 #define CAN_ID_COL_B6_OUT 0x38D
26 #define CAN_ID_COL_B7_IN 0x38E
27 #define CAN_ID_COL_B7_OUT 0x38F
28 
29 //CANBus commands
30 #define MRM_COL_B_SENDING_COLORS_1_TO_3 0x06
31 #define MRM_COL_B_SENDING_COLORS_4_TO_6 0x07
32 #define MRM_COL_B_SENDING_COLORS_7_TO_9 0x08
33 #define MRM_COL_B_SENDING_COLORS_10_TO_11 0x09
34 #define MRM_COL_B_ILLUMINATION_CURRENT 0x50
35 #define MRM_COL_B_SWITCH_TO_HSV 0x51
36 #define MRM_COL_B_SWITCH_TO_8_COLORS 0x52
37 #define MRM_COL_B_SENDING_HSV 0x53
38 #define MRM_COL_B_INTEGRATION_TIME 0x54
39 #define MRM_COL_B_GAIN 0x55
40 #define MRM_COL_B_PATTERN_RECORD 0x56
41 #define MRM_COL_B_PATTERN_SENDING 0x57
42 #define MRM_COL_B_PATTERN_REQUEST 0x58
43 #define MRM_COL_B_PATTERN_ERASE 0x59
44 
45 #define MRM_COL_B_COLORS 10
46 #define MRM_COL_B_INACTIVITY_ALLOWED_MS 10000
47 #define MRM_COL_B_PATTERN_COUNT 16
48 
49 class Mrm_col_b : public SensorBoard
50 {
51  std::vector<bool>* _hsv; // If not - 10 colors
52  std::vector<uint8_t>* _hue;
53  std::vector<uint8_t>* _patternBy8Colors;
54  std::vector<uint8_t>* _patternByHSV;
55  std::vector<uint32_t>* _patternRecognizedAtMs;
56  std::vector<uint16_t[MRM_COL_B_COLORS]>* readings; // Analog readings of all sensors
57  std::vector<uint8_t>* _saturation;
58  std::vector<uint8_t>* _value;
59 
64  bool colorsStarted(uint8_t deviceNumber);
65 
70  bool hsvStarted(uint8_t deviceNumber);
71 
72 public:
73 
78  Mrm_col_b(Robot* robot = NULL, uint8_t maxNumberOfBoards = 4);
79 
80  ~Mrm_col_b();
81 
85  void add(char * deviceName = (char*)"");
86 
91  uint16_t colorBlue(uint8_t deviceNumber);
92 
97  uint16_t colorBlueGeenish(uint8_t deviceNumber);
98 
103  uint16_t colorBlueVioletish(uint8_t deviceNumber);
104 
109  uint16_t colorGreen(uint8_t deviceNumber);
110 
115  uint16_t colorNearIR(uint8_t deviceNumber);
116 
121  uint16_t colorOrange(uint8_t deviceNumber);
122 
127  uint16_t colorRed(uint8_t deviceNumber);
128 
133  uint16_t colorViolet(uint8_t deviceNumber);
134 
139  uint16_t colorWhite(uint8_t deviceNumber);
140 
145  uint16_t colorYellow(uint8_t deviceNumber);
146 
162  void gain(uint8_t deviceNumber = 0, uint8_t gainValue = 0);
163 
168  uint8_t hue(uint8_t deviceNumber);
169 
174  void illumination(uint8_t deviceNumber = 0, uint8_t current = 0);
175 
181  void integrationTime(uint8_t deviceNumber, uint8_t time, uint16_t step);
182 
187  bool messageDecode(uint32_t canId, uint8_t data[8]);
188 
192  void patternErase(uint8_t deviceNumber = 0xFF);
193 
196  void patternPrint();
197 
202  uint8_t patternRecognizedBy8Colors(uint8_t deviceNumber);
203 
209  uint8_t patternRecognizedByHSV(uint8_t deviceNumber);
210 
215  void patternRecord(uint8_t patternNumber = 0, uint8_t deviceNumber = 0);
216 
219  void patternsRecord();
220 
226  uint16_t reading(uint8_t color = 0, uint8_t sensorNumber = 0);
227 
232  uint8_t saturation(uint8_t deviceNumber);
233 
236  void readingsPrint();
237 
241  void switchToHSV(uint8_t deviceNumber = 0xFF);
242 
246  void switchTo8Colors(uint8_t deviceNumber = 0xFF);
247 
251  void test(bool hsvSelect);
252 
257  uint8_t value(uint8_t deviceNumber);
258 
259 };
260 
261 
Definition: mrm-col-b.h:50
uint16_t colorRed(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:140
uint16_t colorOrange(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:129
uint16_t colorBlueGeenish(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:85
uint16_t colorYellow(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:199
void patternRecord(uint8_t patternNumber=0, uint8_t deviceNumber=0)
Definition: mrm-col-b.cpp:417
bool messageDecode(uint32_t canId, uint8_t data[8])
Definition: mrm-col-b.cpp:306
uint8_t patternRecognizedByHSV(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:405
void patternErase(uint8_t deviceNumber=0xFF)
Definition: mrm-col-b.cpp:369
uint8_t patternRecognizedBy8Colors(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:392
uint16_t colorBlueVioletish(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:96
uint16_t colorBlue(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:74
uint8_t hue(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:263
uint16_t colorViolet(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:177
void switchTo8Colors(uint8_t deviceNumber=0xFF)
Definition: mrm-col-b.cpp:504
void switchToHSV(uint8_t deviceNumber=0xFF)
Definition: mrm-col-b.cpp:489
uint16_t colorGreen(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:107
void patternPrint()
Definition: mrm-col-b.cpp:381
uint16_t colorNearIR(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:118
void add(char *deviceName=(char *)"")
Definition: mrm-col-b.cpp:26
uint8_t value(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:550
void test(bool hsvSelect)
Definition: mrm-col-b.cpp:519
uint8_t saturation(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:478
uint16_t colorWhite(uint8_t deviceNumber)
Definition: mrm-col-b.cpp:188
Mrm_col_b(Robot *robot=NULL, uint8_t maxNumberOfBoards=4)
Definition: mrm-col-b.cpp:8
void patternsRecord()
Definition: mrm-col-b.cpp:429
void gain(uint8_t deviceNumber=0, uint8_t gainValue=0)
Definition: mrm-col-b.cpp:221
void readingsPrint()
Definition: mrm-col-b.cpp:465
uint16_t reading(uint8_t color=0, uint8_t sensorNumber=0)
Definition: mrm-col-b.cpp:455
void integrationTime(uint8_t deviceNumber, uint8_t time, uint16_t step)
Definition: mrm-col-b.cpp:290
void illumination(uint8_t deviceNumber=0, uint8_t current=0)
Definition: mrm-col-b.cpp:274
Definition: mrm-robot.h:42
Definition: mrm-board.h:356