Welcome 访客, you are in: 登录

RoboticFan(机器人爱好者)-Wiki

RSS RSS

Navigation





Search the wiki
»

PoweredBy

说明

本样例说明了如何利用Arduino的Wire函数库和Devantech出品的支持I2C协议的COMPS03电子罗盘进行通信。理论上也适用于其它I2C通信。

代码


/*
  CMPS03 compass reader
 language: Wiring/Arduino

 Reads data from a Devantech CMP03 compass sensor.

 Sensor connections:
 SDA - Analog pin 4
 SCL - Analog pin 5

 created 5 Mar. 2007
 by Tom Igoe

 */

// include Wire library to read and write I2C commands:
  1. include
// the commands needed for the SRF sensors:
  1. define sensorAddress 0x60
    // this is the memory register in the sensor that contains the result:
  2. define resultRegister 0x02
int PowerPin = 13; void setup() { // start the I2C bus Wire.begin(); // open the serial port: Serial.begin(9600); pinMode(PowerPin, OUTPUT); digitalWrite(PowerPin, HIGH); } void loop() { // send the command to read the result in inches: setRegister(sensorAddress, resultRegister); // read the result: int bearing = readData(sensorAddress, 2); // print it: Serial.print("bearing: "); Serial.print(bearing/10); Serial.println(" degrees"); // wait before next reading: delay(70); } /* setRegister() tells the SRF sensor to change the address pointer position */ void setRegister(int address, int thisRegister) { // start I2C transmission: Wire.beginTransmission(address); // send address to read from: Wire.send(thisRegister); // end I2C transmission: Wire.endTransmission(); } /* readData() returns a result from the SRF sensor */ int readData(int address, int numBytes) { int result = 0; // the result is two bytes long // send I2C request for data: Wire.requestFrom(address, numBytes); // wait for two bytes to return: while (Wire.available() < 2 ) { // wait for result } // read the two bytes, and combine them into one int: result = Wire.receive() * 256; result = result + Wire.receive(); // return the result: return result; } //end code

ScrewTurn Wiki version 3.0.1.400. Some of the icons created by FamFamFam.