Forum: Mikrocontroller und Digitale Elektronik Arduino LCD | Schwierigkeiten |


von Fly (Gast)


Lesenswert?

Guten Abend ,



Ich versuche seit ca. 2 Wochen mein Displaytech 162A LCD am Arduino Uno

zum laufen zu bekommen. Ich bekomme es einfach nicht hin... Ich habe 
alle

Tutorials und Anleitungen durchgemacht und nichts hat geklappt.

Es wurden entweder immer nur Schwarze Blöcke oder ergenein Mist 
angezeigt.

Hat jemand villeicht noch eine Idee ?





Würde mich echt richtig freuen.

von Schleby N. (schleby)


Lesenswert?

Code , Bilder vom aufbau , datenblatt vom display wären nicht schlecht

von Fly (Gast)


Lesenswert?

Also hier der Code und der Aufbau :

http://arduino.cc/en/Tutorial/LiquidCrystal

Habe es zu 100% Korrekt verdrahtet - nur habe ich kein Poti genommen , 
habe

den Contrast direkt auf GND gelegt .


Datenblatt finde ich selber nicht ...

von Peter L. (luidoltp)


Lesenswert?

Hallo Fly,

damit wir dir helfen können, musst du uns noch mehr Informationen 
liefern. Bitte poste doch mal ...

* Schaltplan
* Fotos vom Aufbau
* Quellcode

Liebe Grüße,
Lui

von Peter L. (luidoltp)


Lesenswert?

Hallo Fly,

> habe den Contrast direkt auf GND gelegt .

Nimm einmal ein Poti so wie es in der Anleitung steht. Das ist notwendig 
um etwas sehen zu können.

Liebe Grüße,
Lui

von Peter L. (luidoltp)


Lesenswert?

Fly schrieb:
> Datenblatt finde ich selber nicht ...

https://www.displaytech-us.com/sites/default/files/display-data-sheet/162A%20series-v21.pdf

War der 2. Treffer bei Google mit dem Begriff "162A LCD".

Liebe Grüße,
Lui

von Mike (Gast)


Lesenswert?

Fly schrieb:
> Habe es zu 100% Korrekt verdrahtet - nur habe ich kein Poti genommen ,
> habe den Contrast direkt auf GND gelegt .

Kannst du machen, aber bei den meisten Displays ist dann nichts von den 
anzuzeigenden Inhalten zu sehen.

von Nil (nilsnilss)


Lesenswert?

Und leider unterscheidet sich das selbst noch bei "baugleichen" 
Displays. Hab hier zwei eigentlich gleiche Displays, die brauchen 
trotzdem unterschiedliche Kontrasspannungen. Und wenn im oben genannten 
Tutorial schon ein Poti benutzt wird, dann mach dir denn geringen 
Mehraufwand und steck dir auch einen auf dein Steckbrett.

von Fly (Gast)


Lesenswert?

Ja ok , ich werde später mal ein 10k Poti besorgen und es dann nochmals 
versuchen. Melde mich dann wieder.

Danke bis dahin!

von Fly (Gast)


Lesenswert?

Jap tatsache - es lag wirklich an den Poti...

Vielen Dank !

Noch eine frage, wenn ich die obere Zeile ansteuern will muss ich ja

lcd.begin(16 ,2); machen, und wenn ich die untere ansteuern will ?

von Karl H. (kbuchegg)


Lesenswert?

Fly schrieb:
> Jap tatsache - es lag wirklich an den Poti...
>
> Vielen Dank !
>
> Noch eine frage, wenn ich die obere Zeile ansteuern will muss ich ja
>
> lcd.begin(16 ,2); machen, und wenn ich die untere ansteuern will ?

Was hat lcd.begin damit zu tun?
mittels "begin" teilst du den LCD Funktionen mit, welche 'Dimensionen' 
dein LCD hat. Das es also 2 Zeilen und 16 Spalten pro Zeile hat.

Schön. Das ist sicherlich eine hilfreiche Information für die LCD 
Routinen die unter anderem sicherlich auch in den entsprechenden 
Positionier-Funktionen benutzt wird. Aber die Funktion, die den Cursor 
an eine bestimmte Stelle setzt, heißt ganz sicher nicht begin. Wie wärs 
mal in der Doku nachzusehen, welche Methoden eigentlich die LCD Klasse 
unterstützt und sich die Funktion (Methode) rauszusuchen, die am ehesten 
danach klingt, das man mit ihr die Funktionalität 'Positioniere den 
Cursor in die 1. Zeile und dort in die 8. Spalte' abrufen könnte?

http://arduino.cc/de/Reference/LiquidCrystal

Gewöhn dich daran: Zu wissen, wo man Informationen findet, ist das halbe 
Leben in der Programmierung. In deinem Fall ist das die recht 
umfangreiche Arduino Doku. Und was man da drinnen nicht direkt findet, 
das kann man auch in den Header Files, bzw. direkt im Source Code der 
jeweiligen Klasse finden.

Willkommen in der Programmierung, in der die Zeit in der die Tante mit 
dir Lulu gegangen ist, endgültig vorbei ist.

: Bearbeitet durch User
von Fly (Gast)


Lesenswert?

Vielen Dank!

Ich habe jetzt doch das richtige gefunden und mal ein bischen versucht;
1
int SchalterZustand;
2
int InputPin = 8;
3
int LEDPin = 13;
4
5
#include <LiquidCrystal.h>
6
7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
8
9
void setup() 
10
{
11
  lcd.begin(16,2);
12
  Serial.begin(9600);
13
  pinMode(InputPin,INPUT);
14
  pinMode(LEDPin,OUTPUT);
15
}
16
17
void loop(){
18
  
19
  SchalterZustand = digitalRead(8);
20
  Serial.println(SchalterZustand,DEC);
21
  
22
  if(SchalterZustand == 0)
23
  {
24
   lcd.clear();
25
   lcd.setCursor(0, 0);
26
   lcd.print("Warten auf");
27
   lcd.setCursor(0, 1);
28
   lcd.print("Eingabe");
29
  }
30
  
31
  if(SchalterZustand == 1)
32
  {
33
   lcd.clear();
34
   lcd.setCursor(0, 1);
35
   lcd.print("Bitte Warten");
36
   delay(250);
37
  }
38
}
Mehr vorerst nicht...

Aber wenn der Schalter den Zustand 0 hat "schwimmen" die Buchstaben auf 
den LCD so rum, man sieht sie schlecht, bewegen sich immer.

An was liegt das ?

: Bearbeitet durch User
von Peter L. (luidoltp)


Lesenswert?

Hi Fly,

> Aber wenn der Schalter den Zustand 0 hat "schwimmen" die Buchstaben auf
> den LCD so rum, man sieht sie schlecht, bewegen sich immer.

Das liegt daran, dass du keine Pause einlegst. Solange der Schalter 0 
ist wird das Display gelöscht, dann beschrieben, dann wieder gelöscht 
und wieder beschrieben und wieder gelöscht und ...
Und zwar so schnell es dein µC kann. Dadurch "flimmert" dein Display.

Besser ist es wenn du das Display nur einmal ansteuerst wenn sich der 
Schalterzustand ändert.

Liebe Grüße,
Lui

von Fly (Gast)


Lesenswert?

Danke!

Es hat funktioniert - aber kann man ergenwie machen das der Zustand in 
Sek

geändert wird ? Also so:

Knopf wird 1sek gedrückt = SchalterZustand == 1
Knopf wird 2sek gedrückt = SchalterZustand == 2
Knopf wird 3sek gedrückt = SchalterZustand == 3
Knopf wird 4sek gedrückt = SchalterZustand == 4
Knopf wird 5sek gedrückt = SchalterZustand == 5

...

So dass man mehrere If Schleifen machen kann.

von Route_66 H. (route_66)


Lesenswert?

Hallo!
Warum soll das nicht gehen? Es gibt massenhaft Software, wo das 
unterschiedlich lange Drücken eines Knopfes ausgewertet wird.

Gewöhne Dir schleunigst das hier ab:

Fly schrieb:
> If Schleifen

von Peter L. (luidoltp)


Lesenswert?

Fly schrieb:
> aber kann man ergenwie machen das der Zustand in
> Sek geändert wird ?

Ich formuliere deine Frage anders:
Kann man die Länge eines Tastendrucks auswerten?

Ja. Man kann einfach die Zeitdauer messen die eine Taste gedrückt wurde 
und dann entsprechend darauf reagieren.

http://fff2.at/drupal/content/zeitmessung-mit-dem-arduino

Liebe Grüße,
Lui

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.