library for m3Dpi robot, based on the Pololu 3pi and m3pi. m3Dpi has multiple distance sensors, gyroscope, compass and accelerometer sensor to be fully aware of its environment. With the addition of xbee or nrf24n01 module it has wireless communication capabilities.

Dependencies:   m3pi ADXL345_I2C HMC5583L ITG3200 PCA9547 TLC59116 VL6180x RGB-fun xbee

Dependents:   m3Dpi-helloworld

Committer:
sillevl
Date:
Wed Jan 20 17:54:16 2016 +0000
Revision:
12:4cb092df6958
Parent:
11:6f2440be5aa4
update library to forked project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sillevl 0:9f02ae958e20 1 #include "vl6180xManager.h"
sillevl 0:9f02ae958e20 2
sillevl 10:4200a8140b10 3 VL6180xManager::VL6180xManager(I2C &_i2c): mux(_i2c), i2c(_i2c), sensor(i2c)
sillevl 10:4200a8140b10 4 {
sillevl 10:4200a8140b10 5 initialize();
sillevl 10:4200a8140b10 6 }
sillevl 0:9f02ae958e20 7
sillevl 0:9f02ae958e20 8 VL6180xManager::VL6180xManager(PinName sda, PinName scl) : mux(sda, scl), i2c(sda, scl), sensor(sda, scl)
sillevl 0:9f02ae958e20 9 {
sillevl 0:9f02ae958e20 10 i2c.frequency(400000);
sillevl 10:4200a8140b10 11 initialize();
sillevl 10:4200a8140b10 12 }
sillevl 10:4200a8140b10 13
sillevl 10:4200a8140b10 14 void VL6180xManager::initialize()
sillevl 10:4200a8140b10 15 {
sillevl 0:9f02ae958e20 16 for(int i = 0; i < SENSOR_COUNT; i++) {
sillevl 0:9f02ae958e20 17 select(i);
sillevl 0:9f02ae958e20 18 sensor.initialize();
sillevl 11:6f2440be5aa4 19 sensor.startContinuousOperation();
sillevl 0:9f02ae958e20 20 }
sillevl 0:9f02ae958e20 21 }
sillevl 0:9f02ae958e20 22
sillevl 0:9f02ae958e20 23 void VL6180xManager::select(int index)
sillevl 0:9f02ae958e20 24 {
sillevl 0:9f02ae958e20 25 mux.select(index);
sillevl 0:9f02ae958e20 26 }
sillevl 0:9f02ae958e20 27
sillevl 4:b2fe3a2545bf 28 m3dpi::Distance VL6180xManager::getAllDistance()
sillevl 0:9f02ae958e20 29 {
sillevl 4:b2fe3a2545bf 30 m3dpi::Distance distance;
sillevl 4:b2fe3a2545bf 31 distance.front = getDistance(0);
sillevl 4:b2fe3a2545bf 32 distance.front_right = getDistance(1);
sillevl 4:b2fe3a2545bf 33 distance.right = getDistance(2);
sillevl 4:b2fe3a2545bf 34 distance.back_right = getDistance(3);
sillevl 4:b2fe3a2545bf 35 distance.back = getDistance(4);
sillevl 4:b2fe3a2545bf 36 distance.back_left = getDistance(5);
sillevl 4:b2fe3a2545bf 37 distance.left = getDistance(6);
sillevl 4:b2fe3a2545bf 38 distance.front_left = getDistance(7);
sillevl 4:b2fe3a2545bf 39 return distance;
sillevl 4:b2fe3a2545bf 40 }
sillevl 4:b2fe3a2545bf 41
sillevl 4:b2fe3a2545bf 42 int VL6180xManager::getDistance(int index)
sillevl 4:b2fe3a2545bf 43 {
sillevl 4:b2fe3a2545bf 44 mux.select(index);
sillevl 4:b2fe3a2545bf 45 return sensor.getDistance();
sillevl 0:9f02ae958e20 46 }
sillevl 0:9f02ae958e20 47
sillevl 0:9f02ae958e20 48