Heilbronn
Offline
Jr. Member
Karma: 0
Posts: 92
|
 |
« on: January 20, 2012, 03:15:40 pm » |
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
Edison Member
Karma: 33
Posts: 1836
Arduino rocks
|
 |
« Reply #1 on: January 20, 2012, 03:40:46 pm » |
|
|
|
|
|
Logged
|
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8
|
|
|
|
Offline
Edison Member
Karma: 18
Posts: 1299
|
 |
« Reply #2 on: January 20, 2012, 03:46:53 pm » |
Hier ein Sketch zum Display testen für meine Wetterstation: // 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)
Offline
Brattain Member
Karma: 172
Posts: 16128
+39 349 2158303
|
 |
« Reply #3 on: January 20, 2012, 04:21:15 pm » |
|
|
|
|
|
Logged
|
|
|
|
|
Heilbronn
Offline
Jr. Member
Karma: 0
Posts: 92
|
 |
« Reply #4 on: January 20, 2012, 04:38:17 pm » |
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
Jr. Member
Karma: 0
Posts: 92
|
 |
« Reply #5 on: January 21, 2012, 06:25:00 am » |
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
Edison Member
Karma: 18
Posts: 1299
|
 |
« Reply #6 on: January 21, 2012, 09:21:32 am » |
Welche Version der IDE verwendest Du?
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 172
Posts: 16128
+39 349 2158303
|
 |
« Reply #7 on: January 21, 2012, 10:02:56 am » |
Welche Version der IDE verwendest Du?
War die Frage notwendig?  C:\Users\Jürgen\Downloads\arduino-1.0-windows\arduino-1.0\libraries IDE 1.0 mit Windows Grüße Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 18
Posts: 1299
|
 |
« Reply #8 on: January 21, 2012, 11:45:34 am » |
hmm, natürlich nicht  klarer fall von 
|
|
|
|
|
Logged
|
|
|
|
|
Heilbronn
Offline
Jr. Member
Karma: 0
Posts: 92
|
 |
« Reply #9 on: January 21, 2012, 01:18:45 pm » |
@mkl0815: welcher Version verwendest Du?
Grüße, Jürgen
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 18
Posts: 1299
|
 |
« Reply #10 on: January 21, 2012, 01:55:44 pm » |
Ich bin noch mit der 0.22 unterwegs. Folgender "diff" sollte helfen (ungetestet) 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
God Member
Karma: 8
Posts: 592
|
 |
« Reply #11 on: January 21, 2012, 05:53:52 pm » |
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
Jr. Member
Karma: 0
Posts: 92
|
 |
« Reply #12 on: January 22, 2012, 08:46:58 am » |
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
Jr. Member
Karma: 0
Posts: 92
|
 |
« Reply #13 on: January 23, 2012, 11:01:33 am » |
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
|
|
|
|
|
|