Go Down

Topic: LCD Display am Schieberegister (Read 2852 times) previous topic - next topic

JuergenR

Hallo,

bin aktuell auf der Suche nach einer LCD-Display Ansteuerung mit einem Schieberegister 74595.
Habe schon einige Beispiele aus dem Netz durch, alle haben sich mit der Arduino Software nicht übersetzten lassen...

Hat jemand nen Link für mich, wo ich ein lauffähiges Beispiel bzw. Lib her bekomme?

Viele Grüße,
Jürgen

sth77

http://code.google.com/p/arduinoshiftreglcd/

Funktioniert bei mir...
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

mkl0815

Hier ein Sketch zum Display testen für meine Wetterstation:
Code: [Select]

// 2-wire connection to a HD44780-compatible LCD via shiftregister with:
//   Data (and Enable) on Arduino pin 12
//   Clock on Arduino pin 13
//
// Shiftregister bits #0 - #1 - not used (bit #0 must be set to zero)
// Shiftregister bit  #2 - connects to LCD RS (Register Select)
// Shiftregister bits #3 - #6 on LCD data inputs D4-D7.
// Shiftregister bit  #7 - used for enabling the Enable puls.
// LCD R/!W (or rw) hardwired to GND (write to LCD only, no reading from)
//
// USAGE: ShiftRegLCD LCDobjectvariablename(Datapin, Clockpin, Enablepin or TWO_WIRE [, Lines [, Font]]])
//   where Lines and Font are optional.
//     Enablepin: can be replaced by constant TWO_WIRE, if using only 2 wires.
//     Lines: 1 or 2 lines (or more if possible)
//     Font : 0 or 1, small or big font (8 or 10 pixel tall font, if available).

#include <ShiftRegLCD.h>

ShiftRegLCD srlcd(8, 9, 7,2,1);

void setup()
{
  // Print a message to the LCD.
  pinMode(10,OUTPUT);
  analogWrite(10,128);
}

void loop()
{
  showValues();
  delay(5000);
}


void showValues() {
  srlcd.setCursor(0, 0);
  srlcd.print("IN: ");
  srlcd.print(random(19,22));
  srlcd.write(223);
  srlcd.print("C   ");
  srlcd.setCursor(10, 0);
  srlcd.print("OUT: ");
  srlcd.print(random(0,15));
  srlcd.write(223);
  srlcd.print("C   ");

  srlcd.setCursor(0, 1);
  srlcd.print("IN: ");
  srlcd.print(random(60,75));
  srlcd.print(" %  ");
  srlcd.setCursor(10, 1);
  srlcd.print("OUT: ");
  srlcd.print(random(80,99));
  srlcd.print(" %  ");

  srlcd.setCursor(0, 2);
  srlcd.print("LD: ");
  srlcd.print(random(980,1040));
  srlcd.print(",");
  srlcd.print(random(0,99));
  srlcd.print(" hPa  ");

  srlcd.setCursor(0, 3);
  srlcd.print("W ");
  srlcd.print(random(10,25));
  srlcd.print(",");
  srlcd.print(random(0,9));
  srlcd.print("km/h  ");
 
  srlcd.setCursor(12, 3);
  srlcd.print("R ");
  srlcd.print(random(10,25));
  srlcd.print(" mm ");

}


Angeschlossen nach folgendem Schema:

Display ist ein 4x20.

uwefed

Hast Du nach "Arduino LCD 595" gesucht?

http://code.google.com/p/arduinoshiftreglcd/
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1291821338
http://www.tekcrack.com/arduino-purdy-lcd-74hc595n-shift-register.html
http://www.instructables.com/id/LCD-Shifter-for-Arduino/
http://cjparish.blogspot.com/2010/01/controlling-lcd-display-with-shift.html

http://arduino.cc/playground/Code/LCD3wires mit dem 4094 Shift Register

Grüße Uwe



JuergenR

Hallo,

danke erstmal für die Hilfe!

@Uwe: ja, hatte nach LCD 595 gesucht, weil ich von denen noch einige rumligen habe.

Ich werde die Links mal am WE testen und melde mich dann wieder.

Vielen Dank,
Jürgen

JuergenR

Hallo,

habe eben mal den scetch von mkl0815 kopiert und versucht zu übersetzten.
Bekomme folgende Fehlermeldung:

In file included from sketch_jan21a.cpp:17:
C:\Users\Jürgen\Downloads\arduino-1.0-windows\arduino-1.0\libraries\ShiftRegLCD/ShiftRegLCD.h:76: error: conflicting return type specified for 'virtual void ShiftRegLCD::write(uint8_t)'
C:\Users\Jürgen\Downloads\arduino-1.0-windows\arduino-1.0\hardware\arduino\cores\arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'


Steh gerade ein wenig auf der Leitung, kann mir wer auf die Sprünge helfen?

Viele Grüße,
Jürgen

mkl0815

Welche Version der IDE verwendest Du?

uwefed


Welche Version der IDE verwendest Du?

War die Frage notwendig?  ;) ;) ;) ;)
Quote
C:\Users\Jürgen\Downloads\arduino-1.0-windows\arduino-1.0\libraries


IDE 1.0 mit Windows

Grüße Uwe

mkl0815

hmm, natürlich nicht  :smiley-roll:
klarer fall von  8)

JuergenR

@mkl0815: welcher Version verwendest Du?

Grüße,
Jürgen

mkl0815

Ich bin noch mit der 0.22 unterwegs. Folgender "diff" sollte helfen (ungetestet)
Code: [Select]

diff -ur ShiftRegLCD/ShiftRegLCD.cpp ShiftRegLCD_1_0/ShiftRegLCD.cpp
--- ShiftRegLCD/ShiftRegLCD.cpp 2011-07-02 23:56:17.000000000 +0200
+++ ShiftRegLCD_1_0/ShiftRegLCD.cpp 2012-01-21 19:49:34.000000000 +0100
@@ -223,8 +223,9 @@
   send(value, LOW);
}

-void ShiftRegLCD::write(uint8_t value) {
+size_t ShiftRegLCD::write(uint8_t value) {
   send(value, HIGH);
+  return 0;
}

// For sending data via the shiftregister
diff -ur ShiftRegLCD/ShiftRegLCD.h ShiftRegLCD_1_0/ShiftRegLCD.h
--- ShiftRegLCD/ShiftRegLCD.h 2009-11-05 03:20:00.000000000 +0100
+++ ShiftRegLCD_1_0/ShiftRegLCD.h 2012-01-21 19:47:49.000000000 +0100
@@ -73,7 +73,7 @@

   void createChar(uint8_t, uint8_t[]);
   void setCursor(uint8_t, uint8_t);
-  virtual void write(uint8_t);
+  virtual size_t write(uint8_t);
   void command(uint8_t);
private:
   void init(uint8_t srdata, uint8_t srclock, uint8_t enable, uint8_t lines, uint8_t font);

Tausche einfach in den beiden h und cpp Dateien die Zeilen mit dem "-" durch die Zeilen mit dem "+". (inkl. der ergänzenden Zeile "return 0;").
Damit sollte es gehen, außer es wurde noch eine Methode von "Print" in der Version 1.0 verändert.

Es wäre von den Arduinoentwicklern besser gewesen, die Methode "void write()" nicht zu ersetzten, sondern "size_t write()" in der Print Klasse zu ergänzen, dann gäbe es die Probleme nicht.

MaFu

Es wäre von den Arduinoentwicklern besser gewesen, die Methode "void write()" nicht zu ersetzten, sondern "size_t write()" in der Print Klasse zu ergänzen, dann gäbe es die Probleme nicht.

Nur ist das nicht möglich. Mehrere Funktionen mit gleichem Namen sind nur gültig wenn sie sich in den Aufrufparametern unterscheiden. Unterschiedliche Rückgabeparameter reichen nicht aus.
_______
Manfred

JuergenR

Hallo,

vielen Dank für das diff.
Werde es mal versuchen, wobei die print-KLasse ja auch Fehler meldete....

Viele Grüße,
Jürgen

JuergenR

Hallo,

da ich auch mit anderen Lib's Probleme hatte, habe ich auf die 022er Entwicklungsumgebeung gewechselt.
Hier scheint alles gut zu sein ;-)

Viele Grüße,
Jürgen


Go Up