forked from tangjie133/pxt-huskylens
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHUKSYLENSMindPlus.h
130 lines (109 loc) · 2.81 KB
/
HUKSYLENSMindPlus.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include "HUKSYLENS.h"
#ifndef _HUKSYLENS_MIND_PLUS_H
#define _HUKSYLENS_MIND_PLUS_H
typedef struct HUSKYLENSBlockInfo_t
{
int32_t xCenter;
int32_t yCenter;
int32_t width;
int32_t height;
} HUSKYLENSBlockInfo;
typedef struct HUSKYLENSArrowInfo_t
{
int32_t xOrigin;
int32_t yOrigin;
int32_t xTarget;
int32_t yTarget;
} HUSKYLENSArrowInfo;
typedef enum HUSKYLENSResultType_t
{
HUSKYLENSResultBlock,
HUSKYLENSResultArrow,
}HUSKYLENSResultType;
class HUKSYLENSMindPlus : public HUKSYLENS
{
private:
bool isWire = false;
public:
void beginI2CUntilSuccess(){
Wire.begin();
Wire.setClock(100000);
while (!begin(Wire))
{
delay(100);
}
isWire = true;
}
void beginSoftwareSerialUntilSuccess(int RXPin, int TXPin){
static SoftwareSerial mySerial(RXPin, TXPin);
mySerial.begin(9600);
while (!begin(mySerial))
{
delay(100);
}
isWire = false;
}
bool writeAlgorithm(protocolAlgorithm algorithmType){
Wire.setClock(100000);
HUKSYLENS::writeAlgorithm(algorithmType);
}
bool request(){
Wire.setClock(100000);
HUKSYLENS::request();
}
bool isAppear(int ID, HUSKYLENSResultType type){
switch (type)
{
case HUSKYLENSResultBlock:
return countBlocks();
case HUSKYLENSResultArrow:
return countArrows();
default:
return false;
}
}
HUSKYLENSBlockInfo readBlockParameter(int ID, int index=1){
HUSKYLENSResult result = blocks.read(ID, index-1);
HUSKYLENSBlockInfo block;
block.xCenter = result.xCenter;
block.yCenter = result.yCenter;
block.width = result.width;
block.height = result.height;
return block;
}
HUSKYLENSArrowInfo readArrowParameter(int ID, int index=1){
HUSKYLENSResult result = arrows.read(ID, index-1);
HUSKYLENSArrowInfo arrow;
arrow.xOrigin = result.xOrigin;
arrow.yOrigin = result.yOrigin;
arrow.xTarget = result.xTarget;
arrow.yTarget = result.yTarget;
return arrow;
}
float readLearnedIDCount(){
return countLearnedIDs();
}
float readCount(HUSKYLENSResultType type){
switch (type)
{
case HUSKYLENSResultBlock:
return countBlocks();
case HUSKYLENSResultArrow:
return countArrows();
default:
return -1.0f;
}
}
float readCount(int ID, HUSKYLENSResultType type){
switch (type)
{
case HUSKYLENSResultBlock:
return countBlocks(ID);
case HUSKYLENSResultArrow:
return countArrows(ID);
default:
return -1.0f;
}
}
};
#endif