sensore CMPS03

volevo provare il sensore di bussola CMPS03: http://www.robot-electronics.co.uk/htm/cmps3tech.htm
e stavo cercando degli esempi su come usarlo e ho trovato questo:
http://www.robot-electronics.co.uk/htm/arduino_examples.htm#CMPS03 Magnetic Compass
lì suggeriscono questo codice:

/*
CMPS03 with arduino I2C example

This will display a value of 0 - 359 for a full rotation of the compass.

The SDA line is on analog pin 4 of the arduino and is connected to pin 3 of the CMPS03.
The SCL line is on analog pin 5 of the arduino and is conected to pin 2 of the CMPS03.
Both SDA and SCL are also connected to the +5v via a couple of 1k8 resistors.
A switch to callibrate the CMPS03 can be connected between pin 6 of the CMPS03 and the ground.
*/

#include <Wire.h>

#define ADDRESS 0x60 //defines address of compass

void setup(){
  Wire.begin(); //conects I2C
  Serial.begin(9600);
}

void loop(){
  byte highByte;
  byte lowByte;
  
   Wire.beginTransmission(ADDRESS);      //starts communication with cmps03
   Wire.write(2);                         //Sends the register we wish to read
   Wire.endTransmission();

   Wire.requestFrom(ADDRESS, 2);        //requests high byte
   while(Wire.available() < 2);         //while there is a byte to receive
   highByte = Wire.read();           //reads the byte as an integer
   lowByte = Wire.read();
   int bearing = ((highByte<<8)+lowByte)/10; 
   
   Serial.println(bearing);
   delay(100);
}

ho fatto copia-incolla sull’ide e ho provato a compilarlo ma mi da questi errori:

cmps03.cpp: In function 'void loop()':
cmps03:25: error: 'class TwoWire' has no member named 'write'
cmps03:30: error: 'class TwoWire' has no member named 'read'
cmps03:31: error: 'class TwoWire' has no member named 'read'

secondo voi cosa può essere sbagliato? a occhio sembra che il problema sia nella libreria o sbaglio?
grazie in anticipo :wink:

er_like_no_other: secondo voi cosa può essere sbagliato? a occhio sembra che il problema sia nella libreria o sbaglio? grazie in anticipo ;)

O sistemi le chiamate per l'IDE 1.0 oppure usi la 0023 per compilare.

no io sto usando la 0022 :~

da incompetente: puoi provare a cambiare le funzioni .Write e .Read in Receive e Send?

sicuramente errato, tuttavia nella lettura della libreria mi cade l'occhio sul fatto che non c'è un .Write e .Send, bensì gli altri 2 void :)

Oops, è esattamente il contrario di quello che ti avevo detto prima, lo sketch per l'IDE 1.0 quindi o lo compili per questo oppure sistemi le chiamate wire per la 0022.

ovvero devo sostituire il read con receive e il write con send? ho appena provato così me lo compila :) ma, perchè hanno cambia anche quello sull' 1.0? quel codice lì sarebbe per l' 1.0? io l'ho provato per poco la nuova versione, poi sono tornato alla 0022, mi piace di più... grazie :)

er_like_no_other: ma, perchè hanno cambia anche quello sull' 1.0?

E' chiaramente scritto nella reference per la wire.

As of Arduino 1.0, the library inherits from the Stream functions, making it consistent with other read/write libraries. 
Because of this, send() and receive() have been replaced with read() and write().

eheh l'avevo guardato tipo 2/3 mesi fa quel reference e non c'era ancora quell'update :sweat_smile: chiedo perdono, non lo sapevo, comunque grazie mille ;)