[gelöst] Fehler bei I²C Code unter Ubuntu "Wire.write(0);" nicht möglich?!?!

Hallo, ich vesuche gerade ein Temperatur Sensor auszulesen. Der Sensor ist von Ardafruit und hat die bezeichnung AM2315. Der Sensor hat eine I²C Schnittstelle unter der ich ihn auslese. Der Code funktioniert unter Windows einwandfrei leider aber nicht unter Ubuntu.

In der Zeile "Wire.write(0);" taucht ein Fehler auf:

sketch_feb10a.cpp: In function ‘void auslesen()’:
sketch_feb10a.cpp:27:15: error: call of overloaded ‘write(int)’ is ambiguous
/usr/share/arduino/libraries/Wire/Wire.h:55:20: note: candidates are: virtual size_t TwoWire::write(uint8_t)
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:49:12: note:                 size_t Print::write(const char*)

Jetzt ist die Frage wie löse ich das Problem. Der Fehler tritt auch auf wenn cih die "0" als Hex oder Bin Zahl ausgebe.

Wie gesagt unter Windows läufts ohne probleme.

Gruß gibsonuser

Falls gewünscht kann ich den ganzen Code hochladen.

Von "Dringend" ist dringend ab zu raten. Bitte den Sketch mitschicken!

Gibsonuser: In der Zeile "Wire.write(0);" taucht ein Fehler auf:

Im Zusammenhang mit Instanzen von Objekten, die verschiedene Arten von Parametern akzeptieren, kann "0" zweideutig sein.

Du kannst entweder versuchen, durch Type-Casting den passenden Variablentyp zu setzen. Also z.B.

Wire.write((byte)0);
oder
Wire.write((uint8_t)0);
oder
Wire.write((char)0);

Oder Du übergibst eine Variable, die einen klar definierten Typ hat, z.B.:

uint8_t value=0;
Wire.write(value);

Das Gemecker des Compilers kann ja wohl nichts weltbewegendes sein.

Sorry änder ich gleich mal.

#include <Wire.h>

#define sensor_address 0xDC
#define sensor_reg 0x03
const int start_address = 0x00;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
  Serial.println("Start logging");
}

void auslesen()
{
  float humidity;
  float temp;
  
  byte bytearray[8];
  byte zero = 0x00;
  
  Wire.beginTransmission(sensor_address);
  Wire.write(sensor_reg);
  Wire.write(zero);
  Wire.write(4);
  Wire.endTransmission();
  
  Wire.beginTransmission(sensor_address);
  Wire.write(sensor_reg);
  Wire.write(zero);
  Wire.write(4);
  Wire.endTransmission();
  
  Wire.requestFrom(sensor_address, 8);
  
  for(byte a=0; a < 8; a++)
  {
    bytearray[a] = Wire.read();
  }
  
  humidity = bytearray[2];
  humidity *= 256;
  humidity += bytearray[3];
  humidity /= 10;
 
  temp = bytearray[4];
  temp *= 256;
  temp += bytearray[5];
  
  Serial.print("Feuchtigkeit= ");
  Serial.println(humidity);
  
  if(temp< 65536)
  {
    temp /= 10;
    Serial.print("Temperatur =");
    Serial.print(temp);
  }
  else
  {  
    temp = temp-65536;
    temp /= 10;
    Serial.print("Temperatur= -");
    Serial.println(temp);
  }

  delay(1000);  
  
}

void loop()
{
  auslesen();
  
}

@jurs

Danke hat geklappt und vielen Dank für die Erklärung!