Pages: [1]   Go Down
Author Topic: Arduino + SRF02 Distance Sensor  (Read 328 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi everybody,

I need some help with a project.
I want simply to check out the distance between the sensor SRF02 and some stuff.
The Problem is that my serial monitor shows 0cm the whole time (see picture). I have programmed the arduino with the standard Arduino Software and took the following code (found and simply modificated on: http://arduino.cc/en/Tutorial/SFRRangerReader)

Code:


    #include <Wire.h>
     

    void setup()
    {
     
      Wire.begin();                // join i2c bus (address optional for master)
      Serial.begin(9600);          // start serial communication at 9600bps
      Serial.println("Arduino SRF02 Ultrasonic range finder \n ---------------------------------------");
      delay(2000);
    }
     
    int reading = 0;
     
    void loop()
    {
      // step 1: instruct sensor to read echoes
      Wire.beginTransmission(112); // transmit to device #112 (0x70)
      // the address specified in the datasheet is 224 (0xE0)
      // but i2c adressing uses the high 7 bits so it's 112
      Wire.write(byte(0x00));      // sets register pointer to the command register (0x00) 
      Wire.write(byte(0x51));      // command sensor to measure in "inches" (0x50)
      // use 0x51 for centimeters
      // use 0x52 for ping microseconds
      Wire.endTransmission();      // stop transmitting
     
      // step 2: wait for readings to happen
      delay(70);                   // datasheet suggests at least 65 milliseconds
     
      // step 3: instruct sensor to return a particular echo reading
      Wire.beginTransmission(112); // transmit to device #112
      Wire.write(byte(0x02));      // sets register pointer to echo #1 register (0x02)
      Wire.endTransmission();      // stop transmitting
     
      // step 4: request reading from sensor
      Wire.requestFrom(112, 2);    // request 2 bytes from slave device #112
     
        // step 5: receive reading from sensor
      if(2 <= Wire.available())    // if two bytes were received
      {
        reading = Wire.read();  // receive high byte (overwrites previous reading)
        reading = reading << 8;    // shift high byte to be high 8 bits
        reading |= Wire.read(); // receive low byte as lower 8 bits
        //    Serial.println(reading);   // print the reading
      }
      if(reading >= 100){            // over 100 cm
        Serial.println("Target out of Range.");
      }
      else{                          // below 100  cm
        Serial.print("Target in Range! (");
        Serial.print(reading);       // print distance
        Serial.println("cm)");
       
       
      }
     
      delay(250);                  // wait a bit since people have to read the output :)
    }


I choose the right board and the right baud rate.
Can anyboy help me?


* Distanz Screenshot.jpg (50.41 KB, 554x391 - viewed 41 times.)
Logged

Pages: [1]   Go Up
Jump to: