User manual
21 22
Das Zählen geschieht im Sekundentakt. Man kann nun eine primitive Stoppuhr bauen, indem man einen Taster
zur Freigabe des Zählvorgangs verwendet.
Unten noch eine kleine Tabelle, die beim Umrechnen hilft. Wir werden später noch eine komfortablere Stopp-
uhr mit dezimaler Ausgabe bauen.
Die Taste ist diesmal mit Port 6 und 7 verbunden, wir verwenden hier Port 7, der „Kurzschluss“ zu Port 6 stört
nicht weiter, da er auch als Eingang geschaltet ist (ohne Pullup).
Der Counter zählt nun solange, wie die Taste gedrückt gehalten wird.
+
-
9V
1A
Downsi de
UP
LED
LED
LED
LED
Tabelle Umrechnung Anzeige nach Dezimal:
binär dezimal binär dezimal
0000 0 1000 8
0001 1 1001 9
0010 2 1010 10
0011 3 1011 11
0100 4 1100 12
0101 5 1101 13
0110 6 1110 14
0111 7 1111 15
4.5 Binäres Zählen - durch Taste gesteuert
// DE_5 Binaeres Zaehlen wird durch Taste gesteuert
#dene PORTLED2 2 // LEDs an PD2..PD5
#dene PORTLED3 3 // damit Zuordnung
#dene PORTLED4 4 // denieren
#dene PORTLED5 5
#dene SWITCH7 7 // Die Taste diesmal an Port PD7
void setup() { // alle Ein- und Ausgaenge hier 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
// Ein Pullup ist eine Art interner Widerstand. Wenn man die Taste nicht drueckt
// ist der Eingang normalerweise offen und nicht deniert. Durch den Pullup
// liefert ist er High und liefert ein 1-Signal
}
void loop() {
static int counter = 0; // wichtig wieder Denition als Static
if (counter & 1) { // Bit 0 pruefen 0..3 nacheinander
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); //
// Nun die SToppzeit denieren
delay(1000); // Eine weitere Sekunde warten =1000ms
// *** Tastenabfrage hier:
if (digitalRead(SWITCH7) == LOW) { // zaehlen solange gedrueckt
counter = (counter + 1) & 0xf; // 0..15 Zaehler im Kreis
} // nur wenn gedrueckt sonst nicht zaehlen
} // Schleifenende
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? Wenn man die Taste gedrückt hält, dann und nur dann zählen die vier LEDs im Sekun-
dentakt binär von 0000 (alle aus), dann 0001, 0010, 0011 bis 1111 (alle an). Bei losgelassener Taste
bleibt der letzte Anzeigezustand erhalten.










