Pages: 1 [2] 3   Go Down
Author Topic: Probleme mit Ansteuerung der 2.Zeile seit arduino-1.0-rc2  (Read 2799 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Leider sind die Bilder recht klein, daher kann man nicht sehr viel erkennen. Allerdings sieht das Display so aus, als wären die Pins recht unregelmäßig angelötet. Hast Du schon mal die Display-Anschluss Pins auf Lötbrücken geprüft?
Stimmt die Zuordnung der Datenpins? Also D4 bis D7 an Arduino-Pin 3 bis 6?
Dein Aufruf "LiquidCrystal lcd(12, 11, 6, 5, 4, 3);"

würde bedeuten, das

D4 an Pin 6
D5 an Pin 5
D6 an Pin 4
D7 an Pin 3

angeschlossen ist.

siehe http://arduino.cc/en/Reference/LiquidCrystalConstructor
Quote
Syntax
LiquidCrystal(rs, enable, d4, d5, d6, d7)

Mehr fällt mir erstmal auch nicht ein.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das Display hat am Ende des vergangenen Jahres noch einwandfrei funktioniert.
Das mit der Adressierung werde ich mal testen.

Anschlußmäßig müßte es eigentlich stimmen, da ich ja sonst auf der 1.Zeile keine korrekte Anzeige bekommen dürfte und in den Beispielprogrammen ja auch steht:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
Nur das bei mir das ganze um einen Pin nach oben verschoben wird.

Trotzdem schon mal danke für Eure Bemühungen!
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21242
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich stimme Dir zu, daß die Verkabelung stimmen muß, da ansonsten die erste Reihe nicht funktionieren würde.
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also, habe alles mit einem der Testprogramme durch probiert.
Sobald ich - lcd.begin(cols, rows) - Rows auf eine Zahl größer 1 setze, wird gar nichts mehr angezeigt. Bei 0, 1 oder gar weglassen dieses Aufrufs, wird nur die erste Zeile, dafür aber korrekt angesteuert.
Ich habe leider kein zweites Display um zu Testen ob es nicht doch am Display liegt. Werde wohl wieder das Behältnis aus Zwiebelleder bemühen müssen.
Logged

Heidelberg
Offline Offline
Full Member
***
Karma: 1
Posts: 207
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Versuchs mal mit Zeile 0 und Zeile 1 smiley-wink
Logged

 

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

Auf die Idee mit der falschen Verkabelung bin ich durch den folgenden Post gekommen:
Quote
Display - 16x2 LC-Display mit Hintergrundbeleuchtung von Displaytech mit Hitachi HD44780 Controller

Anschlüsse:
E - LCD-Pin6 an digiPin11
RS - LCD-Pin4 an digiPin12
DB4E - LCD-Pin11 an digiPin3
DB4E - LCD-Pin12 an digiPin4
DB4E - LCD-Pin13 an digiPin5
DB4E - LCD-Pin14 an digiPin6
Da ist es nämlich genau anders herum beschrieben, also D4 an Pin3 und nicht D7 an Pin3.
Aber dann sollte es tatsächlich gar nicht funktionieren und nicht erst ab der 2. Zeile.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21242
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Da mit der Funktion
Code:
LiquidCrystal(rs, enable, d4, d5, d6, d7)
die Pins angeben werden, die beim Arduino verwendet werden ist es unerheblich welche Pins verwendet werden, Hauptsache die jeweiligen Pins des Arduino sind mit den richtigen Pins des Displays verbunden.
Grüße Uwe
Logged

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

Eben genau das meinte ich. Die Beschreibung der Pin-Zuordnung und der im gleichen Post beschriebene Aufruf des Konstruktors passten nicht zusammen.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Falsche Verdrahtung der Pins Zwischen Display und Arduino kann ich definitiv ausschließen! (Alles bereits doppelt und dreifach getestet. Einzigste Möglichkeit scheint mir wirklich nur noch ein defekt des Displays zu sein. werde demnächst ein Neues kaufen und testen, trotzdem Danke an Alle.
Werde das Ergebnis hier dann mitteilen.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen!

Ich sitz grad meinem Projekt und hab das gleiche Problem wie ArduinoJo13, meine 2. Zeile tut nicht!
Allerdings nicht mit irgendwie RC2.

Ich hab grad nochmal das 1.0 drauf gemacht, aber das gleiche wie mit 0022 davor.
Wenn ich meinen abgewandelten "HelloWorld" draufspiel zeigts mir 2 Zeilen an.
Den Sketch der jetz nicht funktioniert soll Öltemperatur und Öldruck ausgeben. Die erste Zeile wenn allein im Sketch steht funktioniert.
Wenn ich jetz erweitern will auf die Anzeige "OIL-DRUCK:" in der 2. Zeile zeigt er mir nichts an, oder er vertauscht die beiden und schreibt "OIL-DRUCK: 25.4°C" in die erste Zeile, die 2. nix.
Display hab ich 2 gleiche nur andere Schriftfarbe, verhalten sich gleich.

Generell Hardware hab ich:
-Olimexino 328
-EA-Display W162-X3LW OLED-Display vom reichelt.de http://www.reichelt.de/LCD-Module-organisch/EA-W162-X3LW/index.html?;ACTION=3;LA=2;ARTICLE=113317;GROUPID=3012;artnr=EA+W162-X3LW;SID=13TtIvvH8AAAIAAGne5Vc00730847faa794a25ac96ba7dc16d4b7

Den Sketch hab ich im Netz gefunden und grob die für mich unwichtigen Sachen rausgeschnitten. Im Moment schaut der so aus:

/*
 * Inputs ADC Value from Thermistor and outputs Temperature in Celsius
 *  requires: include <math.h>
 * Utilizes the Steinhart-Hart Thermistor Equation:
 *    Temperature in Kelvin = 1 / {A + B[ln(R)] + C[ln(R)]3}
 *    where A = 0.001129148, B = 0.000234125 and C = 8.76741E-08
 *
 * These coefficients seem to work fairly universally, which is a bit of a
 * surprise.
 *
 * Schematic:
 *   [Ground] -- [10k-pad-resistor] -- | -- [thermistor] --[Vcc (5 or 3.3v)]
 *                                     |
 *                                Analog Pin 0
 *
 * In case it isn't obvious (as it wasn't to me until I thought about it), the analog ports
 * measure the voltage between 0v -> Vcc which for an Arduino is a nominal 5v, but for (say)
 * a JeeNode, is a nominal 3.3v.
 *
 * The resistance calculation uses the ratio of the two resistors, so the voltage
 * specified above is really only required for the debugging that is commented out below
 *
 * Resistance = (1024 * PadResistance/ADC) - PadResistor
 *
 * I have used this successfully with some CH Pipe Sensors (http://www.atcsemitec.co.uk/pdfdocs/ch.pdf)
 * which be obtained from http://www.rapidonline.co.uk.
 *
 */
#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,10,7,6,5,4);
#include <math.h>

#define ThermistorPIN 0                 // Analog Pin 0

float vcc = 4.97;                       // only used for display purposes, if used
                                        // set to the measured Vcc.
float pad = 9850;                       // balance/pad resistor value, set this to
                                        // the measured resistance of your pad resistor
float thermr = 10000;                   // thermistor nominal resistance

float Thermistor(int RawADC) {
  long Resistance;  
  float Temp;  // Dual-Purpose variable to save space.

  Resistance=((1024 * pad / RawADC) - pad);
  Temp = log(Resistance); // Saving the Log(resistance) so not to calculate  it 4 times later
  Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
  Temp = Temp - 273.15;  // Convert Kelvin to Celsius                      

  // BEGIN- Remove these lines for the function not to display anything
  //Serial.print("ADC: ");
  //Serial.print(RawADC);
  //Serial.print("/1024");                           // Print out RAW ADC Number
  //Serial.print(", vcc: ");
  //Serial.print(vcc,2);
  //Serial.print(", pad: ");
  //Serial.print(pad/1000,3);
  //Serial.print(" Kohms, Volts: ");
  //Serial.print(((RawADC*vcc)/1024.0),3);  
  //Serial.print(", Resistance: ");
  //Serial.print(Resistance);
  //Serial.print(" ohms, ");
  // END- Remove these lines for the function not to display anything

  // Uncomment this line for the function to return Fahrenheit instead.
  //temp = (Temp * 9.0)/ 5.0 + 32.0;                  // Convert to Fahrenheit
  return Temp;    // Return the Temperature

  
  

}

void setup() {
  Serial.begin(9600);
  
  lcd.setCursor(0,0);
  lcd.print("OIL-TEMP:");
  lcd.setCursor(0,1);
  lcd.println("OIL-DRUCK:");
  
}

void loop() {
  float temp;
  temp=Thermistor(analogRead(ThermistorPIN));       // read ADC and  convert it to Celsius
  Serial.print("Celsius: ");
  Serial.print(temp,1);                             // display Celsius
  //temp = (temp * 9.0)/ 5.0 + 32.0;                  // converts to  Fahrenheit
  //Serial.print(", Fahrenheit: ");
  //Serial.print(temp,1);                             // display  Fahrenheit
  Serial.println("");


  
  if (temp <= 24)
{
  lcd.setCursor(9,0);
  lcd.print(" L O W ");
  delay(500);
  lcd.setCursor(9,0);
  lcd.print(" ! ! ! ");

}
else
{
  lcd.setCursor(10,0);
  lcd.print(temp,1);
  lcd.setCursor(14,0);
  lcd.print((char)223);
  lcd.print("C");
}
  
  
    delay(1000);                                      // Delay a bit...
}

Der Originale is hier:
http://www.qsl.net/on7eq/projects/arduino_davis.htm

Hab dort nur direkt vor dem voidloop (5-6 Zeilen davor) bei "lcd.write(0)" ne 1 reingemacht, sonst gab´s beim Compilen nen Fehler. Dann werden auch 2 Zeilen gezeigt.

Hoffe mir kann jemand weiterhelfen, geht um ein Projekt wofür ich nimmer lang Zeit hab bis Abgabetermin... smiley-confuse

So long und freundliche Grüße
Mathias
« Last Edit: February 19, 2012, 07:25:11 pm by icebear81 » Logged

NRW
Offline Offline
Sr. Member
****
Karma: 2
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hab dort nur direkt vor dem voidloop (5-6 Zeilen davor) bei "lcd.write(0)" ne 1 reingemacht, sonst gab´s beim Compilen nen Fehler. Dann werden auch 2 Zeilen gezeigt.

Wetten nicht!
Wo ist dein LCD Init?
lcd.begin(16, 2);
lcd.clear();

Und bitte die Code-Marken setzen (#)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

GUTEN Morgen!

Oh man! Da gibts so nen schönen Spruch von wegen den Wald vor lauter Bäumen nicht sehn! smiley-red

2.Zeile is da!
lcd.begin(16,2); der wars. Ich denke das Board hat so nicht gewusst dass überhaupt 2 Zeilen da sind, seh ich dass richtig?

Trotzdem 3(?) Fragen!
-Code-Marken? Wann setzen? Wo Wie Hä?
-Wozu den lc.clear(0);? Hab ich im "HelloWorld" auch nicht und wen ich den hier reinschreib oder weglass is (auf den ersten Blick auch egal) (nur zum Versändnis, will auf kein Fall Klugsch....n)
-Zufällig was bekannt wegen der ansteuerung der Zeilen 1 bzw. 2, wenn ich schreib set.Cursor(0,0) heißt das doch (erster Char, erste Zeile) und (0,1) soll heißen (erster Char, zweite Zeile)? Is bei mir vertauscht. Hab jetz halt einfach andersrum benannt.

Herzlichsten Dank!

Mathias
Logged

NRW
Offline Offline
Sr. Member
****
Karma: 2
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mit Codemarken meine ich hier im Forum.
Deinen Code zwischen:
[ code ]
Hier dein Code
[/ code ]
setzen. Macht die Sache leserlicher.
LCD.clear löscht halt das Display einmal komplett! Muss man nicht, kann man aber.
Zu deiner vertauschung kann ich dir jetzt nix sagen.
Dreh mal das Display um  smiley-yell
Logged

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

Trotzdem 3(?) Fragen!
-Code-Marken? Wann setzen? Wo Wie Hä?
-Wozu den lc.clear(0);? Hab ich im "HelloWorld" auch nicht und wen ich den hier reinschreib oder weglass is (auf den ersten Blick auch egal) (nur zum Versändnis, will auf kein Fall Klugsch....n)
-Zufällig was bekannt wegen der ansteuerung der Zeilen 1 bzw. 2, wenn ich schreib set.Cursor(0,0) heißt das doch (erster Char, erste Zeile) und (0,1) soll heißen (erster Char, zweite Zeile)? Is bei mir vertauscht. Hab jetz halt einfach andersrum benannt.

Wenn du zusammenhängenden Quelltext zeigst, ist es übersichtlicher, diesen auch zu kennzeichnen. Der entsprechende Button ist im "Post reply"-Fenster mit dem # gekennzeichnet. So wird beispielsweise aus:

lcd.begin(16, 2);
lcd.clear();

dies hier:
Code:
lcd.begin(16, 2);
lcd.clear();
Bei zwei Zeilen ist das vielleicht noch nicht sinnvoll, sollte ja nur als Beispiel dienen.

lcd.clear() löscht nur das Display und setzt den Cursor in die obere linke Ecke. Gelegentlich ist es sinnvoller, das LCD erst zu löschen und Daten raufzuschreiben, bspw. bei der Anzeige von Zahlen zwischen 1 und 100, um dafür zu sorgen, dass keine Stellen vom letzten Wert stehenbleiben.


Logged

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

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aaah Jetzt ja! Codemarken!
War gestern abend spät, sry smiley-red

Kennt ihr zufällig noch das Phänomen wen ich den Code mit Temperatur draufhab und des Board bisschen arbeiten muss dass dann am Display ab und an nur Käse oder zusätzliche vereinzelte Pixels kommen?

Mfg Mathias


Logged

Pages: 1 [2] 3   Go Up
Jump to: