quad
15.09.2005, 18:49
Hallo
In Bascom kenne ich mich noch nicht so super mit den etwas anspruchsvolleren Codes, so If-Schleifen sind kein Problem aber gerade mit dem Timer und EEPRom...und um nicht 5 Threads aufzumachen habe ich hier mal alle meine kleinen Stolpersteine gesamelt und hoffe dass ihr mir helfen könnt.
1. Einmalige Zeitverzögerung beim Einschalten des Roboters
Bis jetzt ist es so...ich schalte meinen Roboter ein und er beginnt sofort zu fahren. Das ist ziemlich nervig. Es ist sicher nicht schwer aber wie mache ich eine einmalige Zeitverzögerung? Ich fand da nichts...
$regfile = "m8def.dat" 'ATmega8
$crystal = 3686411 'Quarz: 3686411 Hz
Do
If... 'hier mein Code
Loop
Wo muss ich eine Verzögerungszeit einschreiben? Klar könnte ich sie zwischen Do-Loop schreiben aber dann würde ja nach jeder (sensorbedingten) Aktion die Wartezeit kommen
2. Fahrt seit letzter Akkuladung
Schon bisschen schwieriger ist folgendes. Es soll quasi wie folgt ablaufen:
Der Akku ist geladen, ich lege ihn ein und starte den Roboter, der Roboter sucht im EEPRom nach einer bereits gespeicherten Zeit (dazu später mehr) und baut darauf auf oder, wenn diese nicht exisitert fängt er bei null an zu zählen. (Ausgabe auf LCD Display, aber die Ausgabe würde ich sicher hinkriegen wenn ich den Timer erst mal richtig zum laufen kriege). Wenn ich nun auf einen Pausetaster drücke soll die Zeit stoppen und die bisherige Zeit im EEPRom des AVR vermerkt werden. Ab hier gibts 2 Möglichkeiten: Die Pause-Zeit läuft ab und der Timer zählt wieder weiter...
oder der Roboter wird ausgeschaltet. Schaltet man ihn wieder an soll dieser Wert aus dem EEPRom gelesen werden und von diesem Wert aus weitergezählt werden (wie am Anfang)...bis man wieder auf diesen Taster drückt (gleiches Spiel nochmal) oder den "Löschentaster" um den Wert (neue Akkuladung) auf null zu setzen und das Spiel beginnt von vorne.
Ich könnte dazu allerhöchstens einige Codeschnippsel zusammenbringen, wie das Schreiben eines festen Wertes in den EEPRom oder das lesen aus diesem aber nicht die Vor- und Weiterverarbeitung durch den Timer.
3. Ab Tasterdruck Zeit zählen
Ich denke wenn ich das da oben zusammenhab dürfte das hier kein Problem sein. Trotzdem schreib ich das hier mal.
Also sobald ein Taster gedrückt wird soll eine Zeit in Sekunden laufen (wieder auf LCD Display übertragen, aber bis jetzt nur Nebensache).
Beispiel: Ich drücke auf einen Taster, der Roboter stoppt für 20 Sekunden. Diese Zeit soll (am LCD) Sekundenweise hochgezählt werden.
Eigentlich will ich dies alleine schaffen aber mehr als ein paar Codeschnippsel bring ich einfach nicht zusammen. Das Zusammenspiel zwischen den einzelnen Komponenten (Tastendruck -> Timer -> (LCD) -> EEPRom -> ...) fehlt mir
EDIT: Ich erwarte nicht, dass hier jmd. mit nem fertigen Code kommt, aber paar Anregungen, Links zu Websites wo ich sowas finde und so wären gut :)
Gruß
quad
In Bascom kenne ich mich noch nicht so super mit den etwas anspruchsvolleren Codes, so If-Schleifen sind kein Problem aber gerade mit dem Timer und EEPRom...und um nicht 5 Threads aufzumachen habe ich hier mal alle meine kleinen Stolpersteine gesamelt und hoffe dass ihr mir helfen könnt.
1. Einmalige Zeitverzögerung beim Einschalten des Roboters
Bis jetzt ist es so...ich schalte meinen Roboter ein und er beginnt sofort zu fahren. Das ist ziemlich nervig. Es ist sicher nicht schwer aber wie mache ich eine einmalige Zeitverzögerung? Ich fand da nichts...
$regfile = "m8def.dat" 'ATmega8
$crystal = 3686411 'Quarz: 3686411 Hz
Do
If... 'hier mein Code
Loop
Wo muss ich eine Verzögerungszeit einschreiben? Klar könnte ich sie zwischen Do-Loop schreiben aber dann würde ja nach jeder (sensorbedingten) Aktion die Wartezeit kommen
2. Fahrt seit letzter Akkuladung
Schon bisschen schwieriger ist folgendes. Es soll quasi wie folgt ablaufen:
Der Akku ist geladen, ich lege ihn ein und starte den Roboter, der Roboter sucht im EEPRom nach einer bereits gespeicherten Zeit (dazu später mehr) und baut darauf auf oder, wenn diese nicht exisitert fängt er bei null an zu zählen. (Ausgabe auf LCD Display, aber die Ausgabe würde ich sicher hinkriegen wenn ich den Timer erst mal richtig zum laufen kriege). Wenn ich nun auf einen Pausetaster drücke soll die Zeit stoppen und die bisherige Zeit im EEPRom des AVR vermerkt werden. Ab hier gibts 2 Möglichkeiten: Die Pause-Zeit läuft ab und der Timer zählt wieder weiter...
oder der Roboter wird ausgeschaltet. Schaltet man ihn wieder an soll dieser Wert aus dem EEPRom gelesen werden und von diesem Wert aus weitergezählt werden (wie am Anfang)...bis man wieder auf diesen Taster drückt (gleiches Spiel nochmal) oder den "Löschentaster" um den Wert (neue Akkuladung) auf null zu setzen und das Spiel beginnt von vorne.
Ich könnte dazu allerhöchstens einige Codeschnippsel zusammenbringen, wie das Schreiben eines festen Wertes in den EEPRom oder das lesen aus diesem aber nicht die Vor- und Weiterverarbeitung durch den Timer.
3. Ab Tasterdruck Zeit zählen
Ich denke wenn ich das da oben zusammenhab dürfte das hier kein Problem sein. Trotzdem schreib ich das hier mal.
Also sobald ein Taster gedrückt wird soll eine Zeit in Sekunden laufen (wieder auf LCD Display übertragen, aber bis jetzt nur Nebensache).
Beispiel: Ich drücke auf einen Taster, der Roboter stoppt für 20 Sekunden. Diese Zeit soll (am LCD) Sekundenweise hochgezählt werden.
Eigentlich will ich dies alleine schaffen aber mehr als ein paar Codeschnippsel bring ich einfach nicht zusammen. Das Zusammenspiel zwischen den einzelnen Komponenten (Tastendruck -> Timer -> (LCD) -> EEPRom -> ...) fehlt mir
EDIT: Ich erwarte nicht, dass hier jmd. mit nem fertigen Code kommt, aber paar Anregungen, Links zu Websites wo ich sowas finde und so wären gut :)
Gruß
quad