User manual
23 24
4.6 Zählgeschwindigkeit steuern
Nun kann man mit der Taste auch noch mehr tun, zum Beispiel die Geschwindigkeit des Zählvorgangs einstel-
len. Die Änderung im Programmcode ist minimal. Anstatt den Zähler freizugeben, wird nun der delay() geän-
dert. Hier als Beispiel zwischen schnellem Zählen mit 200ms und dem Zählen mit 1000ms = 1sec.
Insgesamt ist es wichtig, bei dieser Vorgehensweise zu wissen, dass die Zählgeschwindigkeit nicht ganz genau
ist. Der Delay verzögert die Ausführung um die vorgegebene Zeit, i.A. quarzgenau, aber die restlichen Befehle
bis zum nächsten delay() müssen auch berücksichtigt werden. Will man ein exakteres Ergebnis, muss eine
andere Methoden gewählt werden. Der Quarz auf dem Prozessor des NANO gibt den Takt an. Auch er selbst ist
nicht ganz exakt, aber viel genauer als unser Abfrage-Verfahren.
Downsi de
UP
+
-
9V
1A
LED
LED
LED
LED
// DE_6 Zaehlgeschwindigkeit einstellen
#dene PORTLED2 2 // PORTs PD2-PD5
#dene PORTLED3 3 // An symbolische
#dene PORTLED4 4 // Namen zuordnen
#dene PORTLED5 5
#dene SWITCH7 7 // Taster an PD7
void setup() { // IO denieren
pinMode(PORTLED2,OUTPUT); // Port 2 als Ausgang schalten
pinMode(PORTLED3,OUTPUT); // Port 3 als Ausgang schalten
pinMode(PORTLED4,OUTPUT); // Port 4 als Ausgang schalten
pinMode(PORTLED5,OUTPUT); // Port 5 als Ausgang schalten
pinMode(SWITCH7,INPUT_PULLUP); // Port 7 als Eingang mit Pullup
}
void loop() {
static int counter = 0; // whichtig muss static sein
if (counter & 1) { // Bit 0 pruefen dann 1,2,3
digitalWrite(PORTLED4,HIGH); // rechte LED
} else digitalWrite(PORTLED4,LOW); //
if (counter & 2) { // Bit 1 pruefen
digitalWrite(PORTLED5,HIGH); // linke LED
} else digitalWrite(PORTLED5,LOW); //
if (counter & 4) { // Bit 2 pruefen
digitalWrite(PORTLED3,HIGH); //
} else digitalWrite(PORTLED3,LOW); //
if (counter & 8) { // Bit 3 pruefen
digitalWrite(PORTLED2,HIGH); //
} else digitalWrite(PORTLED2,LOW); //
//
if (digitalRead(SWITCH7) == LOW) { // schnell wenn gedrueckt
delay(200); // 200 ms warten = 200Milisekunden
} else { // Sonst langsamer im Sekundentakt
delay(1000); // 1000 ms warten
} // Dann weiter
// es wird immer gezaehlt.
counter = (counter + 1)& 0xf; // 0..15 Zaehler
}
SCLS DA
+9V
A0
A1
Tx
Rx
PD2
SCLKMOSI
PD3
PD 6
PD 4
PD 5
PD 7
A7
A3
A2
A6
NANO
to
Br ick`R`
3,3V 5V
USB
B0
SS
MISC
B1
I²C
Was passiert? Die vier LEDs zählen bei gedrückter Taste alle 200ms sonst im Sekundentakt binär von
0000 (alle aus), dann 0001, 0010, 0011 bis 1111 (alle an).










