Eine mögliche Lösung:
Ausgabe:1:09 1:08 ... 0:58 0:57 ... 0:02 0:01 0:00 |
AufgabeSchreibe ein Programm für eine Stopp-Uhr
HinweiseBefehlszeile:endet mit ';' oder '}' Variable int:int bedeutet ganze Zahlen von -32768 bis 32767 Serielle Ausgabe:void setup() { Serial.begin(9600); Serial.println("0:00"); } Schleife:while (Bedingung stimmt) { // Beginn der Schleife ... tue das ... // Ende der Schleife } Abfrage:if (Bedingung stimmt) { // ja ... tue das ... } else { // nein ... tue das ... }
|
Lösungsansatz:
AufgabeÄndere das Programm für die Stopp-UhrHinweiseUnterprogramm:void neu(int TEST) { // tue was mit der Variablen TEST }
Tasterabfrage:// Der Taster wird an Pin 7 // und GND angeschlossen #define Pin_TASTER 7 void setup() { // Pin 7 auf HIGH = 1 setzen pinMode(Pin_TASTER, INPUT_PULLUP); } void loop() { if (digitalRead(Pin_TASTER) == LOW) { // Taster ist gedrückt delay(1000); // tue was } }
|
Lösungsansatz:
AufgabeErhöhe die GenauigkeitDurch die Verwendung von delay(1000), ergibt sich eine Wartezeit von 1000 ms. Die Rechenzeit für die Abfragen werden aber nicht berücksichtigt! Die Stoppuhr läuft ungenau!
Bei jedem Tastenruck erfolgt ein Neustart der Uhr.
Hinweiseunsigned long last = 0; void setup() { last = millis(); } void loop() { if (millis() - last >= 1000) { // tue was jede Sekunde } ... last = millis(); } LösungMögliche Lösung für eine auf Null zählende Stoppuhr ohne 'delay' mit Start über einen 'Taster'.
|