Countdown Timer mit LCD-Display und Keypad Eingabe

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Countdown Timer mit LCD-Display und Keypad Eingabe

      Hallo zusammen,

      vielleicht ist es für dieses Projekt noch etwas zu früh, mangels meiner noch geringen Erfahrung mit dem Programmieren in BASCOM.
      Habe mich bereits schon belesen, ist aber noch einen Tick zu hoch für mich.

      Aber mich interessiert das schon sehr und wüsste gerne etwas mehr.

      Also, ich möchte einen universellen Contdown Timer mit LCD-Display und Eingabe der Ablaufzeit per Keypad aufbauen.
      Im 16x2 Display soll in der ersten Zeile, mittels Keypad die Zeit eingegeben werden und zwar im Format MM:SS.
      Durch einen Tastendruck auf dem Keypad soll die Zeit dann in der zweiten Zeile des Displays beginnen abzulaufen.
      Ist diese dann abgelaufen, soll ein elektromechanischer Summer einen kurzen Piepston von sich geben.
      Die Zeit sollte dabei sehr präzise ermittelt werden, darum dachte ich an einen Uhrenquarz 32.768 kHz

      Die Frage ist nun, wie realisiere ich das in BASCOM?

      Könnt ihr mir da etwas Hilfestellung geben, oder ist es besser wenn ich mich noch mehr in das Thema einlese?

      Viele Grüße
      Nadine
    • Nadine wrote:

      Könnt ihr mir da etwas Hilfestellung geben, oder ist es besser wenn ich mich noch mehr in das Thema einlese?
      Natürlich, möglicherweise.
      Das Projekt muß ja nicht mit dem ersten Code sofort alles können. Ich würde einfach loslegen mit bekannten Routinen.
      z.B. einer Lcd ausgabe oder dem Piep. Und dann alles aufeinander Aufbauen. Wenn dann was nicht funktioniert ist der Code noch überschaubar und könnte von uns nachvollzogen werden. Dabei ist der Simulator sehr nützlich; andererseits verträgt so ein Avr 10.000 "flashungen" so das nichts dagegen spricht jede Änderung gleich zu brennen um die Funktion sofort sehen zu können.
    • Hallo Nadine,
      an welche Platinengröße hast Du gedacht? Ist 100 x 160 zu groß? Wenn nicht, hätte ich was für Dich. Das Projekt wollte ich schon lange ins Lexikon stellen. Das wäre dann mal ein Antrieb das zu machen. Platinen habe ich fertig dafür da. Schreib mal, ob das passt, dann mache ich das stückchenweise mit Dir, so wie mit dem Attiny13. Hatte bislang nicht die Zeit, das fertig zu schreiben, dass wird jetzt aber besser. Ich poste nachher mal Bilder, hab ich am Tablet nicht.

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Hallo @Nadine

      Wenn ich ein Projekt starte ist eins der ersten Schritte den richtigen Prozessor auszuwählen.
      Hierbei ziele ich allerdings aus die benötigten IO-Pins ab.

      In Deinem Fall ist ja doch einiges anzuschließen. Da war Display, Keypad, Quarz, Peeper, ISP.
      Man muss nun eine Controller auswählen, der genügend Pins hat. Dann macht man am besten vorab einen kleinen Anschlussplan (kein Schaltbild), an welchen Pin man was am besten anschließt.
      Als Beispiel sollte man das Display nicht an den XTAL-Anschlüssen anschließen.

      Sind alle notwendigen Anschlüsse am AVR verteilt, kann man eigentlich loslegen.
      Schaltplan ist immer ne gute Sache, wenn man einen anfertigt. Denn sobald man da nach geraumer Zeit etwas ändern will, dann braucht man das.

      Im 2. Schritt muss man sich überlegen, wie das Programm genau funktionieren soll.
      Also was steht nach dem Einschalten auf dem Display. Wie genau soll die Eingabe der Zeit funktionieren?
      (Also Zeit wird vor Eingabe bereits mit 00:00 angezeigt und mit jeder Taste Sprinkt der Cursor einse Stelle weiter? Oder Ist die Anzeige blank und zeigt immer nur das eingegebene an? Doppelpunkt wird automatisch ergänzt?)
      Welche Taste soll den Timer starten? Wenn der Timer läüft, soll der unterbrechbar sein, wenn ja mit welcher Taste? Wird dann die Zeit ganz gelöscht oder nur angehalten? Wie gehts dann weiter

      Du siehst, man sollte sich erst mal überlegen, wie der Programmablauf sein soll. Erst dann kann man mit dem Programmieren beginnen.

      Um den Ablauf festzuhalten kann man Tabellen nehmen oder man schreibt das in Stichworten textuell nieder. Denn wenn man längere Zeit Programmiert oder unterbrechen muss, vergisst man gerne wieder Details von dem Grundgedanke. Das hilft auch auf Linie zu bleiben.

      Dann geht's ans Programmieren.

      Um genaue Zeiten zu erhalten muss man keinen Uhrenquarz nehmen. Man kann ein ganz normales Quarz nehmen, dann läuft auch das Programm schneller. Für den Zeittakt empfehle ich unbedingt einen Timer im CTC-Mode zu betreiben, der z.B. im Sekundentakt (oder ein Vielfaches davon) ein Flag setzt. Dieses Flag verwendest du dann, um den Timer runter zu zählen.

      Für die Abfrage der Keypads gibts bestimmt hier schon fertigen Code, der nur angepasst werden muss.Display und Beeper sollten auch kein Problem darstellen. Aber Bascom hat auch einen eigenen Befehl dafür (GetKBD). Allerdings muss man dann die notwendigen Anschlüsse beachten (Bascom-Hilfe).

      Je nach Komplexität des Programmablaufs kann man auch mal über eine Statemachine nachdenken. Ein Tutorial gibts im Lexikon.

      Ich denke hier sind alle gerne bereit, dir mit Tips und Hilfe zur Seite zu stehen. Das ist hier wohl so ein Markenzeichen. Das ist aber auch der Zweck eines solchen Forums.
      Kaum macht man es richtig - und schon geht's!
    • @Nadine ich geb' mal zum Thema keypad was dazu: schau mal hier gameroom-austria.info/cms/inde…s/menu-prog-matrixkeycalc das ist ein Werk von @Zitronenfalter. Sowas geht sehr gut und ist sparsam im pin-Verbrauch. Als Tipp von meiner Seite dazu, wenn du die Widerstände mit dem Programm gewählt hast, dann messe die einzelnen Werte mit dem Multimeter nach und trage dann diese in dem tool ein. Dann bekommst du eine genauere Werteliste.
      Ob jetzt das mit @ceperigas Vorschlag kompatibel ist, weiß ich jetzt nicht.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • stefanhamburg wrote:

      Bei myavr.de ein Experimentierboard und ein LC-Display kaufen
      eine Alternative wäre ein arduino. Ob's ein Uno oder Mega ist, ist am Anfang vielleicht eine Preisfrage, aber für beide Typen ist die Anbindung an bascom doch recht einfach. Es gibt halt jede Menge shields und Zubehör dafür und ist halt auch recht preisgünstig.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Pluto25 wrote:

      Nadine wrote:

      Könnt ihr mir da etwas Hilfestellung geben, oder ist es besser wenn ich mich noch mehr in das Thema einlese?
      Natürlich, möglicherweise.Das Projekt muß ja nicht mit dem ersten Code sofort alles können. Ich würde einfach loslegen mit bekannten Routinen.
      z.B. einer Lcd ausgabe oder dem Piep. Und dann alles aufeinander Aufbauen. Wenn dann was nicht funktioniert ist der Code noch überschaubar und könnte von uns nachvollzogen werden. Dabei ist der Simulator sehr nützlich; andererseits verträgt so ein Avr 10.000 "flashungen" so das nichts dagegen spricht jede Änderung gleich zu brennen um die Funktion sofort sehen zu können.
      Hallo Pluto25,

      Nun ja, das Display ansteuern und den Summer piepsen lassen, sollte gehen. Nur müssen diese einzelnen Codesegmente zu einem vernünftigen Code zusammengefügt werden. Da muss man sich dann herantasten. Aber wenn ein gewisses Grundgerüst vorhanden ist, lässt sich ja auch einiges noch erweitern.
    • ceperiga wrote:

      Hallo Nadine,
      an welche Platinengröße hast Du gedacht? Ist 100 x 160 zu groß? Wenn nicht, hätte ich was für Dich. Das Projekt wollte ich schon lange ins Lexikon stellen. Das wäre dann mal ein Antrieb das zu machen. Platinen habe ich fertig dafür da. Schreib mal, ob das passt, dann mache ich das stückchenweise mit Dir, so wie mit dem Attiny13. Hatte bislang nicht die Zeit, das fertig zu schreiben, dass wird jetzt aber besser. Ich poste nachher mal Bilder, hab ich am Tablet nicht.

      Gruß Christian
      Hallo Christian,
      also ich bin da grundsätzlich offen und auch bereit, andere Wege zu gehen. Eine Platinengröße 100 x 160 sollte doch ausreichen finde ich. Es kommt natürlich auf den Controller und den Umfang deines Projektes an.

      Gruß
      Nadine
    • Hallo Nadine,
      hier mal Details, hatte ich im Forum schon vorgestellt, aber bislang noch keine Zeit das einzustellen. Jetzt sieht das mit der Zeit schon besser aus. Das Projekt verwende ich jetzt schon sehr lange für alle möglichen Aufgaben. Hatte das seinerzeit sehr flexibel entwickelt. Inzwischen habe ich auch einen Einbaurahmen für den 3D- Druck entwickelt, damit baue ich das Bedienfeld direkt in Schaltschränke ein.

      Ausstattung:

      • 16 (17) Tasten Bedienfeld (Matrix)
      • 2 oder 4 Zeilen Textdisplay
      • Buzzer
      • 2 LED´s
      • Quarzeinbau vorgesehen
      • MAX 232 serielle Schnittstelle auf SUB9
      • Controller ATMEGA 48, 8, 88, 168 oder 328
      • Erweiterungsplatine über I²C vorhanden (je 8 Ein- und Ausgänge)
      • RTC- clock (batteriegepuffert) auf der Erweiterungsplatine vorhanden
      • Erweiterungsplatine kaskadierbar, im Sandwich montierbar
      • Aufbau von Folientastatur möglich
      Mein Plan ist, die Platine stückweise zu programmieren (in Art des Mikrocontrollerkurses). Schlussendlich kommt ein universelles Projekt dabei raus. Platinen wären vorhanden, bräuchte keiner zwingend herzustellen.

      Hier mal was Visuelles:

      Terminalplatine 1.png

      Terminalplatine 2.png Terminalplatine 3.png
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Hier mal zwei Fotos von einer erweiterten Variante, montiert auf einem Einbaurahmen, den ich im 3D- Druck hergestellt habe. Die Siebensegmentplatinen sind China- Standard mit MAX 7219, die Taster- und LED- Platine werden von der Ereiterungsplatine aus angesprochen und werden einfach über Flachbandkabel verbunden. Diese Steckverbindungen sind auf der Erweiterungsplatine schon vorgesehen.
      Die schwarzen Rechtecke auf der Fronzplatte sind normalerweise nicht sichtbar, das liegt am Foto selber.

      Terminalplatine 4.jpgTerminalplatine 5.jpg
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Nadine wrote:

      Aber wenn ein gewisses Grundgerüst vorhanden ist, lässt sich ja auch einiges noch erweitern.
      Richtig das muß ja nicht als "Wollmilchsau" geboren werden. Wenn es zuerst nur Piep sagt, weiß man schon "es lebt".
      Als sehr nützlich haben sich viele Print ergeben. Da sieht man im Simulator (oder real am Terminal) was es macht und erkennt gut an welcher Stelle es hakt - falls es hakt.