Temperaturanzeige mit °C mit NanoTerm

Hallo HJH

danke für den Tipp! Die zweite Lösung gefällt mir noch besser.

Wo finde ich den Schlüssel für die unterstützten ASCI Zeichen des NanoTerminal Display?

Ciao
Andrge

Hallo HJH,

könntest Du mir das Datenblatt zu dem von Dir verwendeten Display zukommen lassen? Habe es zusammen mit dem NanoTerminal gekauft.

Ciao
Andrge

Hallo Andreas,

jetzt verstehe ich überhaupt nichts mehr. :confused:

Ich habe mich mit meinen Ratschlägen nach Deinen eigenen Angaben gerichtet. Du hast im Forum an [b]dieser Stelle[/b] mitgeteilt, welches LCD Du verwendest. Außerdem hast Du [b]hier[/b] gesagt, dass Dein LCD das Grad-Zeichen beherrscht. Irgendwo musst Du doch diese Information gefunden haben! In dem von Dir angegebenen [b]Link[/b] ist sie auch tatsächlich zu finden. So bin ich also davon ausgegangen, dass Deine Angaben richtig waren.

Waren das etwa doch Falschmeldungen?

Ich kann nicht wissen, welches Display Du zusammen mit dem NanoTerminal gekauft hast. Daher nützt es Dir überhaupt nichts, wenn ich Dir irgendein Datenblatt von meinen vielen, verschiedenen Displays zusende. Wenn Dein Link richtig ist, dann bist Du bereits im Besitz des Datenblatts.

Deine Bitte deutet darauf hin, dass es Dir immer noch nicht gelungen ist, das Grad-Zeichen darzustellen. Falls Dein Display das Zeichen doch nicht kennen sollte, kann man immer noch das Zeichen selbst definieren. Diese Funktion beherrschen alle Displays.

Es wird das Beste sein, wenn Du Dein Skript hier noch einmal zeigst. Dann kann ich versuchen Fehler zu finden und Korrekturen anzubringen.

Gruß
HJH

Hallo HJH

leider ist es nun zu einem Missverständnis gekommen.
Ich verwende zwei Displays. Zum einen das Display vom Reichelt (4x20, http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=1;INDEX=0;FILENAME=A500%2FLCD204BBL%23EAS.pdf;SID=28hRvNE38AAAIAAHLcbREd0d50dda2ed3c83543a36c154f6132ce) und zum anderen das LC-Display (2x16 ohne Gehäuse), dass ich über Steiner gekauft habe (http://www.ipsymcon.de/info_lcd.htm). Wenn ich richtig informiert bin, ist das LC Display vom Steiner doch von Dir, oder? Zu dem Display vom Steiner hätte ich gern das Datenblatt, da ich hier nach dem ° Zeichen schauen möchte.

Zu Deiner frage, ja, es stimmt ich habe noch kein ° Symbol auf mein 4 x20 Display zaubern können. Es schaut ist so, dass das Datenblatt das Symbol beschreibt, dies aber nicht funktioniert, wenigstens nicht bei mir. Ich kann verschiedene Symbole darstellen, nicht jedoch bestimmte Symbole die ab Spalte „$Dx“ (upper 4-Bit) im Datenblatt dargestellt sind. Das ° Symbol hat den Code „DF“, geht aber nicht. Ich bekomme dann ein „ß“ auf dem Display. Möglicherweise hat mein Displaycontroller auch einen Defekt. Ich habe mir ein weiteres Display bestellt um dies überprüfen zu können.

Wie ich das Symbol unter IPS selbst mit einzelnen Pixeln definieren kann ist mir noch nicht ganz klar, macht aber im Moment noch nix. Die Erklärung aus dem Datenblatt habe ich verstanden, nur weiß ich noch nicht wie ich es in IPS umsetze.

Als Etappenziel möchte ich auf dem 2x16 Display das ° Symbol darstellen. Deswegen die Frage nach dem Datenblatt.

Mein Script kann ich heute Abend noch einstellen.

Nun hoffe ich, habe ich den Displaysalat wieder auseinander gewurschtelt. Sorry wenn ich mich unklar ausgedrückt hatte.

Grüße und Danke für die Hilfe

Andreas

P.S: Durch die Versuche das ° Symbol auf das Display zu bringen habe ich einiges über die Displayausgaben gelernt. :slight_smile:

Hallo Andreas,

Du hast das Display bei uns erworben und fragst HJH nach dem Datenblatt :confused:

Leider habe ich selber keins. Es besitzt einen HD44780-kompatiblen Controller.
° - Zeichen kann es nicht darstellen - man muss es wie beschrieben selber erzeugen.

MST

Ich habe auch ein Display von Steiner und das „°“ nach der beschriebenen Methode dargestellt.
Hat zwar bei mir etwas gedauert, war aber kein Problem.

Hallo Steiner,

stimmt eigentlich, warum habe ich nicht bei Dir nachgefragt? Dachte nachdem die Leiterkarte von HJH kommt… Trotzdem Danke für die Antwort. :wink:
Schade das es kein Datenblatt gibt.

Nun möchte ich noch eine lästige Frage stellen (auch wenn die recht Blond ist) wie erstelle ich Bit für Bit ein Zeichen unter IPS? Kann ich den die benötigten Befehle die ich für das Display benötige direkt so einbinden?
Hab im Moment keinen wirklichen Ansatz.

Reiner, wie hast Du das hin bekommen?

Bitte um Nachsicht für einen aus der Hardwareecke! :o

Ciao
Andreas

Hallo Andreas,

hier sind zwei Skripte, die den Umgang mit der LCD-Initialisierung, der Zeichendefinition und der Zeichenausgabe verdeutlichen sollen:

1. LCD-Initialisierung und Zeichendefinition:
Dieses Skript braucht nur einmal aufgerufen zu werden, und zwar immer nur dann, wenn die Betriebsspannung des LCD eingeschaltet wird, also nach einem LCD-RESET. Da es sich bei Deinem Display laut Steiner um ein 2*16 LCD mit Standardcontroller handelt, werden die Werte entsprechend gesetzt. Der Standardcontroller kennt kein Grad-Zeichen, also wird eins definiert. Es wird auf Speicherplatz 0 (null) abgelegt und bekommt daher den ASCII-Code 0.

$InstanceID = 29548;
$ControllerType = "Standard";
$Zeilen = 2;
$Spalten = 16;

require_once "LCD_Functions.ips.php";
$lcd = new OneWireLCD($InstanceID, $ControllerType, $Zeilen, $Spalten);

$lcd->SendLCDInit();
$degree = "\x06\x09\x09\x06\x00\x00\x00\x00"; // Bit-Definitionen für das Grad-Zeichen
$lcd->SendLCDCharDef(0, $degree);             // abspeichern an Speicherposition 0,
                                              // damit bekommt das Zeichen den ASCII-Code 0 (null)

2. Zeichenausgabe:
Dieses Skript muss jedesmal aufgerufen werden, wenn der ATemp-Wert neu angezeigt werden soll.

$InstanceID = 29548;
$ControllerType = "Standard";
$Zeilen = 2;
$Spalten = 16;

require_once "LCD_Functions.ips.php";
$lcd = new OneWireLCD($InstanceID, $ControllerType, $Zeilen, $Spalten);

$ATemp = GetValueFloat("Aussentemp");
$ATemp = sprintf("%+5.1f", $ATemp);        // ATemp-String ist 5 Zeichen lang inkl. Vorzeichen und 1 Nachkommastelle
$text = "ATemp: ". $ATemp. chr(0x00). "C"; // das Grad-Zeichen hat bei der Definition den ASCII-Code 0 bekommen
$lcd->SendLCDScreen($text);

Gruß
HJH

Eigentlich so, wie es HJH beschrieben hat.

Hallo HJH,
Hallo Reiner,

vielen Dank für eure Hilfe! Schaut sehr gut aus! Auf diese Lösung wäre ich nie gekommen. Ich werd´s am WE versuchen und euch Feedback geben.

Eine kleine Frage habe ich noch, wie bekomme ich einen Reset des LCD´s über IPS mit? Ich bräuchte doch eine Variable für den Trigger damit ich das Initialisierungsscript wirklich nur einmal ausführe wenn das Display angesteckt oder IPS gestartet wird, oder gibt´s da ein anderes Signal? :o

Grüße
Andreas

Anbei noch eine platzsparendere Variante, in dem das °-Zeichen und das C kombiniert sind, da man ja nicht gerade viel auf einem LCD unterbringen kann:

private static $degree = "\x18\x18\x00\x06\x08\x08\x06\x00"; //bit-Definition des Grad-Zeichens, kombiniert mit dem Celsius-Zeichen

Ist natürlich Geschmackssache :wink:

Gruß,

Specky

… Danke für den Tipp - es funktioniert.
Man muss ja sparen, wo man nur kann … :wink:

MST

Hallo HJH,
Hallo Steiner,

es Funktioniert! Dank eurer Hilfe hab ich nun auf meinen Displays die Anzeige meiner Temperaturen mit „°C“ Zeichen!!! Danke für die Geburtshilfe.:smiley:

Ciao
Andreas