Requesting data from SRF02 Range finder via I2C


i'm trying request data srf02 ultrasonic range finder. sensor data here http://www.robot-electronics.co.uk/htm/srf02techi2c.htm examples listed here http://www.robot-electronics.co.uk/htm/arduino_examples.htm#srf02,%20srf08,%20srf10,%20srf235 outdated.

i've tried alter give following, i'm getting error "34: error: call of overloaded 'write(int)' ambiguous". can't work out abouts error coming from.

code: [select]
#include <wire.h>

#define srfaddress (0x70)    //usv device address
#define cmdbyte (0x00)       //command byte
#define rangebyte (0x02)


//setup
//-----------------------------------------------------------------------------

byte highbyte = 0x00;                             // stores high byte ranging
byte lowbyte = 0x00;                              // stored low byte ranging

void setup()
{
  wire.begin();        // join i2c bus (address optional master)
  serial.begin(9600);  // start serial output
  delay(1000);
}


//main program
//----------------------------------------------------------------------
void loop()
{
int rangedata = getrange();
serial.println(rangedata, dec); 
}

int getrange(){                                   // function gets ranging srf08
 
  int range = 0;
 
  wire.begintransmission(srfaddress);             // start communticating srf08
  wire.write(cmdbyte);                             // send command byte
  wire.write(0x51);                                // send 0x51 start ranging
  wire.endtransmission();
 
  delay(100);                                     // wait ranging complete
 
  wire.begintransmission(srfaddress);             // start communicating srfmodule
  wire.write(rangebyte);                           // call register start of ranging data
  wire.endtransmission();
 
  wire.requestfrom(srfaddress, 2);                // request 2 bytes srf module
  while(wire.available() < 2);                    // wait data arrive
  highbyte = wire.read();                      // high byte
  lowbyte = wire.read();                       // low byte

  range = (highbyte << 8) + lowbyte;              // put them together
 
  return(range);                                  // returns range
}

change line in question to:

code: [select]
  wire.write((byte) cmdbyte);                             // send command byte

or better still, change:

code: [select]
#define cmdbyte (0x00)       //command byte

to:

code: [select]
const byte cmdbyte = 0x00;       //command byte


Arduino Forum > Using Arduino > Programming Questions > Requesting data from SRF02 Range finder via I2C


arduino

Comments

Popular posts from this blog

Thread: PKI Client 5.00 install (for eToken Pro)

ATmega2560-Arduino Pin Mapping

Crossfader Arduino Tutorial