MRMS
mrm-ir-finder3.h
1 #pragma once
2 #include "Arduino.h"
3 #include <mrm-board.h>
4 
12 #define ID_IR_FINDER3_0_IN 0x0330
13 #define ID_IR_FINDER3_0_OUT 0x0331
14 #define ID_IR_FINDER3_1_IN 0x0332
15 #define ID_IR_FINDER3_1_OUT 0x0333
16 #define ID_IR_FINDER3_2_IN 0x0334
17 #define ID_IR_FINDER3_2_OUT 0x0335
18 #define ID_IR_FINDER3_3_IN 0x0336
19 #define ID_IR_FINDER3_3_OUT 0x0337
20 #define ID_IR_FINDER3_4_IN 0x0338
21 #define ID_IR_FINDER3_4_OUT 0x0339
22 #define ID_IR_FINDER3_5_IN 0x033A
23 #define ID_IR_FINDER3_5_OUT 0x033B
24 #define ID_IR_FINDER3_6_IN 0x033C
25 #define ID_IR_FINDER3_6_OUT 0x033D
26 #define ID_IR_FINDER3_7_IN 0x033E
27 #define ID_IR_FINDER3_7_OUT 0x033F
28 
29 #define MRM_IR_FINDER3_SENSOR_COUNT 18 // Number of IR receivers in each device.
30 
31 //CANBus commands
32 #define COMMAND_IR_FINDER3_SENDING_SENSORS_1_TO_7 0x04
33 #define COMMAND_IR_FINDER3_SENDING_SENSORS_8_TO_12 0x05
34 #define COMMAND_IR_FINDER3_SENDING_ANGLE_AND_DISTANCE 0x09
35 
36 #define MRM_IR_FINDER3_INACTIVITY_ALLOWED_MS 10000
37 
39 {
40  std::vector<uint16_t[MRM_IR_FINDER3_SENSOR_COUNT]>* readings; // Cumulative readings of all sensors
41  std::vector<int16_t>* _angle;
42  std::vector<bool>* _calculated; // If not, then for every sensor.
43  std::vector<uint16_t>* _distance;
44  bool near;
45 
50  bool calculatedStarted(uint8_t deviceNumber);
51 
56  bool singleStarted(uint8_t deviceNumber);
57 
58 public:
59 
66  Mrm_ir_finder3(Robot* robot = 0, uint8_t maxNumberOfBoards = 1);
67 
68  ~Mrm_ir_finder3();
69 
73  void add(char * deviceName = (char*)"");
74 
79  int16_t angle(uint8_t deviceNumber = 0);
80 
87  uint16_t distance(uint8_t deviceNumber = 0);
88 
93  bool messageDecode(uint32_t canId, uint8_t data[8]);
94 
100  uint16_t reading(uint8_t receiverNumberInSensor, uint8_t deviceNumber = 0);
101 
104  void readingsPrint();
105 
108  void test();
109 
112  void testCalculated();
113 };
114 
115 
116 
Definition: mrm-ir-finder3.h:39
void testCalculated()
Definition: mrm-ir-finder3.cpp:241
bool messageDecode(uint32_t canId, uint8_t data[8])
Definition: mrm-ir-finder3.cpp:122
void add(char *deviceName=(char *)"")
Definition: mrm-ir-finder3.cpp:23
void test()
Definition: mrm-ir-finder3.cpp:191
int16_t angle(uint8_t deviceNumber=0)
Definition: mrm-ir-finder3.cpp:71
void readingsPrint()
Definition: mrm-ir-finder3.cpp:180
Mrm_ir_finder3(Robot *robot=0, uint8_t maxNumberOfBoards=1)
Definition: mrm-ir-finder3.cpp:8
uint16_t distance(uint8_t deviceNumber=0)
Definition: mrm-ir-finder3.cpp:111
uint16_t reading(uint8_t receiverNumberInSensor, uint8_t deviceNumber=0)
Definition: mrm-ir-finder3.cpp:167
Definition: mrm-robot.h:42
Definition: mrm-board.h:356