@@ -12,7 +12,9 @@ bool AS726X::begin(TwoWire &wirePort, uint8_t gain, uint8_t measurementMode)
12
12
{
13
13
_i2cPort = &wirePort;
14
14
_sensorVersion = virtualReadRegister (AS726x_HW_VERSION);
15
- if (_sensorVersion != 0x3E && _sensorVersion != 0x3F ) // HW version for AS7262 and AS7263
15
+
16
+ // HW version for AS7262, AS7263 and AS7261
17
+ if (_sensorVersion != 0x3E && _sensorVersion != 0x3F && _sensorVersion != 0x40 )
16
18
{
17
19
return false ;
18
20
}
@@ -28,12 +30,8 @@ bool AS726X::begin(TwoWire &wirePort, uint8_t gain, uint8_t measurementMode)
28
30
29
31
setGain (gain); // Set gain to 64x
30
32
31
- setMeasurementMode (measurementMode); // One-shot reading of VBGYOR
33
+ setMeasurementMode (measurementMode); // One-shot mode
32
34
33
- if (_sensorVersion == 0 )
34
- {
35
- return false ;
36
- }
37
35
return true ;
38
36
}
39
37
@@ -58,6 +56,12 @@ void AS726X::setMeasurementMode(uint8_t mode)
58
56
virtualWriteRegister (AS726x_CONTROL_SETUP, value); // Write
59
57
}
60
58
59
+ uint8_t AS726X::getMeasurementMode ()
60
+ {
61
+ uint8_t value = virtualReadRegister (AS726x_CONTROL_SETUP); // Read
62
+ return (value & 0b00001100 ); // Isolate BANK bits.
63
+ }
64
+
61
65
// Sets the gain value
62
66
// Gain 0: 1x (power-on default)
63
67
// Gain 1: 3.7x
@@ -74,6 +78,12 @@ void AS726X::setGain(uint8_t gain)
74
78
virtualWriteRegister (AS726x_CONTROL_SETUP, value); // Write
75
79
}
76
80
81
+ uint8_t AS726X::getGain ()
82
+ {
83
+ uint8_t value = virtualReadRegister (AS726x_CONTROL_SETUP); // Read
84
+ return (value & 0b00110000 ); // Isolate GAIN bits.
85
+ }
86
+
77
87
// Sets the integration value
78
88
// Give this function a uint8_t from 0 to 255.
79
89
// Time will be 2.8ms * [integration value]
@@ -82,6 +92,12 @@ void AS726X::setIntegrationTime(uint8_t integrationValue)
82
92
virtualWriteRegister (AS726x_INT_T, integrationValue); // Write
83
93
}
84
94
95
+ uint8_t AS726X::getIntegrationTime ()
96
+ {
97
+ uint8_t value = virtualReadRegister (AS726x_INT_T); // Read
98
+ return value;
99
+ }
100
+
85
101
void AS726X::enableInterrupt ()
86
102
{
87
103
// Read, mask/set, write
@@ -143,6 +159,14 @@ int AS726X::getU() { return(getChannel(AS7263_U)); }
143
159
int AS726X::getV () { return (getChannel (AS7263_V)); }
144
160
int AS726X::getW () { return (getChannel (AS7263_W)); }
145
161
162
+ // Get the various CIE readings
163
+ int AS726X::getX () { return (getChannel (AS7261_X)); }
164
+ int AS726X::getY () { return (getChannel (AS7261_Y)); }
165
+ int AS726X::getZ () { return (getChannel (AS7261_Z)); }
166
+ int AS726X::getNir () { return (getChannel (AS7261_NIR)); }
167
+ int AS726X::getDark () { return (getChannel (AS7261_DARK)); }
168
+ int AS726X::getClear () { return (getChannel (AS7261_CLEAR)); }
169
+
146
170
// A the 16-bit value stored in a given channel registerReturns
147
171
int AS726X::getChannel (uint8_t channelRegister)
148
172
{
@@ -166,6 +190,19 @@ float AS726X::getCalibratedU() { return(getCalibratedValue(AS7263_U_CAL)); }
166
190
float AS726X::getCalibratedV () { return (getCalibratedValue (AS7263_V_CAL)); }
167
191
float AS726X::getCalibratedW () { return (getCalibratedValue (AS7263_W_CAL)); }
168
192
193
+ float AS726X::getCalibratedX () { return (getCalibratedValue (AS7261_X_CAL)); }
194
+ float AS726X::getCalibratedY () { return (getCalibratedValue (AS7261_Y_CAL)); }
195
+ float AS726X::getCalibratedZ () { return (getCalibratedValue (AS7261_Z_CAL)); }
196
+ float AS726X::getCalibratedX1931 () { return (getCalibratedValue (AS7261_X1931_CAL)); }
197
+ float AS726X::getCalibratedY1931 () { return (getCalibratedValue (AS7261_Y1931_CAL)); }
198
+ float AS726X::getCalibratedUPri1976 () { return (getCalibratedValue (AS7261_UPRI_CAL)); }
199
+ float AS726X::getCalibratedVPri1976 () { return (getCalibratedValue (AS7261_VPRI_CAL)); }
200
+ float AS726X::getCalibratedU1976 () { return (getCalibratedValue (AS7261_U_CAL)); }
201
+ float AS726X::getCalibratedV1976 () { return (getCalibratedValue (AS7261_V_CAL)); }
202
+ float AS726X::getCalibratedDUV1976 () { return (getCalibratedValue (AS7261_DUV_CAL)); }
203
+ int AS726X::getCalibratedLux () { return (getChannel (AS7261_LUX_CAL)); }
204
+ int AS726X::getCalibratedCCT () { return (getChannel (AS7261_CCT_CAL)); }
205
+
169
206
// Given an address, read four uint8_ts and return the floating point calibrated value
170
207
float AS726X::getCalibratedValue (uint8_t calAddress)
171
208
{
0 commit comments