Beeinflusst die Timer - Änderung die I2C lcd Anzeige?

Hallo zusammen!

Ich habe eine Arduino mega und diverse Bauteile (Lüfter, Relais, Bewegungsmelder ... etc) auf ein Brett montiert, um verschiedene Komponenten miteinander zu kombinieren. Zuerst habe ich einige Komponenten separat
ausprobiert und dann teilweise kombiniert. Unter anderem auch ein I2C LCD Display mit 20x4 Anzeige.

Das funktionierte soweit ganz gut. Bis ich einen 12V Lüfter mit Transistor und Freilaufdiode betrieben habe.
Der Lüfter machte zuerst laute Geräusche. Auf einer Webseite habe ich den Grund dafür rausgefunden.
Der Takt des PWM - Signals war zu niedrig. Also habe ich nach einiger Recherche herausgefunden, das ich fogenden Befehl einsetzen muss, um die Frequenz zu erhgöhen:

TCCR2B = (TCCR2B & 0b11111000) | 0x01;

fälschlicher weise habe ich zuerst noch folgenden genommen:

TCCR0B = (TCCR0B & 0b11111000) | 0x01;

Danach (so vermute ich) konnte ich das Display nicht mehr vernünftig ansprechen. Auch Pullup - Widerstände brachten kein Erfolg.

Ich benutze die Bibliothek von:

Francisco Malpartida New LiquidCrystal 1.51

Mittlerweile weiss ich schon gar nicht mehr, durch vielem Herumprobieren, wie ich das Display ansprechen muss.

Meine Frage ist auch, wenn ich einen Timer einmal geändert habe, bleibt diese Änderung auch, wenn der Arduino stromlos gemacht wird oder wenn ein anderer Sketch hochgeladen wird.?

Gruss
Lars

Nein, die bleibt nicht.

Gruß Tommy

Eine PWM Stromversorgung eines DC Lüfters funktioniert nicht richtig weil der Motor nicht dafür geeignet ist. Die Elektronik, die den bürstenlosen Motor antreibt, mag es nicht andauernd ausgeschaltet zu werden.
Nimm einen Lüfter mit PWM Eingang (4 polige PC-Füfter). Den kannst Du direkt mit einem 500 bzw 1000Hz Signal steuern.
Grüße Uwe

Was das Problem mit dem Display betrifft, nimmst du einfach ein Beispiel aus der Library.
Baue das genau so auf und es sollte funktionieren.

Hallo,

Also ich habe alle meine Teil - Projekte durchgegangen und habe folgende funktionierende Einstellungen gefunden:

// Bibliotheken einbinden
//#######################
#include <Wire.h>                                                     // für das Display
#include <LiquidCrystal_I2C.h>                                  // für das Display (Francisco Malpartida 
                                                                               // New LiquidCrystal 1.51)


//Display einrichten
//#######################
#define BACKLIGHT_PIN     13
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD, I2C address

void setup()
{

 digitalWrite ( BACKLIGHT_PIN, HIGH); 
 delay(1000);                                                  // 1 Sekunde Pause

 //Anfangstext auf dem Display anzeigen
 //#################################### 
 lcd.begin(20,4);                                              // Initialize Das Display mit 20 Zeichen und 4 Zeilen
 lcd.home ();                                                   // go home
 lcd.setCursor ( 3, 0 );                                     // Setzte den Cursor auf Zeichen 3 in der ersten Zeile
 lcd.print("Geht doch! ");                                 // Zeige den Text an
 delay ( 4000 );                                              // 4 Sekunden Pause

Warum ich da etwas verändert habe, ist mir ein Rätsel. Ich glaube, der Osterhase war schon dar!
1 1/2 Tage Fehlersuche.

Trotzdem danke.

Lars

AC_DC_newbe:
Warum ich da etwas verändert habe, ist mir ein Rätsel. Ich glaube, der Osterhase war schon dar!
1 1/2 Tage Fehlersuche.

Viele Liköreier?

1,5 Tage lässt sich noch steigern. :wink:

Gruß Tommy

Die brauch ich jetzt erstmal! :slight_smile:

Frohe Ostern!

Gruß

Lars