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
  Taster Abfrage Manuel 1 110 13.01.2019 10:50
Letzter Beitrag: Tommy56
  Wire.write und Client Socket LiVe 3 123 11.01.2019 13:51
Letzter Beitrag: Tommy56
  [Anfänger] Char Array Problem fp.blues2013 1 145 07.01.2019 13:06
Letzter Beitrag: Tommy56
  Problem beim Hochladen flint74 8 342 26.12.2018 19:26
Letzter Beitrag: Tommy56
  Problem mit Displayanzeige LCD2004 bzw. nicht Richtig magnum1795 39 1.169 18.12.2018 08:15
Letzter Beitrag: magnum1795
  Anfänger mit Problem/Gärtenbewässerungsprojekt Bommes 13 973 13.11.2018 20:17
Letzter Beitrag: fraju
  Problem beim Kompilieren Mega2560 und Dallastemp sepp01 2 424 24.09.2018 11:33
Letzter Beitrag: sepp01
  Problem mit Pointer GuaAck 6 651 02.09.2018 18:34
Letzter Beitrag: Tommy56
  Counter hinzufügen (Problem bin ich) Sasch600xt 5 453 29.08.2018 15:19
Letzter Beitrag: Hilgi
  Problem mit TFT Display Anzeige wechseln Thor Wallhall 10 1.843 06.07.2018 20:51
Letzter Beitrag: Thor Wallhall

Gehe zu:


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