Forum: Mikrocontroller und Digitale Elektronik Menü auf Graphik LCD


von AVRandLCD (Gast)


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.

von ARM-Fan (Gast)


Lesenswert?

>wie man Peripherie und LCD Menü miteinnander verbindet

Was möchtest du uns damit sagen?

von AVRandLCD (Gast)


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.

von holger (Gast)


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.

von Marcus S. (mstangl)


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

von AVRandLCD (Gast)


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.

von holger (Gast)


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.

von AVRandLCD (Gast)


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.

von AVRandLCD (Gast)


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.

von Klaus2 (Gast)


Lesenswert?

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

Klaus.

von Hans M. (hansilein)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.