test

Dependencies:   ESP8266 HCSR04 PID

Fork of car_test_v1 by 涂 桂旺

Committer:
tgw
Date:
Sat Nov 25 03:36:58 2017 +0000
Revision:
3:9e51de1050a1
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tgw 3:9e51de1050a1 1 #include "mbed.h"
tgw 3:9e51de1050a1 2
tgw 3:9e51de1050a1 3
tgw 3:9e51de1050a1 4 #define DEBUG 0
tgw 3:9e51de1050a1 5
tgw 3:9e51de1050a1 6 /* APDS-9960 I2C address */
tgw 3:9e51de1050a1 7 #define APDS9960_I2C_ADDR 0x39
tgw 3:9e51de1050a1 8
tgw 3:9e51de1050a1 9 /* Gesture parameters */
tgw 3:9e51de1050a1 10 #define GESTURE_THRESHOLD_OUT 10
tgw 3:9e51de1050a1 11 #define GESTURE_SENSITIVITY_1 50
tgw 3:9e51de1050a1 12 #define GESTURE_SENSITIVITY_2 20
tgw 3:9e51de1050a1 13
tgw 3:9e51de1050a1 14 /* Error code for returned values */
tgw 3:9e51de1050a1 15 #define ERROR 0xFF
tgw 3:9e51de1050a1 16
tgw 3:9e51de1050a1 17 /* Acceptable device IDs */
tgw 3:9e51de1050a1 18 #define APDS9960_ID_1 0xAB
tgw 3:9e51de1050a1 19 #define APDS9960_ID_2 0x9C
tgw 3:9e51de1050a1 20 #define APDS9960_ID_3 0xA8
tgw 3:9e51de1050a1 21
tgw 3:9e51de1050a1 22 /* Misc parameters */
tgw 3:9e51de1050a1 23 #define FIFO_PAUSE_TIME 0.30 // Wait period (ms) between FIFO reads
tgw 3:9e51de1050a1 24
tgw 3:9e51de1050a1 25 /* APDS-9960 register addresses */
tgw 3:9e51de1050a1 26 #define APDS9960_ENABLE 0x80
tgw 3:9e51de1050a1 27 #define APDS9960_ATIME 0x81
tgw 3:9e51de1050a1 28 #define APDS9960_WTIME 0x83
tgw 3:9e51de1050a1 29 #define APDS9960_AILTL 0x84
tgw 3:9e51de1050a1 30 #define APDS9960_AILTH 0x85
tgw 3:9e51de1050a1 31 #define APDS9960_AIHTL 0x86
tgw 3:9e51de1050a1 32 #define APDS9960_AIHTH 0x87
tgw 3:9e51de1050a1 33 #define APDS9960_PILT 0x89
tgw 3:9e51de1050a1 34 #define APDS9960_PIHT 0x8B
tgw 3:9e51de1050a1 35 #define APDS9960_PERS 0x8C
tgw 3:9e51de1050a1 36 #define APDS9960_CONFIG1 0x8D
tgw 3:9e51de1050a1 37 #define APDS9960_PPULSE 0x8E
tgw 3:9e51de1050a1 38 #define APDS9960_CONTROL 0x8F
tgw 3:9e51de1050a1 39 #define APDS9960_CONFIG2 0x90
tgw 3:9e51de1050a1 40 #define APDS9960_ID 0x92
tgw 3:9e51de1050a1 41 #define APDS9960_STATUS 0x93
tgw 3:9e51de1050a1 42 #define APDS9960_CDATAL 0x94
tgw 3:9e51de1050a1 43 #define APDS9960_CDATAH 0x95
tgw 3:9e51de1050a1 44 #define APDS9960_RDATAL 0x96
tgw 3:9e51de1050a1 45 #define APDS9960_RDATAH 0x97
tgw 3:9e51de1050a1 46 #define APDS9960_GDATAL 0x98
tgw 3:9e51de1050a1 47 #define APDS9960_GDATAH 0x99
tgw 3:9e51de1050a1 48 #define APDS9960_BDATAL 0x9A
tgw 3:9e51de1050a1 49 #define APDS9960_BDATAH 0x9B
tgw 3:9e51de1050a1 50 #define APDS9960_PDATA 0x9C
tgw 3:9e51de1050a1 51 #define APDS9960_POFFSET_UR 0x9D
tgw 3:9e51de1050a1 52 #define APDS9960_POFFSET_DL 0x9E
tgw 3:9e51de1050a1 53 #define APDS9960_CONFIG3 0x9F
tgw 3:9e51de1050a1 54 #define APDS9960_GPENTH 0xA0
tgw 3:9e51de1050a1 55 #define APDS9960_GEXTH 0xA1
tgw 3:9e51de1050a1 56 #define APDS9960_GCONF1 0xA2
tgw 3:9e51de1050a1 57 #define APDS9960_GCONF2 0xA3
tgw 3:9e51de1050a1 58 #define APDS9960_GOFFSET_U 0xA4
tgw 3:9e51de1050a1 59 #define APDS9960_GOFFSET_D 0xA5
tgw 3:9e51de1050a1 60 #define APDS9960_GOFFSET_L 0xA7
tgw 3:9e51de1050a1 61 #define APDS9960_GOFFSET_R 0xA9
tgw 3:9e51de1050a1 62 #define APDS9960_GPULSE 0xA6
tgw 3:9e51de1050a1 63 #define APDS9960_GCONF3 0xAA
tgw 3:9e51de1050a1 64 #define APDS9960_GCONF4 0xAB
tgw 3:9e51de1050a1 65 #define APDS9960_GFLVL 0xAE
tgw 3:9e51de1050a1 66 #define APDS9960_GSTATUS 0xAF
tgw 3:9e51de1050a1 67 #define APDS9960_IFORCE 0xE4
tgw 3:9e51de1050a1 68 #define APDS9960_PICLEAR 0xE5
tgw 3:9e51de1050a1 69 #define APDS9960_CICLEAR 0xE6
tgw 3:9e51de1050a1 70 #define APDS9960_AICLEAR 0xE7
tgw 3:9e51de1050a1 71 #define APDS9960_GFIFO_U 0xFC
tgw 3:9e51de1050a1 72 #define APDS9960_GFIFO_D 0xFD
tgw 3:9e51de1050a1 73 #define APDS9960_GFIFO_L 0xFE
tgw 3:9e51de1050a1 74 #define APDS9960_GFIFO_R 0xFF
tgw 3:9e51de1050a1 75
tgw 3:9e51de1050a1 76 /* Bit fields */
tgw 3:9e51de1050a1 77 #define APDS9960_PON 0x01
tgw 3:9e51de1050a1 78 #define APDS9960_AEN 0x02
tgw 3:9e51de1050a1 79 #define APDS9960_PEN 0x04
tgw 3:9e51de1050a1 80 #define APDS9960_WEN 0x08
tgw 3:9e51de1050a1 81 #define APSD9960_AIEN 0x10
tgw 3:9e51de1050a1 82 #define APDS9960_PIEN 0x20
tgw 3:9e51de1050a1 83 #define APDS9960_GEN 0x40
tgw 3:9e51de1050a1 84 #define APDS9960_GVALID 0x01
tgw 3:9e51de1050a1 85
tgw 3:9e51de1050a1 86 /* On/Off definitions */
tgw 3:9e51de1050a1 87 #define Off 0
tgw 3:9e51de1050a1 88 #define On 1
tgw 3:9e51de1050a1 89
tgw 3:9e51de1050a1 90 /* Acceptable parameters for setMode */
tgw 3:9e51de1050a1 91 #define Power 0
tgw 3:9e51de1050a1 92 #define AMBIENT_LIGHT 1
tgw 3:9e51de1050a1 93 #define PROXIMITY 2
tgw 3:9e51de1050a1 94 #define WAIT 3
tgw 3:9e51de1050a1 95 #define AMBIENT_LIGHT_INT 4
tgw 3:9e51de1050a1 96 #define PROXIMITY_INT 5
tgw 3:9e51de1050a1 97 #define GESTURE 6
tgw 3:9e51de1050a1 98 #define ALL 7
tgw 3:9e51de1050a1 99
tgw 3:9e51de1050a1 100 /* LED Drive values */
tgw 3:9e51de1050a1 101 #define LED_DRIVE_100MA 0
tgw 3:9e51de1050a1 102 #define LED_DRIVE_50MA 1
tgw 3:9e51de1050a1 103 #define LED_DRIVE_25MA 2
tgw 3:9e51de1050a1 104 #define LED_DRIVE_12_5MA 3
tgw 3:9e51de1050a1 105
tgw 3:9e51de1050a1 106 /* Proximity Gain (PGAIN) values */
tgw 3:9e51de1050a1 107 #define PGAIN_1X 0
tgw 3:9e51de1050a1 108 #define PGAIN_2X 1
tgw 3:9e51de1050a1 109 #define PGAIN_4X 2
tgw 3:9e51de1050a1 110 #define PGAIN_8X 3
tgw 3:9e51de1050a1 111
tgw 3:9e51de1050a1 112 /* ALS Gain (AGAIN) values */
tgw 3:9e51de1050a1 113 #define AGAIN_1X 0
tgw 3:9e51de1050a1 114 #define AGAIN_4X 1
tgw 3:9e51de1050a1 115 #define AGAIN_16X 2
tgw 3:9e51de1050a1 116 #define AGAIN_64X 3
tgw 3:9e51de1050a1 117
tgw 3:9e51de1050a1 118 /* Gesture Gain (GGAIN) values */
tgw 3:9e51de1050a1 119 #define GGAIN_1X 0
tgw 3:9e51de1050a1 120 #define GGAIN_2X 1
tgw 3:9e51de1050a1 121 #define GGAIN_4X 2
tgw 3:9e51de1050a1 122 #define GGAIN_8X 3
tgw 3:9e51de1050a1 123
tgw 3:9e51de1050a1 124 /* LED Boost values */
tgw 3:9e51de1050a1 125 #define LED_BOOST_100 0
tgw 3:9e51de1050a1 126 #define LED_BOOST_150 1
tgw 3:9e51de1050a1 127 #define LED_BOOST_200 2
tgw 3:9e51de1050a1 128 #define LED_BOOST_300 3
tgw 3:9e51de1050a1 129
tgw 3:9e51de1050a1 130 /* Gesture wait time values */
tgw 3:9e51de1050a1 131 #define GWTIME_0MS 0
tgw 3:9e51de1050a1 132 #define GWTIME_2_8MS 1
tgw 3:9e51de1050a1 133 #define GWTIME_5_6MS 2
tgw 3:9e51de1050a1 134 #define GWTIME_8_4MS 3
tgw 3:9e51de1050a1 135 #define GWTIME_14_0MS 4
tgw 3:9e51de1050a1 136 #define GWTIME_22_4MS 5
tgw 3:9e51de1050a1 137 #define GWTIME_30_8MS 6
tgw 3:9e51de1050a1 138 #define GWTIME_39_2MS 7
tgw 3:9e51de1050a1 139
tgw 3:9e51de1050a1 140 /* Default values */
tgw 3:9e51de1050a1 141 #define DEFAULT_ATIME 219 // 103ms
tgw 3:9e51de1050a1 142 #define DEFAULT_WTIME 246 // 27ms
tgw 3:9e51de1050a1 143 #define DEFAULT_PROX_PPULSE 0x87 // 16us, 8 pulses
tgw 3:9e51de1050a1 144 #define DEFAULT_GESTURE_PPULSE 0x89 // 16us, 10 pulses
tgw 3:9e51de1050a1 145 #define DEFAULT_POFFSET_UR 0 // 0 offset
tgw 3:9e51de1050a1 146 #define DEFAULT_POFFSET_DL 0 // 0 offset
tgw 3:9e51de1050a1 147 #define DEFAULT_CONFIG1 0x60 // No 12x wait (WTIME) factor
tgw 3:9e51de1050a1 148 #define DEFAULT_LDRIVE LED_DRIVE_100MA
tgw 3:9e51de1050a1 149 #define DEFAULT_PGAIN PGAIN_4X
tgw 3:9e51de1050a1 150 #define DEFAULT_AGAIN AGAIN_4X
tgw 3:9e51de1050a1 151 #define DEFAULT_PILT 0 // Low proximity threshold
tgw 3:9e51de1050a1 152 #define DEFAULT_PIHT 50 // High proximity threshold
tgw 3:9e51de1050a1 153 #define DEFAULT_AILT 0xFFFF // Force interrupt for calibration
tgw 3:9e51de1050a1 154 #define DEFAULT_AIHT 0
tgw 3:9e51de1050a1 155 #define DEFAULT_PERS 0x11 // 2 consecutive prox or ALS for int.
tgw 3:9e51de1050a1 156 #define DEFAULT_CONFIG2 0x01 // No saturation interrupts or LED boost
tgw 3:9e51de1050a1 157 #define DEFAULT_CONFIG3 0 // Enable all photodiodes, no SAI
tgw 3:9e51de1050a1 158 #define DEFAULT_GPENTH 40 // Threshold for entering gesture mode
tgw 3:9e51de1050a1 159 #define DEFAULT_GEXTH 30 // Threshold for exiting gesture mode
tgw 3:9e51de1050a1 160 #define DEFAULT_GCONF1 0x40 // 4 gesture events for int., 1 for exit
tgw 3:9e51de1050a1 161 #define DEFAULT_GGAIN GGAIN_4X
tgw 3:9e51de1050a1 162 #define DEFAULT_GLDRIVE LED_DRIVE_100MA
tgw 3:9e51de1050a1 163 #define DEFAULT_GWTIME GWTIME_2_8MS
tgw 3:9e51de1050a1 164 #define DEFAULT_GOFFSET 0 // No offset scaling for gesture mode
tgw 3:9e51de1050a1 165 #define DEFAULT_GPULSE 0xC9 // 32us, 10 pulses
tgw 3:9e51de1050a1 166 #define DEFAULT_GCONF3 0 // All photodiodes active during gesture
tgw 3:9e51de1050a1 167 #define DEFAULT_GIEN 0 // Disable gesture interrupts
tgw 3:9e51de1050a1 168
tgw 3:9e51de1050a1 169 /* Direction definitions */
tgw 3:9e51de1050a1 170 enum {
tgw 3:9e51de1050a1 171 DIR_NONE,
tgw 3:9e51de1050a1 172 DIR_LEFT,
tgw 3:9e51de1050a1 173 DIR_RIGHT,
tgw 3:9e51de1050a1 174 DIR_UP,
tgw 3:9e51de1050a1 175 DIR_DOWN,
tgw 3:9e51de1050a1 176 DIR_NEAR,
tgw 3:9e51de1050a1 177 DIR_FAR,
tgw 3:9e51de1050a1 178 DIR_ALL
tgw 3:9e51de1050a1 179 };
tgw 3:9e51de1050a1 180
tgw 3:9e51de1050a1 181 /* State definitions */
tgw 3:9e51de1050a1 182 enum {
tgw 3:9e51de1050a1 183 NA_STATE,
tgw 3:9e51de1050a1 184 NEAR_STATE,
tgw 3:9e51de1050a1 185 FAR_STATE,
tgw 3:9e51de1050a1 186 ALL_STATE
tgw 3:9e51de1050a1 187 };
tgw 3:9e51de1050a1 188
tgw 3:9e51de1050a1 189 /* Container for gesture data */
tgw 3:9e51de1050a1 190 typedef struct gesture_data_type {
tgw 3:9e51de1050a1 191 uint8_t u_data[32];
tgw 3:9e51de1050a1 192 uint8_t d_data[32];
tgw 3:9e51de1050a1 193 uint8_t l_data[32];
tgw 3:9e51de1050a1 194 uint8_t r_data[32];
tgw 3:9e51de1050a1 195 uint8_t sindex;
tgw 3:9e51de1050a1 196 uint8_t total_gestures;
tgw 3:9e51de1050a1 197 uint8_t in_threshold;
tgw 3:9e51de1050a1 198 uint8_t out_threshold;
tgw 3:9e51de1050a1 199 } gesture_data_type;
tgw 3:9e51de1050a1 200
tgw 3:9e51de1050a1 201
tgw 3:9e51de1050a1 202 class glibr{
tgw 3:9e51de1050a1 203
tgw 3:9e51de1050a1 204 public:
tgw 3:9e51de1050a1 205
tgw 3:9e51de1050a1 206
tgw 3:9e51de1050a1 207 glibr(PinName sda, PinName scl); //constructor
tgw 3:9e51de1050a1 208 ~glibr();
tgw 3:9e51de1050a1 209
tgw 3:9e51de1050a1 210
tgw 3:9e51de1050a1 211 bool ginit();
tgw 3:9e51de1050a1 212 /* Initialization methods */
tgw 3:9e51de1050a1 213
tgw 3:9e51de1050a1 214 uint8_t getMode();
tgw 3:9e51de1050a1 215 bool setMode(uint8_t mode, uint8_t enable);
tgw 3:9e51de1050a1 216
tgw 3:9e51de1050a1 217 /* Turn the APDS-9960 on and off */
tgw 3:9e51de1050a1 218 bool enablePower();
tgw 3:9e51de1050a1 219 bool disablePower();
tgw 3:9e51de1050a1 220
tgw 3:9e51de1050a1 221 /* Enable or disable specific sensors */
tgw 3:9e51de1050a1 222 bool enableLightSensor(bool interrupts = false);
tgw 3:9e51de1050a1 223 bool disableLightSensor();
tgw 3:9e51de1050a1 224 bool enableProximitySensor(bool interrupts = false);
tgw 3:9e51de1050a1 225 bool disableProximitySensor();
tgw 3:9e51de1050a1 226 bool enableGestureSensor(bool interrupts = true);
tgw 3:9e51de1050a1 227 bool disableGestureSensor();
tgw 3:9e51de1050a1 228
tgw 3:9e51de1050a1 229 /* LED drive strength control */
tgw 3:9e51de1050a1 230 uint8_t getLEDDrive();
tgw 3:9e51de1050a1 231 bool setLEDDrive(uint8_t drive);
tgw 3:9e51de1050a1 232 uint8_t getGestureLEDDrive();
tgw 3:9e51de1050a1 233 bool setGestureLEDDrive(uint8_t drive);
tgw 3:9e51de1050a1 234
tgw 3:9e51de1050a1 235 /* Gain control */
tgw 3:9e51de1050a1 236 uint8_t getAmbientLightGain();
tgw 3:9e51de1050a1 237 bool setAmbientLightGain(uint8_t gain);
tgw 3:9e51de1050a1 238 uint8_t getProximityGain();
tgw 3:9e51de1050a1 239 bool setProximityGain(uint8_t gain);
tgw 3:9e51de1050a1 240 uint8_t getGestureGain();
tgw 3:9e51de1050a1 241 bool setGestureGain(uint8_t gain);
tgw 3:9e51de1050a1 242
tgw 3:9e51de1050a1 243 /* Get and set light interrupt thresholds */
tgw 3:9e51de1050a1 244 bool getLightIntLowThreshold(uint16_t &threshold);
tgw 3:9e51de1050a1 245 bool setLightIntLowThreshold(uint16_t threshold);
tgw 3:9e51de1050a1 246 bool getLightIntHighThreshold(uint16_t &threshold);
tgw 3:9e51de1050a1 247 bool setLightIntHighThreshold(uint16_t threshold);
tgw 3:9e51de1050a1 248
tgw 3:9e51de1050a1 249 /* Get and set proximity interrupt thresholds */
tgw 3:9e51de1050a1 250 bool getProximityIntLowThreshold(uint8_t &threshold);
tgw 3:9e51de1050a1 251 bool setProximityIntLowThreshold(uint8_t threshold);
tgw 3:9e51de1050a1 252 bool getProximityIntHighThreshold(uint8_t &threshold);
tgw 3:9e51de1050a1 253 bool setProximityIntHighThreshold(uint8_t threshold);
tgw 3:9e51de1050a1 254
tgw 3:9e51de1050a1 255 /* Get and set interrupt enables */
tgw 3:9e51de1050a1 256 uint8_t getAmbientLightIntEnable();
tgw 3:9e51de1050a1 257 bool setAmbientLightIntEnable(uint8_t enable);
tgw 3:9e51de1050a1 258 uint8_t getProximityIntEnable();
tgw 3:9e51de1050a1 259 bool setProximityIntEnable(uint8_t enable);
tgw 3:9e51de1050a1 260 uint8_t getGestureIntEnable();
tgw 3:9e51de1050a1 261 bool setGestureIntEnable(uint8_t enable);
tgw 3:9e51de1050a1 262
tgw 3:9e51de1050a1 263 /* Clear interrupts */
tgw 3:9e51de1050a1 264 bool clearAmbientLightInt();
tgw 3:9e51de1050a1 265 bool clearProximityInt();
tgw 3:9e51de1050a1 266
tgw 3:9e51de1050a1 267 /* Ambient light methods */
tgw 3:9e51de1050a1 268 bool readAmbientLight(uint16_t &val);
tgw 3:9e51de1050a1 269 bool readRedLight(uint16_t &val);
tgw 3:9e51de1050a1 270 bool readGreenLight(uint16_t &val);
tgw 3:9e51de1050a1 271 bool readBlueLight(uint16_t &val);
tgw 3:9e51de1050a1 272
tgw 3:9e51de1050a1 273 /* Proximity methods */
tgw 3:9e51de1050a1 274 bool readProximity(uint8_t &val);
tgw 3:9e51de1050a1 275
tgw 3:9e51de1050a1 276 /* Gesture methods */
tgw 3:9e51de1050a1 277 bool isGestureAvailable();
tgw 3:9e51de1050a1 278 int readGesture();
tgw 3:9e51de1050a1 279
tgw 3:9e51de1050a1 280 private:
tgw 3:9e51de1050a1 281 /* Gesture processing */
tgw 3:9e51de1050a1 282 void resetGestureParameters();
tgw 3:9e51de1050a1 283 bool processGestureData();
tgw 3:9e51de1050a1 284 bool decodeGesture();
tgw 3:9e51de1050a1 285
tgw 3:9e51de1050a1 286 /* Proximity Interrupt Threshold */
tgw 3:9e51de1050a1 287 uint8_t getProxIntLowThresh();
tgw 3:9e51de1050a1 288 bool setProxIntLowThresh(uint8_t threshold);
tgw 3:9e51de1050a1 289 uint8_t getProxIntHighThresh();
tgw 3:9e51de1050a1 290 bool setProxIntHighThresh(uint8_t threshold);
tgw 3:9e51de1050a1 291
tgw 3:9e51de1050a1 292 /* LED Boost Control */
tgw 3:9e51de1050a1 293 uint8_t getLEDBoost();
tgw 3:9e51de1050a1 294 bool setLEDBoost(uint8_t boost);
tgw 3:9e51de1050a1 295
tgw 3:9e51de1050a1 296 /* Proximity photodiode select */
tgw 3:9e51de1050a1 297 uint8_t getProxGainCompEnable();
tgw 3:9e51de1050a1 298 bool setProxGainCompEnable(uint8_t enable);
tgw 3:9e51de1050a1 299 uint8_t getProxPhotoMask();
tgw 3:9e51de1050a1 300 bool setProxPhotoMask(uint8_t mask);
tgw 3:9e51de1050a1 301
tgw 3:9e51de1050a1 302 /* Gesture threshold control */
tgw 3:9e51de1050a1 303 uint8_t getGestureEnterThresh();
tgw 3:9e51de1050a1 304 bool setGestureEnterThresh(uint8_t threshold);
tgw 3:9e51de1050a1 305 uint8_t getGestureExitThresh();
tgw 3:9e51de1050a1 306 bool setGestureExitThresh(uint8_t threshold);
tgw 3:9e51de1050a1 307
tgw 3:9e51de1050a1 308 /* Gesture LED, gain, and time control */
tgw 3:9e51de1050a1 309 uint8_t getGestureWaitTime();
tgw 3:9e51de1050a1 310 bool setGestureWaitTime(uint8_t time);
tgw 3:9e51de1050a1 311
tgw 3:9e51de1050a1 312 /* Gesture mode */
tgw 3:9e51de1050a1 313 uint8_t getGestureMode();
tgw 3:9e51de1050a1 314 bool setGestureMode(uint8_t mode);
tgw 3:9e51de1050a1 315
tgw 3:9e51de1050a1 316 /* Members */
tgw 3:9e51de1050a1 317 gesture_data_type gesture_data_; //instanciation from struct
tgw 3:9e51de1050a1 318 int gesture_ud_delta_;
tgw 3:9e51de1050a1 319 int gesture_lr_delta_;
tgw 3:9e51de1050a1 320 int gesture_ud_count_;
tgw 3:9e51de1050a1 321 int gesture_lr_count_;
tgw 3:9e51de1050a1 322 int gesture_near_count_;
tgw 3:9e51de1050a1 323 int gesture_far_count_;
tgw 3:9e51de1050a1 324 int gesture_state_;
tgw 3:9e51de1050a1 325 int gesture_motion_;
tgw 3:9e51de1050a1 326
tgw 3:9e51de1050a1 327
tgw 3:9e51de1050a1 328
tgw 3:9e51de1050a1 329 uint8_t I2CreadByte(char address, char subAddress);
tgw 3:9e51de1050a1 330 int I2CwriteByte(char address, char subAddress, char data); //if return value is 1, then ack not sent
tgw 3:9e51de1050a1 331 int I2CReadDataBlock(char address, char subAddress, char *data, unsigned int len); //reads array of bytes
tgw 3:9e51de1050a1 332 I2C i2c;
tgw 3:9e51de1050a1 333
tgw 3:9e51de1050a1 334 };