mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Menü Steuerung / Uhr stellen


Autor: Alexander Kr (bandit1200)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo beisammen,

habe eine Steuerung mit ATmega 8 und DS1307, sowie einem Display. Die 
Steuerung an sich funktioniert. Ich kann also Daten, wie Uhrzeit oder 
Datum auf dem Display darstellen. Programmiert wurde das ganze in C.

Nun soll ein Menü dazukommen, um die Uhr stellen zu können. In weiterer 
Folge, sollen auch Alarmzeiten gestellt werden können. Hierzu habe ich 4 
Taster vorgesehen.

1- Menü/ Enter
2- Escape
3- +
4- -

Wie kann ich eine derartige Steuerung am besten lösen? Bzw. Wie könnte 
sowas aussehen?

Programm im Anhang.

Danke im Voraus für die Mühe!!!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander Kr schrieb:

> Wie kann ich eine derartige Steuerung am besten lösen?

Indem du zuallerst mal hergehst und in deinem Program erst mal ein wenig 
aufräumst. Das schreit förmlich nach dem Einsatz von ein paar 
Hilfsfunktionen.

Wenn dann deine Hauptschleife ein wenig abgespeckt ist, auf vielleicht 
10 bis 15 Zeilen (wenn überhaupt), dann holst du dir von hier

Entprellung

die Komfortroutinen zum Tastenbehandeln und baust entsprrechende neue 
Funktionen ein.

Autor: Alexander Kr (bandit1200)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Indem du zuallerst mal hergehst und in deinem Program erst mal ein wenig
> aufräumst. Das schreit förmlich nach dem Einsatz von ein paar
> Hilfsfunktionen.

Das wird sicherlich schwierig, da ich noch anfänger bin

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander Kr schrieb:
> Karl heinz Buchegger schrieb:
>> Indem du zuallerst mal hergehst und in deinem Program erst mal ein wenig
>> aufräumst. Das schreit förmlich nach dem Einsatz von ein paar
>> Hilfsfunktionen.
>
> Das wird sicherlich schwierig, da ich noch anfänger bin

Dann nimm dein C-Buch zur Hand und fang zu lernen an.

Autor: Markus S (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

arbeite an einem ähnlichem Problem. Beim beim googlen hierauf gestoßen. 
Wäre nett, wenn doch noch jemand eine Antwort posten würde.

Das Würde mir echt helfen.

Autor: Alexander Kr (bandit1200)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was meinst du den was ich mache. ich habe das gelernte eingesetzt und 
das ist dabei rumgekommen.
besser kann ich es noch ned, dafür gibt es "hilfsbereite Leute " die mir 
helfen könnten. Ratschläge deiner Art kenne ich schon und setze sie 
derzeit auch um.

Autor: Edding (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander Kr schrieb:
> besser kann ich es noch ned, dafür gibt es "hilfsbereite Leute

diese "hilfsbereiten Leute" strapazierst du aber schon gehörig.

Du schmeisst einfach deinen Code-Haufen hin, und die dürfen sich selbst 
raussuchen, wo du Probleme hast und was deine Fragen sein könnten.

Stell konkrete Fragen zu konkreten Problemen, und du wirst viel mehr 
hilfreiche Antworten erhalten.

z.B. "Wie lese ich Tastendrücke ein", oder "Wie erhöhe ich bei Druck auf 
'+' die Minuten, verhinde aber Werte größer 59?"

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander Kr schrieb:
> was meinst du den was ich mache. ich habe das gelernte eingesetzt und
> das ist dabei rumgekommen.

Ist ja ok.
Jetzt kommt eben der nächste Schritt:
Wie schreibe ich Funktionen?
Wie funktioniert das in der Sprachsyntax, was gibt es da alles zu 
beachten? Wie funktioniert Argumentübergabe? etc. etc.

> helfen könnten. Ratschläge deiner Art kenne ich schon und setze sie
> derzeit auch um.

Dann solltest du IMHO jetzt anfangen deinen Code zu durchforsten und 
funktionale Gruppen identifizieren und die in eigene Funktionen 
auslagern. Du kannst es natürlich auch bleiben lassen, nur wird dein 
Code dadurch nicht leichter zu verstehen. Mir persönlich ist das egal, 
ich bin geübt und blicke da auch noch weiter durch, selbst wenn du noch 
ein paar 100 Codezeilen in die main() rein machst. Aber du wirst in 
Bälde den Überblick verlieren.

Autor: Alexander Kr (bandit1200)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Edding schrieb:
> Du schmeisst einfach deinen Code-Haufen hin, und die dürfen sich selbst
> raussuchen, wo du Probleme hast und was deine Fragen sein könnten.

Warum bringst du den unnötig Schärfe rein. Ich schmeisse garnix.
Ich versuche ein Projekt umzusetzen und holle mir tipps wie man es 
umsetzen könnte.

Karl heinz Buchegger schrieb:
> Du kannst es natürlich auch bleiben lassen, nur wird dein
> Code dadurch nicht leichter zu verstehen.

Ich bin selbst erst dabei das zu verstehen, was ich da 
zusammengeschustert habe.Und ich weiss wie es im meinem Programm 
funktioniert. Für einen geübten sind da mind 50% überflüssig =))

Was ich machen möchte ist:
Ein Menü zum Uhrzeit und Alarmzeit einstellen.
Das Menü ist der erste Knackpunkt.
Eine alarmzeit "2er Knackpunkt" abfragen und dabei ein signal eine 
gewisse zeit lang auf einen Ausgang geben "3er Knackpunkt"
Uhr läuft schon über Ds1307 und Funktioniert dank hilfe aus dem Forum 
=))

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander Kr schrieb:

> Das Menü ist der erste Knackpunkt.

Nicht wirklich.
Ein Menü ist auch nur
  ein paar Texte auf der Anzeige
  eine Markierung welcher Text gerade der 'ausgewählte' ist.
  dazu ein paar tasten, mit denen man diese ausgewählt Markierung
  verschieben kann und dann die ausgewählte Aktion auch ausführen kann.

Wobei das großspurige 'Verschieben' auch nicht anderes ist, als die 
momentane Markierung mit einem Leerzeichen übermalen und an anderer 
Stelle die Markierung wieder hinmalen ist. Das ganze ist also einfach 
nur eine Übung im gezieltem Text an bestimmte Position hinmalen und in 
Variablen darüber Buchführen, was der Benutzer getan hat.

Die Knackpunkte sind
   Textausgabe
   Tastenabfrage

der Rest ist Schema-Arbeit.


Als Vorstufe würde ich dir empfehlen, dich mit den Tastenfunktionen aus
Entprellung vertraut zu machen. Insbesondere die 'Komfortfunktionen' 
sind da sehr zu empfehlen. Bei denen reicht es, wenn du dir im 
Demobeispiel ansiehst und auch praktisch erprobst, wie sie benutzt 
werden. Die musss man nicht verstehen, dazu funktionieren sie zu gut, 
als das man sie wegen Nichtverstehens der ISR links liegen lässt.

Autor: Alexander Kr (bandit1200)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Als Vorstufe würde ich dir empfehlen, dich mit den Tastenfunktionen aus
> Entprellung vertraut zu machen. Insbesondere die 'Komfortfunktionen'
> sind da sehr zu empfehlen.

ziehe ich mir gleich rein.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.