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:
Sat Dec 19 10:42:51 2015 +0000
Revision:
10:4200a8140b10
Parent:
4:b2fe3a2545bf
Child:
11:6f2440be5aa4
use single I2C instance shared with all i2c devices

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 0:9f02ae958e20 19 }
sillevl 0:9f02ae958e20 20 }
sillevl 0:9f02ae958e20 21
sillevl 0:9f02ae958e20 22 void VL6180xManager::select(int index)
sillevl 0:9f02ae958e20 23 {
sillevl 0:9f02ae958e20 24 mux.select(index);
sillevl 0:9f02ae958e20 25 }
sillevl 0:9f02ae958e20 26
sillevl 4:b2fe3a2545bf 27 m3dpi::Distance VL6180xManager::getAllDistance()
sillevl 0:9f02ae958e20 28 {
sillevl 4:b2fe3a2545bf 29 m3dpi::Distance distance;
sillevl 4:b2fe3a2545bf 30 distance.front = getDistance(0);
sillevl 4:b2fe3a2545bf 31 distance.front_right = getDistance(1);
sillevl 4:b2fe3a2545bf 32 distance.right = getDistance(2);
sillevl 4:b2fe3a2545bf 33 distance.back_right = getDistance(3);
sillevl 4:b2fe3a2545bf 34 distance.back = getDistance(4);
sillevl 4:b2fe3a2545bf 35 distance.back_left = getDistance(5);
sillevl 4:b2fe3a2545bf 36 distance.left = getDistance(6);
sillevl 4:b2fe3a2545bf 37 distance.front_left = getDistance(7);
sillevl 4:b2fe3a2545bf 38 return distance;
sillevl 4:b2fe3a2545bf 39 }
sillevl 4:b2fe3a2545bf 40
sillevl 4:b2fe3a2545bf 41 int VL6180xManager::getDistance(int index)
sillevl 4:b2fe3a2545bf 42 {
sillevl 4:b2fe3a2545bf 43 mux.select(index);
sillevl 4:b2fe3a2545bf 44 return sensor.getDistance();
sillevl 0:9f02ae958e20 45 }
sillevl 0:9f02ae958e20 46
sillevl 0:9f02ae958e20 47