Forum: Projekte & Code LCD menu library


von felix matenaar (Gast)


Lesenswert?

Hallo,

ich bin seit einiger Zeit mit einem Kollegen dabei einen 
Funktionsgeneratorbausatz zu entwickeln mit eigener freier Firmware.

Da wir ein kleines Menü in unserem Display haben wollten habe ich ein 
paar Funktionen geschrieben, die es ermöglichen sehr strukturiert 
Menüseiten anzulegen und bestimmten Koordinaten funktionen zu geben, 
sodass man später einfach nur noch einen Tastendruck abfangen muss um 
die richtigen Funktionen auszuführen.

Da das ganze gut Funktioniert und das Hinzufügen von Menüseiten ein 
Kinderspiel geworden ist habe ich das ganze mal als Archiv 
zusammengepackt, ein kleines Beispiel gemacht, dass ich jedoch nocht 
nicht testen konnte aber es zeigt glaube ich ganz gut, was man mit dem 
Code machen kann.

Wer nicht zu viel erwartet ist sicher Glücklich damit ;)

 Das Archiv: https://pleed.dynalias.net/liblcdmenu-0.1.tar.gz
 Mein svn    https://pleed.dynalias.net/websvn

von erich (Gast)


Lesenswert?

die links gehen nicht

von tobi (Gast)


Lesenswert?

die links gehen noch immer nicht. bin sehr interessiert daran ;)

grüße, der tobi

von Jürgen S. (schimmi)


Lesenswert?

Hallo tobi & erich,

probiert mal:

https://chaos-disciple.org/websvn/ bzw.
https://chaos-disciple.org/liblcdmenu-0.1.tar.gz

sollte zumindest laut Google funktionieren...

Grüsse,
Schimmi

von Robert (Gast)


Lesenswert?

Ja geht

von Felix Matenaar (Gast)


Lesenswert?

Tut mir leid mit dem Link. Das Lag an einem falschen Redirect bzw. 
daran, dass sich die Domain geändert hat. Viel spaß noch damit!

von Kleber (Gast)


Lesenswert?

hallo an alle, ich bin gerade dabei c zu lernen, und habe einige fragen 
die lib betreffend. ich blicke bei manchen sachen garnicht durch, z.b.:
1
page->p_acts[page->cur_action]((void*)(page));
2
...
3
page_button(Page* page)

1.was bedeutet "->"
2 wofür steht "*", das habe ich in anderen quellcodes  auch gesehen
3. und die "[]"

ich habe das avr tut. durchgelesen, aber das gibt mir nich die antworten 
auf die hier gestellten fragen, oder ich raffe etwas nicht.

mfg kleber

von Kleber (Gast)


Lesenswert?

p.s, das hier bereitgestellte proggie geht bei mir nicht, beim 
compilieren, kommt "main.c:96: warning: passing argument 2 of 
'page_init_screen' from incompatible pointer type"(die zeilennummer 
dürfte von dem original abweichen da ich zeilen zugefügt habe).

ach ja, und die wichtigste frage: Wocher weiss das program welche taste 
gedrückt wird?

mfg kleber

von Berti (Gast)


Lesenswert?

ich würd mal C lernen... das sind ja wirklich Basics (Pointer wär da so 
ein Stichwort...)

von Karl H. (kbuchegg)


Lesenswert?

Kleber wrote:
> hallo an alle, ich bin gerade dabei c zu lernen, und habe einige fragen
> die lib betreffend.

Deine Fragen sind keine Fragen bezüglich der Lib.
Das sind Fragen über C.

Um C zu lernen ist es praktisch unerlässlich ein Lehrbuch
durchzuarbeiten.

> ich habe das avr tut. durchgelesen, aber das gibt mir nich die antworten
> auf die hier gestellten fragen, oder ich raffe etwas nicht.

Kein Wunder. Das AVR Tut beschäftigt sich hauptsächlich mit
den Besonderheiten, wenn man C mit einem AVR einsetzt. Es
setzt ein gewisses Grundvertändnis von C voraus.


PS: Das ist jetzt keine Gehässigkeit, dir nicht zu erklären
was es mit den -> und [] auf sich hat. Das würde einfach
zuweit führen und ich hab ehrlich gesagt keine Lust dir
in 30 Zeilen eine Zusammenfassung über Themen zu geben, die
in jedem halbwegs anständigem Lehrbuch 3 Kapitel füllen.

von Kleber (Gast)


Lesenswert?

hmmmmm, veständlich....

Aber es würde mir sehr helfen wenn jemand (so wie bertie) tipps gibt um 
was es sich dort dreht, um schneller die benötigten infos zu finden. 
hier ging es nicht darum mir das komplete c zu eklären.

@Karl heinz: eine der fragen bezieht sich doch auf die lib (Wocher weiss 
das program welche taste gedrückt wird/wurde?), und wenn du auch jetzt 
der meinung bist, dass die frage nix mit der lib zutun hat, dann müssten 
(fast) alle threads gleich mit "lerne c" beendet werden.
mfg

von MicroMann (Gast)


Lesenswert?

Die Themen die du suchst lauten Pointer, Strukturen und cast.
Viel Erfolg.
Das mit den Pointern ist schon etwas schwer verdaulich für Newbies.

Ich empfehle : http://www.galileocomputing.de/openbook/c_von_a_bis_z/

von Karl H. (kbuchegg)


Lesenswert?

MicroMann wrote:
> Die Themen die du suchst lauten Pointer, Strukturen und cast.
> Viel Erfolg.

Wobei es sich in diesem Fall um die 'hardcore' Version von
Pointern handelt: Funktionspointer.

http://www.mikrocontroller.net/articles/FAQ#Funktionszeiger

von Karl H. (kbuchegg)


Lesenswert?

Kleber wrote:
> @Karl heinz: eine der fragen bezieht sich doch auf die lib (Wocher weiss
> das program welche taste gedrückt wird/wurde?),

Ich hab mir die Lib nicht downgeloadet, drum hab ich auch nichts
dazu gesagt.
Welche Möglichkeiten gibt es denn prinzipiell:
* Die Lib fragt selber die entsprechenden Ports/Pins ab
  In dem Fall wird sich wohl irgendwo eine Definition
  der benutzen Portpins finden, die man anpassen muss
* Die Lib geht davon aus, dass der Anwendungsprogrammierer
  eine Funktion zur Verfügung stellt, die sie aufrufen kann
  und die die entsprechende Taste liefert.
  In dem Fall wird sich an den relevanten Codestellen ein
  Funktionsaufruf finden lassen, für den es innerhalb der
  Lib keine Funktion gibt. Allerdings wird hächstwahrscheinlich
  der Name dieser Funktion so gewählt sein, dass das auch ein
  Blinder auf 20 Schritte Entfernung erkennen kann.
* Die Lib kümmmert sich überhaupt nicht um die Tasten, sondern
  funktiniert nach dem Muster.
  Anwenderprogramm wertet Tasten auf und ruft mit der Taste
  immer wieder eine Funktion aus der Lib auf. Diese Funktion
  bearbeitet den Aufruf und kehrt dann sofort zurück
* Irgendein anderer Mechanismus, der sich durch Studium des
  Source Codes ergibt

von Kleber (Gast)


Lesenswert?

ooooooooja, ich habe mir gerade das buch angeschaut (speziel pointer 
kapitel) und, mein lieber schwager...... jetzt bin ich für eine weile 
beschäftigt.
Benutzt eigentlich jemad die lib hier? ich würde gerne wiessen ob bei 
den anderen alles reibungslos angelaufen ist den, bei mir will es nicht, 
makefile auf cpu und osc. angepasst, das program lässt sich compilieren, 
aber da kommen 2 warnungen: "main.c:96: warning: passing argument 2 of 
'page_init_screen' from incompatible pointer type" und "main.c:73: 
warning: 'digit' is used uninitialized in this function". Lcd wird init. 
(schwarzer balken verschwindet) aber auf dem display ist nur ein 
uterstrich zu sehen. ist es problematisch, dass ich 8mhz statt die 
vorgegebenen 16mhz genohmen ghabe. und....ich weiss immer noch nicht wie 
das mit den tasten funzt. einzig in der main steht etwas mit port und 
pin....
1
int main(void)
2
//{{{
3
{
4
5
  
6
  DDRA=0x00;  
7
  uint8_t input = PINA;
8
9
  // At first we create our defined example page (look into create_pages())
10
  create_pages();
11
  
12
  // writes PAGE_EXAMPLE on lcd display
13
  page_display(PAGE_EXAMPLE);
14
15
  while(1){
16
    if(input != PINA )
17
      page_button(&menu_pages[cur_page]);
18
  }  
19
20
  return 0;  
21
}


die frage ist, wo werden die tasten  ausgewertet? nirgendwo im code wird 
etwsa mit "input" oder "PINA" gemacht, auser in main aber, das was da 
steht reicht nnicht um die tasten auszuwerten, oder sehe ich das falsh.

mfg. kleber

von Karl H. (kbuchegg)


Lesenswert?

Kleber wrote:

Jetzt hab ich mir die Lib doch mal geholt.

> Benutzt eigentlich jemad die lib hier?

Ich denke du erwartest zuviel von der Lib.
Das ganze ist eigentlich mehr eine Sammlung von Funktionen
die einem helfen bzw. zeigen sollen wie eine Datenstruktur
zum Aufbau von Menüs aussehen kann.

Wenn du da ein fertiges Menüsystem suchst, dann ist das nichts
für dich.

> aber da kommen 2 warnungen: "main.c:96: warning: passing argument 2 of
> 'page_init_screen' from incompatible pointer type" und "main.c:73:
> warning: 'digit' is used uninitialized in this function".

Beide Warnungen sind kritisch und müssten korrigiert werden.

> vorgegebenen 16mhz genohmen ghabe. und....ich weiss immer noch nicht wie
> das mit den tasten funzt.

Ja. da kümmert sich die Lib nicht drum. Tastenauswertung
ist dein Bier. Im Grunde steckt dir Tastenauswertung in main()
drinnen und soll nur zeigen mit welchen Funktionen man dieses
Menüsystem ins Rollen bringen kann.

> einzig in der main steht etwas mit port und
> pin....

Auch das ist nicht als endgültige Lösung gedacht.

Wie gesagt: Das ist keine Lib im Sinne von: hol ich mir,
binde sie in mein Projekt ein, compiliere sie und rufe
2, vielleicht 3 Funktionen auf und geht. Das ist mehr als
Anfang eines Baukastensystems zu sehen.

von Kleber (Gast)


Lesenswert?

lol, ich bin also nicht der einzige der nicht schlafen kann.

ahaaaaaa, aha, aha.... in der tat suche ich ein menusystem das einfach 
in ein kleines project anzubinden ist aber, ich bin froh dass ich dieses 
gesehen habe, so bin ich auf sachen gestossen die aufklärung bedürfen. 
ich habe mir die kapitel über pointer durch gelesen und jetzt ist alles 
schlimmer geworden;) den begrüsungs satz habe ich verstanden, 
danach.....nebel, nicht mal bahnhoff verstanden. so schlim ist es zum 
glück nicht aber es wird heftig. kanst du mir ein menüsystem empfelen 
(falls du welche kennst)?
mfg

von Karl H. (kbuchegg)


Lesenswert?

Kleber wrote:

> glück nicht aber es wird heftig. kanst du mir ein menüsystem empfelen
> (falls du welche kennst)?
> mfg

Nicht wirklich.
Das Problem: So ein Meüsystem sieht anders aus, je nachdem ob man
ein 2 zeiliges oder ein 4 zeiliges LCD benutzt. Auch die Anzahl
der Zeichen pro Zeile kann einen Unterschied machen. Daher passe
ich meine Menüsysteme der Aufgabenstellung an und programmiere
sie meist speziell für die Anwendung. Sooo schlimm ist das auch
wieder nicht.

von Kleber (Gast)


Lesenswert?

Ich kann es mir denken dass es nicht so schlimn ist aber, für anfänger 
sind beispiele an die man sich orientieren kann wichtig. ich blicke 
nicht durch wie ein menusystem zu bewerksteligen ist daher die bitte um 
beispiele.
mfg

von Karl H. (kbuchegg)


Lesenswert?

2 Voraussetzungen:

* Schaffst du es, auf dem LCD einen Text auszugeben?
* Schaffst du es einen/mehrere Taster zuverlässig und
  ohne Prellen auszulesen?

Die beiden Voraussetzungen musst du zunächst mal erfüllen
können. Sonst hat es keinen Sinn mit dir ein Menüsystem
durchzugehen.

PS: Wir sollten uns von hier verziehen.
Das ist die Codesammlung. In der wird fertiger Code präsentiert.

Nach deiner nächsten Antwort, werde ich einige der vorstehenden
Einträge löschen.

von Kleber (Gast)


Lesenswert?

definitiv, ja. Ich habe keine probleme damit. Kleinere programe habe ich 
schon öfter geschrieben, lcd, taster pwm sind sachen die ich oft 
benutze. Halt für ein menü reicht mein wissen nicht.
mfg

p.s. wo geht es jetzt weiter?

von Sven S. (schwerminator)


Lesenswert?

Hallo,
der Thread ist zwar schon etwas älter, aber sind die Links vom 
Threadanfang sind allesamt tod. Auch bei Google finde ich nur zahlreiche 
tote. Könnte jemand die Bibliothek hochladen oder neue Links 
veröffentlichen? Danke.

von Georg (Gast)


Lesenswert?

Suche bei Google nach liblcdmenu-0.1.tar.gz brachte mehrere Ergebnisse:

z.B. https://www.n217-115-149-241.cnet.hosteurope.de/pleed/

Firefox meckert zwar, aber das musst du selber entscheiden.

Gruss aus Aachen
Georg

von Josua (Gast)


Lesenswert?

Hallo! alle links auf dieser seite funktionieren nicht mehr!
kann mir jemand einen aktuellen funktionierenden link posten?
danke josua

von Michael H* (Gast)


Angehängte Dateien:

Lesenswert?

mit kriminalistischem spürsinn gefunden:
http://chaos-disciple.org/pleed/downloads/liblcdme...
http://chaos-disciple.org/pleed/downloads/liblcdmenu.tar.gz
und für alle ewigkeiten gleich noch angehängt.

von Michael H* (Gast)


Angehängte Dateien:

Lesenswert?

und der zweite

von Josua S. (teagn)


Lesenswert?

@ Michael H
Vielen Dank!

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.