mirror of
https://github.com/arduino/Arduino.git
synced 2024-12-13 23:48:46 +01:00
2fa8deb92d
Compilation still has problems (Thread error on success, and can't handle non-pde files in a sketch). Modified the Mac OS X make.sh to copy the hardware, avr tools, and example over. Removing some of the antlr stuff. Disabling the Commander (command-line execution) for now. Added Library, LibraryManager, and Target. Added support for prefixed preferences (e.g. for boards and programmers).
85 lines
2.7 KiB
Plaintext
Executable File
85 lines
2.7 KiB
Plaintext
Executable File
// I2C SRF10 or SRF08 Devantech Ultrasonic Ranger Finder
|
|
// by Nicholas Zambetti <http://www.zambetti.com>
|
|
// and James Tichenor <http://www.jamestichenor.net>
|
|
|
|
// Demonstrates use of the Wire library reading data from the
|
|
// Devantech Utrasonic Rangers SFR08 and SFR10
|
|
|
|
// Created 29 April 2006
|
|
|
|
#include <Wire.h>
|
|
|
|
void setup()
|
|
{
|
|
Wire.begin(); // join i2c bus (address optional for master)
|
|
Serial.begin(9600); // start serial communication at 9600bps
|
|
}
|
|
|
|
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.send(0x00); // sets register pointer to the command register (0x00)
|
|
Wire.send(0x50); // 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.send(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.receive(); // receive high byte (overwrites previous reading)
|
|
reading = reading << 8; // shift high byte to be high 8 bits
|
|
reading |= Wire.receive(); // receive low byte as lower 8 bits
|
|
Serial.println(reading); // print the reading
|
|
}
|
|
|
|
delay(250); // wait a bit since people have to read the output :)
|
|
}
|
|
|
|
|
|
/*
|
|
|
|
// The following code changes the address of a Devantech Ultrasonic Range Finder (SRF10 or SRF08)
|
|
// usage: changeAddress(0x70, 0xE6);
|
|
|
|
void changeAddress(byte oldAddress, byte newAddress)
|
|
{
|
|
Wire.beginTransmission(oldAddress);
|
|
Wire.send(0x00);
|
|
Wire.send(0xA0);
|
|
Wire.endTransmission();
|
|
|
|
Wire.beginTransmission(oldAddress);
|
|
Wire.send(0x00);
|
|
Wire.send(0xAA);
|
|
Wire.endTransmission();
|
|
|
|
Wire.beginTransmission(oldAddress);
|
|
Wire.send(0x00);
|
|
Wire.send(0xA5);
|
|
Wire.endTransmission();
|
|
|
|
Wire.beginTransmission(oldAddress);
|
|
Wire.send(0x00);
|
|
Wire.send(newAddress);
|
|
Wire.endTransmission();
|
|
}
|
|
|
|
*/
|