Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Probleme mit Display-Ausgabe Kategorie: Programmierung (von André H. - 5.12.2002 10:21)
Als Antwort auf Neuling braucht Hilfe !!! von Konstantin - 5.12.2002 0:09

Hallo Konstantin,

Zuerst: Schreib bitte einen Betreff der mehr Themenbezogen ist:
z.B: "Probleme mit Display-Ausgabe" oder ähnliches.
DaÃ? die meisten Hilfe brauchen, wenn sie in ein Forum posten sollte
klar sein !
Und bitte benutze beim Schreiben des Textes die Return/Enter-Taste,
bevor Du am Zeilen ende ankommst.
Sonst steht alles in einer Zeile, und ich muÃ? ewig nach rechts scrollen.


Jetzt zu Deinem Problem:

Zweite Frage zuerst:
> Und noch eine Frage: wie kann ich DAtum, Sek., Min., ändern?
>
Handbuch Seite: Seite 121 (7.11.2) und Seite 122(7.11.4)

> Ich habe vor 2 Tagen eine LCD-Anzeige über I2C an CC2 angeschlossen und ein Prog. reinprogrammeirt. Es funzt, aber die Zahlen blinken bei jedem Sekundenwechsel und ab und zu verschwindet ganz. Was habe ich falsch gemacht?
>
Du machst etwas grundlegendes falsch:
Du initialisierst das LC-Display bei jedem Durchgang und lässt dazu keine
kleine Pause nach dem Init. Da ist es klar, da� sich das Display aufhängt.
Und nebenbei solltest Du "print" anstatt "printlength" benutzen.
"print" ist um einiges schneller.
Printlength wird nur benötigt, wenn man einen String mit z.B. 20 Zeichen
Inhalt hat, und z.B. nur die ersten 5 davon ausgeben will.

Also, Dein Thread sollte in etwa so aussehen:

thread main
{
  string s;
  system.TIME t;
  byte sec;
  s="Die Uhr";
  pcflcd.setpcf(8);
  pcflcd.init();
  pcflcd.setLight(1);
  pcflcd.goto(1, 0);
  pcflcd.print(s);

  loop
  {
    sec = system.second();
    wait system.second() != sec;
   
    system.gettime(t);
    pcflcd.goto(1, 12);
    pcflcd.zahl2(t.hour);
    pcflcd.put(':)';
    pcflcd.zahl2(t.minute);
    pcflcd.put(':');
    pcflcd.zahl2(t.second);

    pcflcd.goto(2, 12);
    s= "";
    s= DOW_NAMES[system.dow()] + " ";
    str.putintf(s,system.day(),2);
    s=s+".";
    str.putintf(s,system.month(),2);
    s=s+".";
    str.putintf(s,system.year(),2);
    pcflcd.print(s);
 
    // Doppelpunkte nach ca 1/2 Sekunde ausschalten (für Blinkeffekt)
    sleep 500;
    pcflcd.goto(1, 14);
    pcflcd.put(0x20);
    pcflcd.goto(1x17);
    pcflcd.put(0x20);
  }
}


MfG André H.



> Hier ist was ich zusammen gestellt habe:
>
> const DOW_NAMES[] = "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa";
> //-----------
>   thread main
> //-----------
> {
>   string s1, s2, s3;
>   s3="Die Uhr";
>   system.TIME t;
>   int sec;
>   // Synchronisation auf Sekundenwechsel
>   sec = system.second();
>   wait system.second() != sec;
>  
>   // Zeitstring aufbauen
>   s1 = "";
>   system.gettime(t);
>   str.putintf(s1, t.hour, 2);
>   str.putchar(s1, ':');
>   str.putintf(s1, t.minute, 2);
>   str.putchar(s1, ':');
>   str.putintf(s1, t.second, 2);
>
>   // Datumsstring aufbauen
>   s2 = DOW_NAMES[system.dow()];
>   str.putchar(s2, ' ');
>   str.putintf(s2, system.day(), 2);
>   str.putchar(s2, '.');
>   str.putintf(s2, system.month(), 2);
>   pcflcd.setpcf(8);
>   pcflcd.init();
>   pcflcd.setLight(1);
>   pcflcd.goto(1, 0);
>   pcflcd.print(s3);
>
>
>   // Strings am Display ausgeben
>   pcflcd.goto(1, 12);
>   pcflcd.printlength(s1, str.length(s1));
>   pcflcd.goto(2, 12);
>   pcflcd.printlength(s2, str.length(s2));
>
>   // Doppelpunkte nach ca 1/2 Sekunde ausschalten (für Blinkeffekt)
>   sleep 500;
>   pcflcd.goto(1, 14);
>   pcflcd.put(' ');
>   pcflcd.goto(1, 17);
>   pcflcd.put(' ');
> }
>
> Ich danke im Voraus


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Warum Print und nicht Printlength? (von Christian H. - 5.12.2002 12:21)
    Re: Warum Print und nicht Printlength? (von André H. - 5.12.2002 13:07)