Hallo Andy,

Du hast vor dem Auslesen vergessen, das Register auf 2 zu setzen. Dir fehlen vor dem Lesen folgende Code-Zeilen:

  • i2c_start(US_address + I2C_WRITE);
    i2c_write(0x02);
    i2c_stop();

Erst danach darf kommen:

  • busy = i2c_start(US_address + I2C_READ);

    // address I2C device ultrasonic sensor with read access

    if (busy == 0) //vorher == 0

    {
    distance_low = i2c_readAck(); // read one byte
    distance_high = i2c_readNak();
    distance = (distance_low*256)+distance_high;
    //i2c_stop(); // release I2C bus
    }

    else

    {
    i2c_stop(); // release I2C bus
    }

Ausserdem solltest Du die Stop-Condition nach dem Lesen nicht auskommentieren. Sonst wartet der SRF10, ob noch was kommt auf dem I2C Bus.

Gruß, uffi.