Hallo Leute!!
Ich hab ein Problem mit dem programmieren eines atmega8 LCD Displays
4x16.
Ich schaffe es Texte per Tasten druck erscheinen zu lassen^^. Ich habe 4
Taster und möchte ein Menü erstellen. 2 Tasten sollen RAUF und RUNTER
fahren. Auf der ersten Spalte hab ich Platz gelassen weil ich dort einen
Pfeil haben will welches mir zeigt, welches Programm ich wähle. Könnt
ihr mir bitte helfen den Pfeil so zu programmieren das es beim
RUNTER_taste nach unten geht und anders rum. Bitte!!
Danke im Voraus ;)
Tony schrieb:> hy ja ich weiss eig voll unnötig!! aba ich weiss nicht weiter.
Wurde doch schon gesagt.
Dein Menü ist in Zeilen aufgeteilt.
Wenn du in die 3. Zeile einen > haben willst, dann musst du eben den
Cursor in die 3. Zeile schicken und dort den > hinmalen (und von der
Stelle wegnehmen, an der er vorher war).
Woher weißt du, in welche Zeile du den > brauchst?
Indem du eine Variable hast, die dir genau das festhält.
Bei jedem Tastendruck 'runter' erhöhst du diese Variable um 1, bei jedem
Tastendruck 'rauf' verringerst du ihn. D.h. der Inhalt dieser Variablen
sagt dir zu jedem Zeitpunkt, welche Zeile (die Nummer der Zeile) die
gerade 'aktive' ist. D.h. das ist die, welche ausgewählt wird, wenn der
Benutzer auf 'jetzt machen' drückt.
Und lern erst mal ein bischen C. Ohne sich die Funktionalität in
Funktionen aufzuteilen, macht das alles wenig Sinn.
Und nochwas:
Verabschiede dich von der Technik, das LCD ständig zu löschen und neu zu
bechreiben. Genau das willst du nicht, weil sonst alles flackert. Du
malst EINMAL deine 4 Menüpunkte aufs LCD und dann veränderst du nur
noch, wo der > hinkommt, abhängig davon, welche Taste gedrückt wurde.
Da fällt mir noch was ein.
Du brauchst als aller erstes erst mal eine vernünftige Tastenauswertung!
Entprellung
Mit deiner Technik wertest du aus, ob eine Taste gedrückt ist! Das hilft
dir aber nicht weiter. Du musst einen einzelnen Tastendruck sauber
erkennen können.
Tony schrieb:> Danke für die Erklärung. :D> aber wie lösche ich den Pfeil?
:-)
Indem du ein Leerzeichen 'darüber' malst.
Jede LCD-Position zeigt immer irgendetwas an. Und wenn diese Position
'nichts' anzeigt, dann zeigt sie eben ein Leerzeichen an.
Aber wie schon gesagt:
Ehe du ans Menü gehen kannst, brauchst du erst mal eine ordentliche
Erkennung eines Tastendrucks. Ehe du das nicht hast, geht gar nichts mit
dem Menü, so wie du dir das vorstellst.
Tony schrieb:> Voll dankee :D>> Ich hab jetzt ein anderes Problem wie kann ich den hier ">" als "pfeil"> defienieren?
Was meinst du mit 'hier'?
Du schreibst das in deinem Programm einfach hin.
lcd_move_cursor( actLine, 0 );
LOG_str(" ");
actLine++;
lcd_move_cursor( actLine, 0 );
LOG_str(">");
lcd_move_cursor(LCD_LINE_2,0);
LOG_str(" ");
LCD_LINE_2++;
lcd_move_cursor(LCD_LINE_2,0);
LOG_str(">");
ich habs so hingeschrieben aber es zeigt mir einen ERROR bei der 3 Zeile
^^
ERROR: error: lvalue required as increment operand
Tony schrieb:> lcd_move_cursor(LCD_LINE_2,0);
LCD_LINE_2 ist wahrscheinlich bei dir eine KONSTANTE.
Die kannst du nicht verändern!
Kann es sein, dass dir das Konzept einer Variablen überhaupt nicht sagt?
Wenn ja, dann solltest du erst mal ein C-Buch von Anfang an studieren.
Das sind Grundlagen. Sozusagen: erste Klasse, erste Stunde.
Ohne gewisse Grundkentnisse in C geht es nunmal nicht.
Ja tschuldigung ich sollte mir wirklich das alles nochmal anschauen, nur
hab ich jez meine Matura und hab keine Zeit das alles neu zu lernen. Das
Display ist ein Teil der Matura bei mir. Desshalb bräuchte ich eure
Hilfe!!
Wenn es jetzt eine Konstante ist wie könnte ich es dann machen? Ich komm
irgendwie nicht drauf :D
Danke im Voraus ^^
So ist es vordefiniert:
#define LCD_LINE_1 0x80 /* bit 7 is always set: 0x80 = 0x00
*/
#define LCD_LINE_2 0xC0 /* 2nd line at position 40 */
#define LCD_LINE_3 0x90 /* 3nd line at position 20 */
#define LCD_LINE_4 0xD0 /* 4nd line at position 40 */
>Wenn es jetzt eine Konstante ist wie könnte ich es dann machen?
Indem Du es machst, wie Karl Heinz angeregt hat. (Mach' immer das was
Karl Heinz sagt :-) )
>Kann es sein, dass dir das Konzept einer Variablen überhaupt nicht sagt?>Wenn ja, dann solltest du erst mal ein C-Buch von Anfang an studieren.
Das Du mit der Matura (ich will 'nen Almdudler) zu tun hast, ersetzt
keine Kenntnisse über Variablen. Eines von beiden musst Du jetzt
vorziehen.
Tony schrieb:> Ja tschuldigung ich sollte mir wirklich das alles nochmal anschauen, nur> hab ich jez meine Matura und hab keine Zeit das alles neu zu lernen. Das> Display ist ein Teil der Matura bei mir.
In dem Fall bin ich raus.
Ich will nicht, dass jemand mit 0 Ahnung einen Abschluss bekommt (egal
in was)
> Desshalb bräuchte ich eure Hilfe!!> Wenn es jetzt eine Konstante ist wie könnte ich es dann machen?> Ich komm irgendwie nicht drauf :D
Du brauchst keine Hilfe, du brauchst einen Dummen, der deine
Maturaarbeit für dich macht. Interessant wird es allerdings dann, wenn
du vor der Kommission stehst und der Vorsitzende ein paar Fragen dazu
hat.
Hmm schrieb:>>Wenn es jetzt eine Konstante ist wie könnte ich es dann machen?> Indem Du es machst, wie Karl Heinz angeregt hat. (Mach' immer das was> Karl Heinz sagt :-) )
In dem Fall nicht ganz.
Seine Zeilenkonstanten sind so (wie ich jetzt weiß), dass man erst mal
eine Zwischenfunktion brauchen würde um eine ordentliche, bei 0
beginnende Nummerierung der Zeilen zu erreichen.
Allerdings ist auch das nichts, was jemanden mit Grundkentnissen vor
unüberwindliche Probleme stellen sollte.
Und vor allen Dingen sollte er alleine drauf kommen, dass er sowas
braucht!
Hmm schrieb:> Mist. Jetzt habe ich erst verstanden das das für das Abitur gebraucht> wird.
Genau.
Matura ist der österreichische Begriff für Abitur.
Die einzige Schule, die ich kenne, in der auch praktisch gearbeitet
werden muss, ist eine HTL (Höhere Technische Lehranstalt). Daher vermute
ich mal, dass es sich um genau so eine Schule handelt. Da aber mit dem
Abschluss dieser Schule gewisse Rechte verbunden sind (unter anderem
darf man sich nach 3 Praxisjahren 'Ingenieur' nennen) lehne ich es ab,
unter einem gewissen Niveau zu helfen. Dass sich mal wer verrennt ist
schon ok. Passiert uns allen mal. Aber ein gewisses Niveau verlange ich
von einem angehenden Ingenieur.
Und wenns keine HTL ist: Wie kommt man dazu, sich eine Maturaarbeit
selbst auszusuchen, von der man keine Ahnung hat?
>Matura ist der österreichische Begriff für Abitur.
Das wusste ich schon. Deswegen die Piefke-Anspielung mit dem Almdudler.
Nur, das unser Thema hier für die Arbeit notwendig war, das hatte ich
nicht verstanden. Ich dachte, er müsste sich zwischen Matura und Hobby
entscheiden.
Na gut. Lassen wir das. Ich wollte nur das Du weisst das ich weiss...
LOL