LCD mit DS2408 und IPS?

Hallo Forum,

habe IPS schon recht lange auf dem Rechner installiert, komme aber leider erst jetzt zur Inbetriebnahme. Daher fehlt mir auch noch sehr viel an Erfahrung mit der Programmierung und der Inbetriebnahme von Skripten.

Seit einigen Tagen versuche ich einee kleine Schaltung, auf der ein DS1820 zur Temperaturmessung, ein DS2408 als Ansteuerung für das EA DOGM163 Display sowie ein DS2490 als Master verbaut ist, in Betrieb zu nehmen - leider ohne Erfolg.

Als Funktion will ich die vom DS1820 kommende Temperatur über des DS2408 auf dem Display darstellen.
Die Temperatur des DS1820 kann ich bereits auslesen. Nur funktioniert die Ansteuerung des Displays nicht.
Ich sehe den DS2408 in den Instances und habe die ersten 5 Ports (A-E) als Ausgänge konfiguriert und ihnen die Variablen P0-P4 zugeordnet.
Hardwaremäßig sind Pins mit folgenden Eingängen am Display verbunden: P0-D4, P1-D5; P2-D6, P3-D7, P4-RS.

Als Skripte für die Ansteuerung habe ich verschiedene Skripte aus dem Forum verwendet, konnte dem Display aber bislang kein einziges Zeichen entlocken.

Sollte man in der Variablenübersicht von IPS bei P0-P5 nicht ein Toggeln oder eine Änderung des Status der einzelnen Ports sehen?

Als Skript habe ich verschiedene Vorlagen versucht zu kombinieren, bzw. abzuwandeln. Ob das aber so passt, kann ich leider nicht ganz beurteilen.
Starte ich die Skripte in „Event Script“ kommt aber keine Fehlermeldung.

Zur Initialisierung nehme ich folgendes Skript:

<?
/*
*******************************
 IP-SYMCON Script
*******************************
File     : LCD_INI.ips.php
Trigger  :
Interval :
*/

$id = 30051;
$controller = "ST7036";
$rows = 3;
$cols = 16;

TMEX_F29_SetStrobe($id, TRUE);
IPS_Sleep(100);
TMEX_F29_WriteBytes($id, chr(03).chr(03).chr(03).chr(03).chr(03).chr(02).chr(02).chr(12).chr(00).chr(06).chr(00).chr(14).chr(00).chr(01).chr(00).chr(02));

?>

Auf dem Display soll mir folgendes Skript etwas ausgeben:

<?
/*
*******************************
 IP-SYMCON Script
*******************************
File     : LCD.ips.php
Trigger  :
Interval :
*/
$id = 30051;

$text = "Hello |zweite Zeile";

$lcd = new OneWireLCD(3, 16);
$lcd->SendLCDText($text);

class OneWireLCD {

 private $rows;
 private $cols;

 public function __construct( $rows, $cols ) {
  $this->rows = $rows;
  $this->cols = $cols;
 }

 public function SendLCDText($text) {

   $id = 30051;
   $sendbuf="";
   $currentline=0;
   $lines = explode("|", $text);

   //Clear Display
   $sendbuf .= chr(0);
   $sendbuf .= chr(1);

   //Disable Cursor
   $sendbuf .= chr(0);
   $sendbuf .= chr(12);

   foreach($lines as $line) {

    if ($currentline >= $this->rows) {
     break;
    }

    //Position
    if($currentline > 1) {
     $shift=16;
    } else {
     $shift=0;
    }

    $sendbuf .= chr(((($currentline%2)*4*16+$shift) | 128) >> 4);
    $sendbuf .= chr(((($currentline%2)*4*16+$shift) & 15));

    //Text
    //$line = str_pad($line, $this->cols);
    $line = substr($line, 0, $this->cols);

    for($i=0; $i<=strlen($line)-1; $i++) {
     $sendbuf .= chr((ord($line{$i}) >> 4) | 16);
     $sendbuf .= chr((ord($line{$i}) & 15) | 16);
    }

    $currentline++;
   }
     TMEX_F29_WriteBytes($id, $sendbuf);
  }
}
?>

Habe ich hier ein prinzipiellen Fehler in meiner Vorgehensweise, oder sollte das funktionieren.

Wäre klasse, wenn mir jemand von euch bei meinen Startschwierigkeiten etwas unter die Arme greifen könnte, denn mittlerweile macht sich bei mir der Frust breit.

Gruß
Mike

… warum machst Du Dir das Leben so schwer :confused:
IPS 1-Wire NanoTerminal, 8fach I/O Modul

Hallo Steiner,

danke für deine schnelle Antwort.
Ich habe auch schon mit den Nano Terminal Skripten experimentiert, das hat aber bislang auch noch nicht den erwünschten Erfolg gebracht.
Ich hab jetzt aber mal direkt nach dem Start des Skripts auf die Variablen umgeschaltet und hab dann dort das Toggeln der einzelnen bits beobachten können. Vielleicht hab ich da bislang immer zu lange gewartet.

Allmählich habe ich den Verdacht, dass an dem Display etwas nicht stimmt…

Ich werde nun mal schauen, ob ich irgendwo ein anderes Display auftreiben kann, das eines der möglichen Controller eingebaut hat und das im 4bit-Modus zu beteiben ist…