Menü auf Graphik LCD

Gast #1024130
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.
#1025000
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
Gast #1025034
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.
Gast #1025053
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.
Gast #1025752
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.
Gast #1025756
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.
#1025780
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren