Die Helligkeit der Hintergrundbeleuchtung beim LCD Display kann mit Hilfe der PWM – Puls Weiten Modulation – Funktion eingestellt werden.
Die Stromaufnahme meines Displays beträgt ca. 19mA gemessen. Der Arduino Mega ist für maximal 40mA Ausgangsstrom an den Pins ausgelegt. Das heisst wir sind weit im grünen Bereich und können die PWM Funktion des Arduino direkt für das Dimmen der LCD Hintergrundbeleuchtung verwenden.
Basierend auf der LCD 4×20 Schaltung wird eine Helligkeitseinstellung hinzugefügt.
Die Hardware
Der K Anschluss (Kathode / Minus) der Displaybeleuchtung wird über einen 10 Ohm Widerstand an den Arduino PWM Pin 6 gelegt ansonsten ist die Verkabelung genau wir bei der LCD 4×20 Schaltung.
Achtung: Die Logik ist jetzt umgekehrt, das heißt immer wenn der Pin 6 aus ist (0V) ist die LED Beleuchtung an. PWM 0 bedeutet also volle Helligkeit und bei einem PWM Wert von 255 ist die Beleuchtung aus. Die halbe Helligkeit wird bei einem Wert von ca. 200 erreicht.
Die Software
Hier der Arduino Programmcode mit Kommentaren:
// 4x20 LCD Display Ausgabe mit PWM Dimmer // // Diese Bauteile verwendet werden: // Arduino Mega 2560 (auch für andere Arduinos geeignet) // LCD Display mit 4 Zeilen mit je 20 Zeichen // Widerstände: 1k und 10 Ohm // Poti: ca. 10 kOhm // // Matthias Busse 22.4.2013 Version 1.1 /* LCD Display Anschlüsse: LCD > Arduino ------------- VSS > GND VDD > +5V V0 > 10k Poti + 1kOhm Widerstand > GND RS > Pin 12 R/W > Pin 13 E > Pin 11 D4 > Pin 7 D5 > Pin 8 D6 > Pin 9 D7 > Pin 10 A > +5V K > 10 Ohm Widerstand > PIN 6 */ #include < LiquidCrystal.h> LiquidCrystal lcd(12, 13, 11, 7, 8, 9, 10); int belpin=6; // Pin für die Beleuchtung void setup() { lcd.begin(20,4); lcd.clear(); lcd.setCursor(0,0); // Cursor Zeile 0 setzen lcd.print("4x20 LCD TESTAUSGABE"); // Text ausgeben lcd.setCursor(0,3); // Cusor Zeile 3 lcd.print("Matthias Busse V 1.0"); pinMode(belpin, OUTPUT); // PWM Pin ist ein Ausgang } void loop() { analogWrite(belpin, 200); // Beleuchtung 0(hell) - 255(dunkel) lcd.setCursor(3,1); // Zeile 1 Sekunden ausgeben lcd.print("Sekunden: "); lcd.setCursor(13,1); lcd.print(millis()/1000); // die Sekunden seit Programmstart delay(994); // nur fast 1000 ms warten weil das Programm auch ca. 6 ms benötigt }
Hilfreiche Links
– Arduino PWM Erklärung
– Arduino analogWrite()
Teil 1 < Ein LCD Display 4×20 am Arduino betreiben.
> Frequenzzähler mit LCD Display
Pingback: Den Frequenzzähler mit LCD Display auf der Platine aufgebaut. | Shelvin – Elektronik ausprobiert und erläutert