TestSRF08 SRF08, I2C
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 Serial pc(USBTX,USBRX); // Tx, Rx Pin, default boud = 9600 00004 I2C i2c(p28, p27); // SDA, SCL 00005 00006 int main() 00007 { 00008 char cmd[2]; // Command 00009 char echo[2]; // Echo result data (8bit) 00010 int addr = 0xE0; // Defalut I2C address of SRF08 00011 int range = 0; // Rage data (16bit, cm) 00012 00013 cmd[0] = 0x02; // Register(RangeValue) 00014 cmd[1] = 0x45; // (RangeValue*43)+43 = (69*43)+43 = 3010mm, maximum range 00015 i2c.write(addr,cmd,2); // Send I2C data (8bit*2) 00016 00017 while(1) 00018 { 00019 cmd[0] = 0x00; // Register(Command) 00020 cmd[1] = 0x51; // Ranging mode - Result in centimeters 00021 i2c.write(addr,cmd,2); // Send I2C data (8bit*2) 00022 00023 wait(0.07); // Wait 70ms 00024 00025 cmd[0] = 0x02; // Register(1st Echo) 00026 i2c.write(addr,cmd,1); // Send I2C data (8bit*1) 00027 i2c.read(addr,echo,2); // Read I2C data (8bit*2) 00028 00029 range = (echo[0]<<8)+echo[1]; // 8bit+8bit=16bit 00030 00031 pc.printf("Range : %d cm\n",range); 00032 } 00033 } 00034
Generated on Sat Jul 16 2022 02:50:48 by 1.7.2