Sketch von RTC V0.22 auf V 1.0 anpassen

Hallo
Ich habe einen schönen sketch auf tronixstuff für eine RTC erfolgreich mit V 0.22 zum laufen gebracht. Jetzt wollte ich diesen sketch in einen grösseren einbauen der aber mit V 1.0 erstellt ist. Also anpassen! Wire.h hat anscheinend geändert und somit die Befehle Wire.send und Wire.receive zu neu Wire.read und Wire.write. Also angepasst--aber es compiliert immer noch nicht. Was mache ich falsch?

/*
 
Example 7.4
 Digital LCD clock
 tronixstuff.com/tutorials
 based on code by Maurice Ribble
 17-4-2008 - http://www.glacialwanderer.com/hobbyrobotics
 */

#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68
#include <LiquidCrystal.h> // we need this library for the LCD commands
LiquidCrystal lcd(4,5,6,7,8,9);

// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
  return ( (val/10*16) + (val%10) );
}

// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
  return ( (val/16*10) + (val%16) );
}
// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock

// Assumes you're passing in valid numbers

void setDateDs1307(byte second,        // 0-59
byte minute,        // 0-59
byte hour,          // 1-23
byte dayOfWeek,     // 1-7
byte dayOfMonth,    // 1-28/29/30/31
byte month,         // 1-12
byte year)          // 0-99
{
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.write(0);
  Wire.write(decToBcd(second));    // 0 to bit 7 starts the clock
  Wire.write(decToBcd(minute));
  Wire.write(decToBcd(hour));     
  Wire.write(decToBcd(dayOfWeek));
  Wire.write(decToBcd(dayOfMonth));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));
  Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave
  Wire.endTransmission();
}

// Gets the date and time from the ds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
  // Reset the register pointer
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.write(0);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

  // A few of these need masks because certain bits are control bits
  *second     = bcdToDec(Wire.read() & 0x7f);
  *minute     = bcdToDec(Wire.read());
  *hour       = bcdToDec(Wire.read() & 0x3f);  // Need to change this if 12 hour am/pm
  *dayOfWeek  = bcdToDec(Wire.read());
  *dayOfMonth = bcdToDec(Wire.read());
  *month      = bcdToDec(Wire.read());
  *year       = bcdToDec(Wire.read());
}

void setup()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  Wire.begin();
  Serial.begin(9600);

  // Change these values to what you want to set your clock to.
  // You probably only want to set your clock once and then remove
  // the setDateDs1307 call.

  second = 0;
  minute = 22;
  hour = 15;
  dayOfWeek = 5;
  dayOfMonth = 15;
  month = 3;
  year = 12;
 //setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);

  lcd.begin(16, 2); // tells Arduino the LCD dimensions
  lcd.setCursor(0,0);
  lcd.print("tronixstuff.com"); // print text and move cursor to start of next line
  lcd.setCursor(0,1);
  lcd.print("* example 7.4 * ");
  delay(5000);
  lcd.clear(); // clear LCD screen
}

void loop()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
  lcd.clear(); // clear LCD screen
  lcd.setCursor(0,0);
  lcd.print("    ");
  lcd.print(hour, DEC);
  lcd.print(":");
  if (minute<10)
  {
    lcd.print("0");
  }
  lcd.print(minute, DEC);
  lcd.print(":");
  if (second<10)
  {
    lcd.print("0");
  }
  lcd.print(second, DEC);
 
  lcd.setCursor(0,1);
  lcd.print(" ");
  switch(dayOfWeek)
  {
  case 1: 
    lcd.print("Sun");
    break;
  case 2: 
    lcd.print("Mon");
    break;
  case 3: 
    lcd.print("Tue");
    break;
  case 4: 
    lcd.print("Wed");
    break;
  case 5: 
    lcd.print("Thu");
    break;
  case 6: 
    lcd.print("Fri");
    break;
  case 7: 
    lcd.print("Sat");
    break;
  }
  lcd.print("  ");
  lcd.print(dayOfMonth, DEC);
  lcd.print("/");
  lcd.print(month, DEC);
  lcd.print("/20");
  lcd.print(year, DEC);
  delay(1000);
}

Was sagt der Compiler?

Hi
Der compiler meint

Tom_push_encoder_RTC_V1.cpp: In function 'void setDateDs1307(byte, byte, byte, byte, byte, byte, byte)':
Tom_push_encoder_RTC_V1:52: error: call of overloaded 'write(int)' is ambiguous
C:\ARDUINO\arduino-1.0\libraries\Wire/Wire.h:55: note: candidates are: virtual size_t TwoWire::write(uint8_t)
C:\ARDUINO\arduino-1.0\hardware\arduino\cores\arduino/Print.h:49: note: size_t Print::write(const char*)
Tom_push_encoder_RTC_V1.cpp: In function 'void getDateDs1307(byte*, byte*, byte*, byte*, byte*, byte*, byte*)':
Tom_push_encoder_RTC_V1:75: error: call of overloaded 'write(int)' is ambiguous
C:\ARDUINO\arduino-1.0\libraries\Wire/Wire.h:55: note: candidates are: virtual size_t TwoWire::write(uint8_t)
C:\ARDUINO\arduino-1.0\hardware\arduino\cores\arduino/Print.h:49: note: size_t Print::write(const char*)

in den beiden Funktionen setDateDs1307 und getDateDs1307 in der Zeile nach Wire.beginTransmission(DS1307_I2C_ADDRESS) den Code von

 Wire.write(0);

in

Wire.write(byte(0));

ändern

Genau das war's. Vielen Dank