Pages: [1]   Go Down
Author Topic: LCD Display am Schieberegister  (Read 2315 times)
0 Members and 1 Guest are viewing this topic.
Heilbronn
Offline Offline
Full Member
***
Karma: 4
Posts: 148
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Funktioniert bei mir...
Logged

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

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hier ein Sketch zum Display testen für meine Wetterstation:
Code:
// 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.
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21194
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Logged

Heilbronn
Offline Offline
Full Member
***
Karma: 4
Posts: 148
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Heilbronn
Offline Offline
Full Member
***
Karma: 4
Posts: 148
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Welche Version der IDE verwendest Du?
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21194
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Welche Version der IDE verwendest Du?
War die Frage notwendig?  smiley-wink smiley-wink smiley-wink smiley-wink
Quote
C:\Users\Jürgen\Downloads\arduino-1.0-windows\arduino-1.0\libraries

IDE 1.0 mit Windows

Grüße Uwe
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hmm, natürlich nicht  smiley-roll
klarer fall von  smiley-cool
Logged

Heilbronn
Offline Offline
Full Member
***
Karma: 4
Posts: 148
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@mkl0815: welcher Version verwendest Du?

Grüße,
Jürgen
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich bin noch mit der 0.22 unterwegs. Folgender "diff" sollte helfen (ungetestet)
Code:
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.
Logged

Munich/Germany
Offline Offline
God Member
*****
Karma: 11
Posts: 643
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

_______
Manfred

Heilbronn
Offline Offline
Full Member
***
Karma: 4
Posts: 148
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

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

Viele Grüße,
Jürgen
Logged

Heilbronn
Offline Offline
Full Member
***
Karma: 4
Posts: 148
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

Pages: [1]   Go Up
Jump to: