Hallo hier mal ein Codebeispiel für normale LCD-Displays in verwendung mit der Lib von Peter Fleury!! Was meint ihr dazu?? Was ist schlecht, was ist gut!! ==> und wie kann ichs besser machen!! mfg mathias
Ach ja ich habe noch vergessen: Controller AVR natürlich !! - bei mir ATmega8535 bzw ATmega32! Und ja es ist noch nicht ganz fertig! momentan nur Hauptmenü und pro Eintrag 1 Submenü! wobei man beim Submenü noch nicht scrollen und auch nocht keine Funktion ausführen kann! ==> das kommt aber noch!! also dann viel spass mfg mathias
Also ich bin noch fleissig dran an der Version V16 und ja bis jetzt 43 Download und kein kommentar?? ist es wirklich so schlecht was ich da gemacht habe?? mfg mathias
Hallo, Könntest du evtl. die Dateien nochmal als *.zip gepackt hier anhängen ? Es gibt bei mir immer Probleme unter Linux "neuere" *.rar Dateien zu entpacken. Gruß Sven
"bis jetzt 43 Download und kein kommentar??" Vermutlich achten die meisten nicht darauf, das es ein rar ist und drücken daher versehentlich auf Donwload. Und ohne den Inhalt zu kennen, kann man ja nichts dazu sagen. Peter
ja wiso ist das schlecht ein rar?? hier mal ein zip davon!! Und ohne den Inhalt zu kennen, kann man ja nichts dazu sagen. ??? da komm ich jetzt nicht mit!! aber egal @peter ==> vielleicht könntest du es ja mal ansehen und schauen ob ich das mit dem ins Flash speichern und wider holen richtig mache?? ==> könnte ja sein das es nur aus zufall funktioniert!! mfg mathias
Ich benutze kein Linux, deshalb müßte ich für RAR ein extra Tool installieren (ZIPs werden von Windows XP automatisch geöffnet). Und das würde ich erst machen, wenn es mich wirklich brennend interessiert. Zum Programm, das ist nicht mein Programmierstil, allen Tod und Teufel im Interrupt zu machen. Dadurch werden mir die Programme zu unflexibel (schlecht erweiterbar) und zu unsicher (schlechte CPU-Zeitausnutzung, schwierige Zeitabschätzung). Und (fast) alle Kunden wollen später noch Erweiterungen. Peter
Ja okay dass ist aber auch nicht das Menue System, das ist ja eingentlich nur das TestMain indem ich die diversen Funktionen aufrufe um das ganze eben zu Testen !! ==> ja und wie macht man dann sowas besser?? ==> wenn ich zum Beispiel eine Spannung alle 250ms (für eine Regelung) Messen will dann muss ich doch sowas im Interrupt machen oder nicht?? Ich bin Student (Elektrotechnik) und ich programmiere noch nicht lange mit uC ==> deshalb wenig erfahrung usw. aber wenn das so schlecht ist dann will ich das auch besser machen also bitte um hilfe!! Übrigens das menu habe ich nur angefang weil ich mit einem Kollege ein Laderegler für eine Solaranlage mache! ==> und diese menue ist einfach zu erweitern und zu ändern denke ich zumindestens!! Also die Fragen die sich dann Stellen sind: Tasten einlesen wo?,-> und ich weis das das mit den Tastenentprellen schrott ist aber ich hatte bis jetzt noch nicht zeit deinen Code anzuschauen, mach ich aber noch! Wie mache ich das dann mit den menue funktionen, von wo rufe ich die dann auf?? usw... wäre echt supper wenn mir das mal einer sagt wie man sowas richtig aufbaut usw. ==> ders drauf hat!! also danke schonmal mfg mathias
ach ja zu dem rar noch, also ich kann dir WinRAR nur Empfehlen den damit kannst du fast alles öffnen!! natürlich auch zip!! mfg mathias
Hier mal ein Beispiel, wie ich sowas mache: http://home.tiscali.de/peterd/appl/soft/c51/thclock/index.htm Peter
Ja gut also das Menue mit switch case aufzubauen finde ich aber nicht sehr portabel aber egal! Denn beim ändern der Menue Daten und Funktionen bin ich mit meinem code sicher schneller wenn ich was ändern will und du kannst das auch nicht mit meinem menue vergleichen, denn ich will ein Hauptmenue bei dem ich mit up & down Durchblättern kann, und dann bei Enter in das jeweilige Untermenu springe und so weiter.. aber das ist ja auch nicht das was du angesprochen hast! Das was eingentlich für mich sehr wichtig ist, ist zu wissen wie man so ein main richtig aufbaut! und das weis ich jetzt immer noch nicht bzw. nicht mehr. Bis jezt dacht ich immer das ich das so richtig mache! Ich habe es ja jetzt mal so gemacht das ich ein 100us Tick erzeuge und mit diesem alles mache ==> wird aber dann noch auf 10ms geändert! fakt ist ich sehe immer noch keine Lösung wie isch das besser aufbau!! Und ja wenn man neu in dem ganze uC zeugs ist, dann ist das so glaube ich das schwierigste, nämlich einen sauberen strukturierten aufbaut zu machen der den uC nicht abwürgt!! Vielleich sollt man dazu mal einen neuen Thread aufmachen denn das Problem ja so glaube ich fas jeder der noch keine Erfahrung hat!! Aber wo soll ich denn am besten Beginnen?? Wie gesagt: Ich muss ja was Programmieren das folgende sachen macht, auf eine ATMEGA 32. alle 8 Kanale vom ADC einlesen! => natürlich zeitgesteuert denn damit sollten dan 3 PWM Kanale dementsprechend geregelt werden. Display Anzeige mit Benutzermenue um diverse Daten Anzuschauen usw. ==> das heist ja ich weis auch nicht genau ich dachte bis jetzt zum Beispiel jede sekunde ein update vom Display zu machen . Tempertauren der Solarakkus lesen über I2C! später dann noch eventuell eine DCF77 um die Uhr zu machen usw. und wie mache ich das jetzt alles?? ich meine nicht das lesen der ADC, Temperatur usw... ich meine den aufruf im Main!!! als ich glaub ich mach das mal mit ein Thread, denn ich möchte mehrere Meinungen hören wenns geht! mfg mathias
Also jetzt schon 110 Download ==> und erst 1 hat was dazu gesagt ??? na ja egal ==> in dem fall ist das alles so richtig wie ich das anderer mache, oder alle sind zu faul um zu schreiben g mfg mathias V16 mit submenue scroll und so weiter gibt bald !!
Falls es jemand noch brauchen kann ist hier eine neue Version. Jetzt kann man zu jedem Eintrag ein Submenue dazufügen und dieses natürlich auch mit up und down durchscrollen usw. ==> bei drücken von Enter auf dem ESC String wird das Menue verlassen. 3 Tasten für die Bedienung reichen aus ==> damit kann man das ganze auch mit einem Drehencoder realisieren! ==>Ach ja das main ist schlecht ich weis aber da gehe ich jetzt dahinter, ich wollte zuerst mal mein Menue so fertig machen. Also so besser nicht verwenden!! mfg mathias
//Hier muss die Laenge der einzelnen Submenues angegeben //werden ==> ich weis nicht wie man die Laenge von dem //jeweiligen SubMenue sonst herrausbekommt! int sublength[]={0,4,3,8}; //achtung reihenfolge beachten //siehe Beispiel!! LÖSUNG: unsigned char x = sizeof(mySUBM0)/sizeof(menueObject); so bekommst du z.B. die Länge deines ersten arrays raus. In x steht jetzt z.B. 4
hallo mathias, ich löse das mit den menues mit zwei struckt´s. ev kann mann das auch nur in einem strucht hinterlassen. 1. lcd_rom_ins_data enhält die text nummer in "struckt lcd_rom_text" einnen zeiger auf eine variable die angezeigt werden kann die länge der ascci zeichen an welche stelle im lcd display neue lcd_rom_ins_datanummer bei taste auf neue lcd_rom_ins_datanummer bei taste ab ob die variable geändert werden darf min grösse der variable max grösse der variable 1. lcd_rom_text enhält den text der in lcd_rom_ins_data angegeben ist. die taste return will ich noch zufügen um eine neue lcd_rom_ins_data nummer aufzurufen übrigens binn ich auch unsicher ob meine c-programierung konfirm ist... aber egal
Passt vielleicht nicht so ganz hier rein da in AVR-ASM aber hier meine Gedankliche, und auch funktionierende, Version eines Menü-System in ASM. Es mag vielleicht ein bißchen komplex und wirr aussehen aber durch eine passende Baumstruktur wo jeder Menüpunkt innerhalb einer Ebene auf den nächsten zeigt (0 bedeutet natürlich Ende) kann man das einfach durch hinzufügen eines neuen Menü-Eintrages erweitern. Die Anzahl der Ebenen ist rein durch die 8 Bit-Zahlen begrentzt und die Anzahl der Menüs und Submenüs ebenfalls (also max. 255) aber das sollte eigentlich reichen. In dem Programmcode sind momentan 4 Menüebenen möglich, läßt sich aber leicht erhöhen. Möchte jetzt nicht allzu viel darüber erzählen da eigentlich einigermaßen Dokumentiert wodurch eine Umsetzung in anderer Sprache möglich sein sollte. MfG Andi
Ich bin immer noch in der Denkphase, was die Programmierung eines Menüsystems angeht. Da ich in asm programmiere (mit AVR), helfen mir die C-Codes leider nicht viel, kann ich einfach nicht. Meine Idee hierbei war, ein Register in High/Lownibble aufzuteilen, um so Haupt- und Untermenüs zu unterteilen. So ist dann 0001 0000 das erste Hauptmenü, 0001 0001 das zugehörige Untermenü. 0 heißt dann keine Menüanzeige. Mit swappen der Nibbles kann ich so schnell addieren und subtrahieren. Ich bin da nicht so erweiterbar - max 15 Menüpunkte mit 15 Untermenüs, das reicht mir aber voll. Die Steuerung sollte mittels 4 Richtungstasten erfolgen, die Auswahl mit einer "Enter"-Taste. Blöd wird dann nur der Verwaltungsaufwand, wenn ich durch die Menüs durchscrollen will. Schließlich soll beim hochschalten nicht z.B. der 3. Untermenüpunkt des vorigen Menüs angezeigt werden, wenn ich grad im 3. Untermenü war. Also suche ich noch nach Alternativen bzw. anderen Lösungen. An einen Drehgeber hatte ich allerdings noch nicht gedacht... Mal sehn. winke kay
Dann kuck Dir mal das AVR-ASM weiter oben an. Das System geht für bis zu 255 Menü/Submenüs und 4 Ebenen. Vorteil ist bei dem System die einfache Erweiterbarkeit der Menü-Verkettung. Bei wirklichem Interesse gebe ich gerne Hilfestellung. MfG Andi
Habs mir schon gestern gezogen, bin aber erst jetzt dazugekommen, mal reinzuschaun. Momentan steig ich noch nicht richtig durch, wird aber schon ;) ldiw sollte wohl "load immediate word" sein? - find ich nicht auf meiner Befehlsliste, ist es ein macro? Ist insgesamt doch etwas seltsam für mich, da ich durch die set-Angaben nicht durchsteige. Wozu die 15 bytes, wenn nur eine menünummer weitergegeben wird? Oder bin ich einfach zu blöd für? Es ist auch etwas scwierig, wenn die Definitionen fehlen, da muß ich oft erst raten, was genau wie passiert. Ist die 3 beim Drehgeber der tastknopf? Ist DIPG ne Variable oder ein register? Ich würd mich jedenfalls freuen, da Hilfe zu bekommen. winke kay
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.