- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Universal LCD Menue

  1. #11
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Berlin
    Alter
    69
    Beiträge
    348
    Anzeige

    Praxistest und DIY Projekte
    Hallo fredred
    hab ich da was überlesen. "In meinen bescheiden Code mache ich es ...", sagst du. Würde es gern mal anschauen.
    achim

  2. #12
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.11.2013
    Ort
    Home
    Beiträge
    213
    Hallo Achim,

    nichst überlesen! Habe ja kein Code eingestellt. Sollte doch nur ein Hinweis sein. Natürlich wenn Interesse, werde ich meine Variante zu Verfügung stellen.
    Vorab ein Schnipsel:

    '**** Variable für Anzeigeauswahl ****
    Dim Lcd_aktualisieren As Byte 'Zähler für LCD-Anzeigen
    Gosub Anzeigen
    '************ Bereich für LCD -Anzeigen ***************************
    Anzeigen:

    '****** Startfenster *******
    If Lcd_aktualisieren = 255 Then
    Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
    Lcd Status ; " ist Startfenster "
    Locate 2 , 1 'Cursor auf 2 Zeile, 1 Spalte
    Lcd " Hallo Achim "
    Locate 3 , 1 'Cursor auf 3 Zeile, 1 Spalte
    Lcd " Datum " ; Date$ ; " "
    Locate 4 , 1 'Cursor auf 4 Zeile, 1 Spalte
    Lcd " Zeit " ; Time$ ; " "
    End If

    '***************************

    'hier zur LCD - Datenanzeige für Funk
    If Lcd_aktualisieren = 254 Then
    Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
    Lcd Status ; " D0 | D1 | D2 "
    Locate 2 , 1 'Cursor auf 2 Zeile, 1 Spalte
    Lcd "_ " ; D0 ; " _|_ " ; D1 ; " _|_ " ; D2 ; "_ "
    Locate 3 , 1 'Cursor auf 3 Zeile, 1 Spalte
    Lcd " Temp1: " ; Temper1 ; " ßC "
    Locate 4 , 1 'Cursor auf 4 Zeile, 1 Spalte
    Lcd " Temp2: " ; Temper2 ; " ßC "
    End If
    '***************************
    'hier zur LCD - Anzeige für Poti
    If Lcd_aktualisieren = 253 Then
    Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
    Lcd Status ; " Poti Anzeige "
    Locate 2 , 2 'Cursor auf 2 Zeile, 2 Spalte
    Lcd " *Werte in Volt* "
    Locate 3 , 2 'Cursor auf 3 Zeile, 2 Spalte
    Lcd " Poti0 = " ; W0 ; " "
    Locate 4 , 2 'Cursor auf 4 Zeile, 2 Spalte
    Lcd " Poti1 = " ; W1 ; " "
    End If
    '***************************

    'hier Anzeige Touch-Werte
    If Lcd_aktualisieren = 252 Then
    Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
    Lcd " Touch Werte lesen "
    Locate 2 , 1 'Cursor auf 2 Zeile, 1 Spalte
    Lcd " Achsen testen "
    Locate 3 , 1 'Cursor auf 3 Zeile, 1 Spalte
    Lcd " X = " ; X ; " " 'die leer Zeichen löschen den Rest
    Locate 4 , 1 'Cursor auf 4 Zeile, 1 Spalte
    Lcd " Y = " ; Y ; " "
    End If
    '***************************

    'hier Anzeige Touch-Panel
    If Lcd_aktualisieren = 0 Then
    Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
    Lcd " Touch Test "
    Locate 2 , 1 'Cursor auf 2 Zeile, 1 Spalte
    Lcd " ************* "
    Locate 3 , 1 'Cursor auf 3 Zeile, 1 Spalte
    Lcd " * ENTER * " 'die leer Zeichen löschen den Rest
    Locate 4 , 1 'Cursor auf 4 Zeile, 1 Spalte
    Lcd " ************* "
    Wait 1 'für Test anzeigen 3 Sekunden
    End If
    '***************************

    'hier Anzeige Beispiel Temperaturreglung
    If Lcd_aktualisieren = 2 Then
    Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
    Lcd " Temperaturwarnung "
    Locate 2 , 1 'Cursor auf 2 Zeile, 1 Spalte
    Lcd " T1= 3 " ; "ßC" ; " zu hoch "
    Locate 3 , 1 'Cursor auf 3 Zeile, 1 Spalte
    Lcd " Temp1: " ; Tempfehler ; " ßC "
    Locate 4 , 1 'Cursor auf 4 Zeile, 1 Spalte
    Lcd " Temp2: " ; Temper2 ; " ßC "
    Wait 5
    End If
    '***************************
    usw.
    Gruß
    Fred

  3. #13
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Berlin
    Alter
    69
    Beiträge
    348
    Hab da doch was überlesen, ist Basic und ich nutze C. Schade
    Danke
    achim

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    04.04.2009
    Ort
    Sangerhausen/OT Grillenberg
    Alter
    59
    Beiträge
    53
    Hallo Fred,

    kannst Du bitte Deinen ganzen Code reinstellen?

    Gruß Andreas

  5. #15
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.11.2013
    Ort
    Home
    Beiträge
    213
    Hallo Andreas,

    kannst Du bitte Deinen ganzen Code reinstellen?

    könnte ich. Passt aber nicht mehr zum Thema. Projekt ist eine umfangreiche MSR- Haussteuerung auch mit Funkübertragung (alles Eigenbau) Wenn immer noch Interesse schicke ich den Code(bas 938 Zeilen) als PN.

    Mit freundlichen Grüßen
    Fred

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.12.2005
    Ort
    @FFM
    Alter
    48
    Beiträge
    408
    Hallo Fred
    .. leider kann ich die Wiederverwendbarkeit deines Codes nicht nachvollziehen.
    Sinn dieser Routine war die Generierung einer Menustruktur nur durch Konfiguration des Dataset am Ende des Codes zu schaffen.
    was du in deinem Programm machst ist je nach Ablauf des Programms Variablen aufs Display zu schreiben ...
    wie kann man so einen Universell gesteuerten Menueablauf generieren ?
    Mein Code soll die Reduktion von mehrfach verzweigten Menuestrukturen bewirken.
    Du verwendest pro Menuepunkt 4 locate und 4 lcd befehle das mal die Anzahl von Menuepunkten frisst ordentlich Speicherplatz.
    Ich verwende insgesamt nur 8 LCD Befehle für die Menueanzeige im Gesamten Programm unabhängig wieviel Menueeinträge vorhanden sind.
    Du musst wissen als ich das Programm vor ca 10 Jahren geschrieben habe war Speicherplatz im ATmega stark begrenzt
    Aber trozdem grossen Respekt an dich, daß du dich in deinem Alter noch an an eine MSR Steuerung mit 8-bit Prozessor im
    Eigenbau heran wagst .

    Gruß Daniel
    Geändert von molleonair (29.10.2015 um 18:46 Uhr)

  7. #17
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.11.2013
    Ort
    Home
    Beiträge
    213
    Hallo Daniel,

    hast völlig Recht. Die Taster haben mir nicht gefallen.
    Im meiner MSR Steuerung teilen sich ein Atmega 644P und einen 128 die Arbeit. Die Parameter, von zu, tausche ich mit UART (TTL) aus. Somit war und ist Speicherplatz zusparen nicht das Wichtigste für mich. Nur die Anzeige sollte immer das gleiche Format haben und nicht „flackern“. Anfänglich hatte ich es mit dem „blödem“ CLS- Befehl gemacht.

    Zitat:
    Mein Code soll die Reduktion von mehrfach verzweigten Menuestrukturen bewirken.
    Zitat Ende

    Wie gesagt deine Lösung finde ich Gut, sind aber andere Verhältnisse.
    Beispiel: Wird ein Hausalarm ausgelöst, springe in Anzeige WO. Kommt Funkmeldung PV- Akku wird nicht mehr geladen springe in Anzeige PV. Möchte ja wissen ob „Susi“ nicht mehr genug „Kraft“ hat oder es sich um eine Störung handelt.
    Kommt eine Meldung Lastprofilspeiche für Strom- Gaszäher ist fast voll springe in Anzeige Daten sichern usw.

    Wichtig war für mich die Starteinstellung. Display zeig DCF77 an, in der letzen Zeile wird angezeigt, wo die Controller, gerate „herum Tadeln“. In allen Sub’s kann ich ein Status setzen (erst wenn sich Variable X ändert auch in %) nur dann in passende Anzeige springen.

    Displayanzeige hat ja durch Klartext plus Variable in Zeilen immer eine andere Länge.
    Soll halt nur „Schmuck“ aussehen und meine liebe Frau soll es auch deuten können für eventuelle Reaktionen.

    Vielen Danke für Info der alte Mann
    Fred

    Beschwerden über Schreibfehler, fehlende Buchstaben oder Leerzeichen bitte an meine Tastatur richten.


  8. #18
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    ich mach ja ungern den Pingeligen, aber "Goto" in Hülle und Fülle ist nicht so der optimale Programmierstil ...

    Respekt vor der Leistung, doch das ist eher suboptimal gelöst.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  9. #19
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.11.2013
    Ort
    Home
    Beiträge
    213

    Cool

    Hallo Vitis,

    Machst nicht den Pingeligen.
    Freue mich immer wenn ein sachlicher Kommentar kommt. Nur dann bekommt man die Möglichkeit, sich zu rechtfertigen, warum dieser Programmierstil für dieses Projekt angewannt wird.
    Code soll übersichtlich sein. Es kommen ja ständig neue Sensoren, Abfragen und Entscheidungen dazu.

    Aber wo stehen im Code in „Hülle und Fülle“ Goto.
    Besonders in größeren Projekten vermeide ich dies. Goto setzt ja kein Zeiger und damit verliert man schnell den Überblick.
    Verwende Gosub ist doch schon ein großer Unterschied. Hier wird ein Zeiger gesetzt(Aufrufen und mit Return zurück zur nächster Zeile nach Aufruf)Kleiner Nachteil es müssen mehr Speicher im Header reservieren werden.
    Aber wer hat der hat.
    Könnte auch eine Declare Sub xxx verwenden. Sub ist zwar die eleganteste Lösung, hat aber auch Nachteile. Die Variablen in der Sub sind nicht öffentlich. Somit erst in Declare öffentlich machen. Reservierter Speicherplatz wirt auch nicht kleiner.

    Ich sehe keinen Grund warum ich den Code suboptimal zu lasten der Übersicht ändern sollte. Muss ja auch immer die Laufzeit beachten und welche Entscheitung Vorrang hat.

    Mit freundlichen Grüßen
    Fred

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.12.2005
    Ort
    @FFM
    Alter
    48
    Beiträge
    408
    Hallo Ihr zwei ...

    nein Vitis hat schon recht goto ist nicht der feine Programmierstil und vor 10 Jahren (so alt is der Thread fast) war ich noch Programmieranfänger ...
    Davon mal abgesehen ist es Code abhängig welche Codeverweigung sinnvoll ist ..

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen