MB7040 Range finder experiment.

Dependencies:   mbed

main.cpp

Committer:
Belesiu
Date:
2015-01-03
Revision:
1:0cf1f2254f10
Parent:
0:28fb80eb93ca
Child:
2:6daf72c57cee

File content as of revision 1:0cf1f2254f10:

// Ultra Sonice Range Finder
// Experiement #1
// Belesiu
// 2014.12.26

#include "mbed.h"

DigitalOut myled(LED1);

I2C rangefinder(p9, p10);   // sda, sc1
Serial pc(USBTX, USBRX);    // tx, rx

const int addr = 0xE0;
char config_r[2];
char range_read[2];
float range;

AnalogOut signal(p18);

int main()
{
    int x = 0;

    while(1) {

        // Test serial port
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
        // pc.printf("Hello Jim! - %d\n", x++);

        // For MB7040

        config_r[0] = 0x00; // set pointer reg to ‘cmd register'
        config_r[1] = 0x51; // config data byte1
        rangefinder.write(addr, config_r, 2);
        wait(0.07);

        config_r[0] = 0x02; //set pointer reg to 'data register'
        rangefinder.write(addr, config_r, 1);   //send to pointer 'read range'
        rangefinder.read(addr, range_read, 2);  //read the two-byte range data
        range = ((range_read[0] << 8) + range_read[1]);

        pc.printf("%d Range = %.2f cm\n\r", x++, range); //print range on screen
        wait(0.05);
        
        // Output voltage proportional to distance.
        // The output value for the variable signal is 0 to 1.0.
        
        signal = range / 765.0;

    }
}