mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Menü auf Graphik LCD


Autor: AVRandLCD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weis das dieses Thema schon oft behandelt wurde doch ich find nichts 
was bei mir ein Licht aufgehen lässt.
Deshalb wollte ich Fragen ob jemand Ansätze oder Links kennt/hat wie man 
Peripherie und LCD Menü miteinnander verbindet. Wie man ein Menü Aufbaut 
und das am besten mit guter Erklärung. Ich steh nämlich aufm Schlauch.

Autor: ARM-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wie man Peripherie und LCD Menü miteinnander verbindet

Was möchtest du uns damit sagen?

Autor: AVRandLCD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich haben z.B. ein Chip(RTC....) über I2C und ein Menü in dem es die 
Funktionen Einstellung und Anzeigen wie verbinde ich das jetzt mit dem 
Menü und der RTC wenn ich was im Menü mache.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wie verbinde ich das jetzt mit dem
>Menü und der RTC wenn ich was im Menü mache.

Das macht jeder Programmierer so wie es ihm
gerade einfällt. Da gibt es keine Standardrezepte.

Autor: Marcus Stangl (mstangl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo AVRandLCD,
wie der Holger schon anmerkt - da gibt's keine einheitliche Lösung. Ich 
persönlich weise jedem Menüpunkt einen Index zu, der bei Auswahl eine 
bestimmte Aktion auslöst (Peripherie de-,aktivieren etc.). D.h. je nach 
Programmstatus (das kann man prima mit Tabellen realisieren) wird in 
Abhängigkeit des ausgewählten Index eine, oder mehrere Systemaktion(en) 
ausgelöst. Dazu zählt natürlich auch die graphische Darstellung weiterer 
Menüebenen...
Wenn du in Assembler etwas geübt bist, kannst du dir ja gerne das 
<http://www.mikrocontroller.net/articles/AVR_MSR-System>; ansehen. Hier 
sind einige zig' Menüs verschachtelt, wobei besonders die files 
[_+_memBtable.inc]&[+DYNsetupA_TE] das Thema verdeutlichen...

Gruß
Marcus

Autor: AVRandLCD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also z.B. in MAIN wählst du einen Hauptpunkt und dann gehst zu zur 
zugehörigen Funktion in der du dann Unterpunkte des Menüs wählst und 
darstellt gleichzeitig die dazugehörige Fiúnktion z.B. en Sound 
abspielen bedienst.

Mein Problem liegt nämlich hier mit dem Menü ich hab eine Funktion die 
z.B. zwei Lieder abspielen kann in meinem Menü:
-Song1
-Song2
-Lautstärke
Hier würde ich dann über Buttons eines wählen nur wie bring ich das 
gewählte auf dem LCD mit der Funktion die den Sound abspielt zusammen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>-Song1
>-Song2
>-Lautstärke

>Hier würde ich dann über Buttons eines wählen nur wie bring ich das
>gewählte auf dem LCD mit der Funktion die den Sound abspielt zusammen.

if menu selected line1 play sound1
if menu selected line2 play sound2
if menu selected line3 Lautstärke einstellen

In Pseudocode.
Das dumme ist nur das du ganz und gar keine Ahnung
hast. Und niemand hier kann dir dabei helfen
ein Programmierer zu werden. Da musst du schon selber durch.

Autor: AVRandLCD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur mal halblang ich bin kein Anfänger auf das if zeug bin ich auch 
schon gekommen nur das scheint mir keine elgante lösung zu sein. ich hab 
mir mal den code des butterfly angesehen aber nichts in der richtung 
gefunden. und assembler kann ich leider nicht so gut um das MSR-System 
ausreichend lesen, verstehen zu können.

Autor: AVRandLCD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ICh glaube ich habe etwas dementsprechendes gefunden. Ich dachte von 
Anfang an das man dabei viel mit Pointern arbeiten muss. Jetzt habe ich 
eine Idee ohne if-else mal sehn wies im code dann aussieht. ich werds 
dann posten wenn ich zu papier gebracht habe.

Autor: Klaus2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Freut mich, sowas interessierte mich auch - also die effektive 
Verarbeitung und Anlage von Menüstrukturen.

Klaus.

Autor: Hans Mayer (hansilein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise Löst man das über einen Zustandsautomaten,
http://de.wikipedia.org/wiki/Virtueller_endlicher_Automat

letztlich ist das eine große case-Anweisung und eine Variable, die den 
aktuellen Zustand repräsentiert.

select STATE
case p1:
playSound1;
if(button1pressed)
STATE=p2;
return;
case p2:
...
return;

In den einzelnen cases werden also sowohl Anweisungen ausgeführt, als 
auch der Zustand geändert.

So kann man elegant dafür sorgen, daß je nach Menüpunkt die gleiche 
Taste eine andere Funktion hat.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.