Interface library for the Devantech SRF02/SRF08 ultrasonic i2c rangers. Depends on I2cRtosDriver lib!

Committer:
humlet
Date:
Thu Feb 21 23:40:36 2013 +0000
Revision:
0:2686e857daf6
Child:
1:32c4dd194228
first running

Who changed what in which revision?

UserRevisionLine numberNew contents of line
humlet 0:2686e857daf6 1 #include "SRF02_IF.h"
humlet 0:2686e857daf6 2
humlet 0:2686e857daf6 3 SRF02_IF::SRF02_IF(int adr, I2C& i2c) : m_adr(adr), m_i2c(i2c)
humlet 0:2686e857daf6 4 {}
humlet 0:2686e857daf6 5
humlet 0:2686e857daf6 6 int SRF02_IF::triggerRanging()
humlet 0:2686e857daf6 7 {
humlet 0:2686e857daf6 8 const char regNcmd[2]= {0x00,0x52};
humlet 0:2686e857daf6 9 return m_i2c.write(m_adr, regNcmd, 2);
humlet 0:2686e857daf6 10 }
humlet 0:2686e857daf6 11
humlet 0:2686e857daf6 12 int SRF02_IF::triggerPing()
humlet 0:2686e857daf6 13 {
humlet 0:2686e857daf6 14 const char regNcmd[2]= {0x00,0x5C};
humlet 0:2686e857daf6 15 return m_i2c.write(m_adr, regNcmd, 2);
humlet 0:2686e857daf6 16 }
humlet 0:2686e857daf6 17
humlet 0:2686e857daf6 18 int SRF02_IF::triggerEchoMeasurement()
humlet 0:2686e857daf6 19 {
humlet 0:2686e857daf6 20 const char regNcmd[2]= {0x00,0x58};
humlet 0:2686e857daf6 21 return m_i2c.write(m_adr, regNcmd, 2);
humlet 0:2686e857daf6 22 }
humlet 0:2686e857daf6 23
humlet 0:2686e857daf6 24 int SRF02_IF::readTransitTime_us()
humlet 0:2686e857daf6 25 {
humlet 0:2686e857daf6 26 char chk[1]= {0xff};
humlet 0:2686e857daf6 27 while(chk[0] == 0xff) {
humlet 0:2686e857daf6 28 m_i2c.write(m_adr, 0x00, 1, 1);
humlet 0:2686e857daf6 29 m_i2c.read(m_adr, chk, 1);
humlet 0:2686e857daf6 30 }
humlet 0:2686e857daf6 31 /* //m_i2c.write(m_adr, 0x00, 1, 1);
humlet 0:2686e857daf6 32 char eco;
humlet 0:2686e857daf6 33 do {
humlet 0:2686e857daf6 34 eco=m_i2c.read(1);
humlet 0:2686e857daf6 35 } while(eco == 0xff);
humlet 0:2686e857daf6 36 */
humlet 0:2686e857daf6 37 const char reg[1] = {0x02};
humlet 0:2686e857daf6 38 char result[2];
humlet 0:2686e857daf6 39 m_i2c.write(m_adr, reg, 1, 1);
humlet 0:2686e857daf6 40 m_i2c.read(m_adr, result, 2);
humlet 0:2686e857daf6 41
humlet 0:2686e857daf6 42 return (static_cast<int>(result[0])<<8)| static_cast<int>(result[1]);
humlet 0:2686e857daf6 43 }
humlet 0:2686e857daf6 44
humlet 0:2686e857daf6 45 void SRF02_IF::resetI2CAdress(int newAddress)
humlet 0:2686e857daf6 46 {
humlet 0:2686e857daf6 47 char regNcmd[2];
humlet 0:2686e857daf6 48
humlet 0:2686e857daf6 49 regNcmd[0]=0x00;
humlet 0:2686e857daf6 50
humlet 0:2686e857daf6 51 regNcmd[1]=0xA0;
humlet 0:2686e857daf6 52 m_i2c.write(m_adr,regNcmd,2);
humlet 0:2686e857daf6 53
humlet 0:2686e857daf6 54 regNcmd[1]=0xAA;
humlet 0:2686e857daf6 55 m_i2c.write(m_adr,regNcmd,2);
humlet 0:2686e857daf6 56
humlet 0:2686e857daf6 57 regNcmd[1]=0xA5;
humlet 0:2686e857daf6 58 m_i2c.write(m_adr,regNcmd,2);
humlet 0:2686e857daf6 59
humlet 0:2686e857daf6 60 regNcmd[1]=newAddress;
humlet 0:2686e857daf6 61 m_i2c.write(m_adr,regNcmd,2);
humlet 0:2686e857daf6 62 }
humlet 0:2686e857daf6 63
humlet 0:2686e857daf6 64