Drivers for Pololu irs09a short range infra red sensor.

Dependencies:   mbed

Committer:
Hypna
Date:
Fri Mar 25 22:09:43 2016 +0000
Revision:
0:fba97a03cd3c
Initial upload

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Hypna 0:fba97a03cd3c 1 #include "ShortRangeSensor.h"
Hypna 0:fba97a03cd3c 2
Hypna 0:fba97a03cd3c 3 ShortRangeSensor::ShortRangeSensor(PinName sda, PinName scl) : i2c(sda, scl)
Hypna 0:fba97a03cd3c 4 {
Hypna 0:fba97a03cd3c 5 //disables ECE
Hypna 0:fba97a03cd3c 6 i2c.write(ADDR, SYSRANGE__RANGE_CHECK_ENABLES, 3);
Hypna 0:fba97a03cd3c 7 }
Hypna 0:fba97a03cd3c 8
Hypna 0:fba97a03cd3c 9 //returns range in mm
Hypna 0:fba97a03cd3c 10 int ShortRangeSensor::getRange()
Hypna 0:fba97a03cd3c 11 {
Hypna 0:fba97a03cd3c 12 char data;
Hypna 0:fba97a03cd3c 13
Hypna 0:fba97a03cd3c 14 i2c.write(ADDR, SYSRANGE__START_SAMPLE, 3);
Hypna 0:fba97a03cd3c 15 wait_ms(20);
Hypna 0:fba97a03cd3c 16 i2c.write(ADDR, RESULT__RANGE_VAL, 2);
Hypna 0:fba97a03cd3c 17 i2c.read(ADDR, &data, 1);
Hypna 0:fba97a03cd3c 18
Hypna 0:fba97a03cd3c 19 return data;
Hypna 0:fba97a03cd3c 20 }
Hypna 0:fba97a03cd3c 21
Hypna 0:fba97a03cd3c 22 int ShortRangeSensor::getStatus()
Hypna 0:fba97a03cd3c 23 {
Hypna 0:fba97a03cd3c 24 char data;
Hypna 0:fba97a03cd3c 25
Hypna 0:fba97a03cd3c 26 i2c.write(ADDR, RESULT__RANGE_STATUS, 2);
Hypna 0:fba97a03cd3c 27 i2c.read(ADDR, &data, 1);
Hypna 0:fba97a03cd3c 28
Hypna 0:fba97a03cd3c 29 return data;
Hypna 0:fba97a03cd3c 30 }
Hypna 0:fba97a03cd3c 31
Hypna 0:fba97a03cd3c 32 int ShortRangeSensor::getPPOffset()
Hypna 0:fba97a03cd3c 33 {
Hypna 0:fba97a03cd3c 34 char data;
Hypna 0:fba97a03cd3c 35
Hypna 0:fba97a03cd3c 36 i2c.write(ADDR, SYSRANGE__PART_TO_PART_RANGE_OFFSET, 2);
Hypna 0:fba97a03cd3c 37 i2c.read(ADDR, &data, 1);
Hypna 0:fba97a03cd3c 38
Hypna 0:fba97a03cd3c 39 return data;
Hypna 0:fba97a03cd3c 40 }
Hypna 0:fba97a03cd3c 41
Hypna 0:fba97a03cd3c 42 void ShortRangeSensor::setPPOffset(int offset)
Hypna 0:fba97a03cd3c 43 {
Hypna 0:fba97a03cd3c 44 if(offset < -128 || offset > 128)
Hypna 0:fba97a03cd3c 45 return;
Hypna 0:fba97a03cd3c 46
Hypna 0:fba97a03cd3c 47 char cmd[3];
Hypna 0:fba97a03cd3c 48
Hypna 0:fba97a03cd3c 49 cmd[0] = SYSRANGE__PART_TO_PART_RANGE_OFFSET[0];
Hypna 0:fba97a03cd3c 50 cmd[1] = SYSRANGE__PART_TO_PART_RANGE_OFFSET[1];
Hypna 0:fba97a03cd3c 51 cmd[2] = offset;
Hypna 0:fba97a03cd3c 52
Hypna 0:fba97a03cd3c 53 i2c.write(ADDR, cmd, 3);
Hypna 0:fba97a03cd3c 54 }