LabVIEWForum.de
LCD Display Ansteuerung - Befehlssatz - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: LCD Display Ansteuerung - Befehlssatz (/Thread-LCD-Display-Ansteuerung-Befehlssatz)



LCD Display Ansteuerung - Befehlssatz - cabua - 19.05.2014 18:23

Hallo zusammen,

nach Jahren der Abstinenz setze ich mich erneut mit Labview auseinander.
Um konkreter zu werden. Ich habe jetzt ein Arduino Uno Board mit LCD Display. Es ist kompatibel mit dem HD44780 Standard.
Das Display ist korrekt angebunen und funktioniert. Ich habe es mit einem Arduino Sketch Program getestet.

Ich möchte aber gerne das über Labview ansteuern.

Auf dieser Seite:
wikipedia
findet sich eine Tabelle mit dem Befehlssatz. Auf der z.B., dass wenn man (0 0, 0 0 0 0 0 0 1) an den PINS macht, dass das Display gelöscht werden sollte.

Ich nutze für Labview das Linx (Labviewhacker). Auch hier funktioniert die Ansteuerung der einzelnen Pins. Getestet mit LEDs (an aus).

Meine Frage. Wenn ich also diesen Befehlssatz habe, dann müsste ich doch eigentlich nur sagen:
PIN RS = Strom aus
PN RW = Strom aus
PIN 1 = Strom aus

u.s.w, so dass das Display sich cleart. Zumindest verstehe ich das so. Das funktioniert natürlich nicht und ich weiß nicht warum.

Ich habe mir mal eine C++ Lib angeschaut, in der jedoch Bytes übertragen werden. Linx bietet mir jedoch nur an "DigitalWrite(0 oder 1)" und schaltet somit die PINS an und aus.

Meine Frage: Bytes sind für mich einfach nur eine höhere Art der Programmierung als mit Strom/an/aus. Oder bin ich da auf dem Holzweg?

Die Frage ist grundsätzlich, da ja auch andere Sensoren und Controller so angesteuert werden könnten oder? (Strom an/aus).

Gruß
cabua


RE: LCD Display Ansteuerung - Befehlssatz - cabua - 21.05.2014 17:02

Hallo zusammen,

inzwischen bin ich um ein vielfaches weiter.
Ich denke, dass den ein oder anderen interessiert wie ich nun mittels Labview mein Arduino Board kontrolliere.

Zunächst einmal die Antwort auf meine eigene Frage:

Das Display lässt sich theoretisch über die einzelnen PINS kontrollieren. Hierfür ist es jedoch notwendig, dass man zum einen die PINS Parallel an und ausschaltet und auch gewisse Zeiten zwischen den Schaltungen berücksichtigt.
Allein der Aufwand für das Löschen des Displays ist enorm.
Anschließend habe ich mich doch dazu entschieden mal etwas weiter zu schauen wie man sonst das Board kontrollieren kann.

Daher nun meine Anleitung:

Arduino Boards besitzen immer eine Firmware. Diese Firmware wird über die IDE von Arduino programmiert und hochgeladen. LINX und LIVA machen das genauso. Sie liefern eine eigene Firmware mit, damit man damit über Labview auf die zugreifen kann.
Ich habe nun meine eigene geschrieben:

In dem Arduino Code kann man eine Serielle Schnittstelle öffnen und das Board darauf horchen lassen.

Serial.begin(9600)

Nun kann man noch nicht all zuviel damit anfangen. Also schreibt man sich in der Firmware eine Methode, die die Daten von der seriellen Schnittstellen holt und auswertet.

Serial.Read()

Ich habe mich an einigen Codeteilen aus dem Internet orientiert und habe es so gemacht, dass ich mein eigenes "Endzeichen"= # benutze.

MeineNachricht#

Als Beispiel habe ich mir dann eine Methode geschrieben, die das Display beschreibt
(Pseudocode)
if (writeLCD#Nachricht)
{
lcd.print(Nachricht)
}

Nun konnte ich mittels Labview die Schnittstelle über VISA öffnen und den Befehl senden.

Das Ganze funktioniert auch andersherum (Temperatur auslesen).


Um es auf den Punkt zu bringen: Die Firmware sollte man sich selber schreiben, was wirklich nicht schwer war. Denn damit hat man dann volle Kontrolle über sein Board und seine Entwicklung. Anschließend kann man jede beliebe Programmiersprache nehmen, um das Board zu kontrollieren.

Falls noch Fragen sind... Fragt nach.
Ich bastel dann mal weiter
Gruß