Pages: [1]   Go Down
Author Topic: Arduino rebooten bei verwendung der LiquidCrystal_I2C  (Read 600 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Moin,

wenn ich in dem angefuegten Sketch die Libarary korrekt "vorbereite"
Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,20,4);         // LCD-Display instanziieren
und  in setup()

Code:
// LCD-Display Initialisieren
lcd.init();         // LCD-Display initialisieren
lcd.clear();        // LCD loeschen
lcd.backlight();    // Hintergrundbeleuchtung einschalten

lcd.setCursor(0, 0);// In die 1. Zeile wechseln
lcd.print("Systemstart");
einfuege macht der Arduino an unterschieldlichen stellen (meisten bei der abarbeitung von "Daten_senden") einen reboot.

Kann mir das leider nicht erklaeren, kann das evtl. jemand hier?


* GPS_Log_web_forum_ino.ino (11.39 KB - downloaded 5 times.)
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21881
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Könnte sein, daß die Hintergrundbeleuchtung zuviel Strom zieht und deshalb die Sicherung auslöst.
Passiert es Dir wenn Du den Arduino über USB versorgst und auch über ein externes Netzteil?
Es könnte auch ein Problem mit dem RAM sein obwohl Du fleißig F() verwendest.
Versuch den Sketch auf einem Arduino MEGA.
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ich hab ein DFRobot Mega 1280 und auch ein I2C Display dran. Ich steuere damit eine Eisenbahnanlage und seit kurzem gibt es an unterschiedlichen Stellen auch immer wieder ein plötzliches reboot. Ich habe schon Netzteil, Relais und anderes getauscht nur noch nicht das Board. Ich werde die Library mal entfernen und wieder testen. Netzteil fällt als Ursache somit erstmal raus.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

könnte dies das Problem sein?

„Notes for users with a Pollin.de interface board
http://www.pollin.de/shop/dt/NDU4OTgxOTk-/Bausaetze_Module/Bausaetze/LCD_I2C_Modul.html


They have also chosen two rather high pull-up resistors (10K) for the I2C lines. Usually two 4K7 resistors should do the job.
Please note that on a I2C bus only one device should have the pull-up resistors installed!

I hope this helps in getting your LCD working.”
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21881
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ein zu hoher Pullup-Widerstand am I2C Bus bei zu langer Leitung oder zuvielen Devices macht, daß nach einem LOW die Spannung nicht schnell genug auf HIGH für ein nachfolgendes HIGH ist. Anstatt L-H wir L-L übertragen. Der I2C - Bus funktioniert nicht. Er resetiert aber nicht den Arduino.
Grüße Uwe
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 172
Posts: 3245
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kann mir das leider nicht erklaeren, kann das evtl. jemand hier?

Das ist vollkommen normal für Sketche, die mehr RAM verbrauchen als der Controller an RAM eingebaut hat.

Wenn Du einen Controller mit kleinem RAM verwendest (z.B. "UNO") könntest Du auf einen Controller mit größerem RAM ("MEGA") wechseln.

Und ansonsten wird es Zeit, ein bisschen was zu lernen, wie man möglichst viele Funktionen programmiert, die nur ganz wenig RAM-Speicher brauchen. Das Sparen von RAM-Speicher würde zum Beispiel damit anfangen, dass Du alle print-Anweisungen für Textkonstanten auf das F-Makro umstellst, also statt:
lcd.print("Systemstart");
setze
lcd.print(F("Systemstart"));

Wieviel RAM an bestimmten Stellen Deines Programms tatsächlich noch frei ist, könntest Du feststellen, wenn Du diese Funktion einfügst:
Code:
int freeRam () {
  extern int __heap_start, *__brkval;
  int v;
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
und den Rückgabewert an geeigneter Stelle Deines Programms gelegentlich per Serial.println ausgibst.
« Last Edit: September 07, 2013, 04:50:19 pm by jurs » Logged

Pages: [1]   Go Up
Jump to: