Hallo,

ich hab mal ein Programm geschrieben, es funktioniert aber leider nicht, sondern liefert nur "190" als Wert auf das Display. Ich vermute, dass die I2C-Kommunikation nicht funktioniert. Kann sich die mal jemand anschauen, jetzt unabhängig davon, ob man einen NXT hat oder nicht. Vor allem bei dem Startbit bin ich mir nicht ganz sicher. Und ob ich nach jedem Lesen das Stoppbit setzten muss und dann wieder ganz von Anfang anfangen muss. Hier ist mal das Programm, über jeden Hinweis bin ich dankbar!

Code:
# define cmps03 S1

int wert;

task main()
{
  SetSensorLowspeed (cmps03);          // I2C an Port 1
  ClearScreen ();
  
  I2CWrite (cmps03, 0, 1);             // Startbit setzten
  I2CWrite (cmps03, 0, 192);           // Adresse des Compass
  I2CWrite (cmps03, 0, 1);             // Registeradresse des Compass, 1 = Werte ausgeben von 0-255
  I2CWrite (cmps03, 0, 193);           // Erneutes Startbit setzen
  while(true)
  {
    I2CRead (cmps03, 1, wert)         //  Wert des Registers 2 einlesen
    
    TextOut(15,LCD_LINE1,"erd:", true); // Und auf Display ausgeben
    NumOut(60,10, wert);
    Wait(100);
  }
}