INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Problem mit Wire.available() abfrage
11.01.2018, 02:22 (Dieser Beitrag wurde zuletzt bearbeitet: 11.01.2018 04:08 von avoid.)
Beitrag #1
Problem mit Wire.available() abfrage
hallo Smile

ich hab vor einiger zeit einen Code zum HDMM01 Kompass Sensor von Pollin gepostet welcher damals mit dem Uno wunderbar lief.
https://www.arduinoforum.de/arduino-Thre...6#pid25766

Nachdem ich nun den Sensor wieder ausgegraben habe musste ich feststellen das der Code bei der while Schleife hängen bleibt und scheinbar vergeblich auf Antwort wartet.
Code:
Wire.beginTransmission(KompassAdress);
  Wire.write(byte(0x01));
  Wire.requestFrom(KompassAdress, 4);  // <- hiernach antwortet er noch
  while(Wire.available()<4);                   // <- hier antwortet er nicht mehr
  MsbX =Wire.read(); // obere 4 Bit X
  LsbX =Wire.read(); // untere 8 Bit X
  MsbY =Wire.read(); // obere 4 Bit Y
  LsbY =Wire.read(); // untere 8 Bit Y
  Wire.endTransmission(); // stop transmitting

Frage 1: warum?
Frage 2: was kann ich dagegen tun?

Leider ist er nicht mehr zu bekommen, weswegen ich Notfalls einen vergleichbar sparsamen und neigungskompensieren Sensor bräuchte der i2c kann und nicht zu groß ist.
Er kann ab 2,7V betrieben werden und verbraucht bei 3V nur 0.4mA (bei 50 Messungen pro Sekunde). Er ist also sehr gut für Geräte mit kleinem Akku geeignet.

vergesst es, vermutlich ist der HDMM01 kaputt, er antwortet auf nichts.
ich hab jetzt meinen anderen alten Sensor HMC5883L ausgegraben, der geht und verbraucht nur 0,1mA. Wink

Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2018, 13:40
Beitrag #2
RE: Problem mit Wire.available() abfrage
Lass Dir doch mal den Wert ausgeben:
Code:
// anstelle von
while(Wire.available()<4);
// nimm mal
int av = 0;
while(av < 4) {
  Serial.println(av);
  av = Wire.available()
}
Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  virtual wire empfänger-sender peterfried 30 1.426 17.04.2019 07:21
Letzter Beitrag: Tommy56
  Wire.requestFrom Blende8 7 491 27.03.2019 15:54
Letzter Beitrag: Blende8
  Einfache IF-Abfrage....(mir) unerklärlicher Fehler Lite 10 490 24.03.2019 12:36
Letzter Beitrag: Lite
  Problem mit UniversalTelegramBot edi_ying 8 624 09.02.2019 15:11
Letzter Beitrag: Tommy56
Question (Denk)Problem mit char array[] ? ManfredH 3 407 05.02.2019 12:01
Letzter Beitrag: ManfredH
  USB Problem mit Linux HeikeF 5 498 03.02.2019 17:04
Letzter Beitrag: Tommy56
  Drehgeber wie Iduino SE055 - Software- oder Hardware-Problem? Arduinero 12 736 24.01.2019 13:55
Letzter Beitrag: Bitklopfer
  Taster Abfrage Manuel 1 438 13.01.2019 10:50
Letzter Beitrag: Tommy56
  Wire.write und Client Socket LiVe 3 511 11.01.2019 13:51
Letzter Beitrag: Tommy56
  [Anfänger] Char Array Problem fp.blues2013 1 361 07.01.2019 13:06
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste