User manual

49 50
6.6 Siebensegment-Anzeige - zählen
In dem Beispiel wollen wir einen einfachen Zähler realisieren. In der Variable „counter“ wird der Zählerstand
gespeichert. Das Programm erhöht den Wert alle 500ms um eins. Auf einer zweistelligen Siebensegment-
Anzeige kann man aber nur maxmial den Wert 99 darstellen. Daher wird in einer Schleife der Zählerstand von
„counter“ mit 99 verglichen, wenn dieser höher sein sollte, wird er wieder auf 0 zurückgesetzt. Damit zählt
„counter“ von 0 bis 99 und beginnt dann wieder von vorne.
Zu beachten ist, dass die Schleife etwas länger als 500ms braucht, der Befehl „delay(500)“ wartet 500ms, aber
es addieren sich die Ausführungszeiten der anderen Befehle dazu. Will man präziser arbeiten, muss man Timer
verwenden und diesen abfragen.
+
-
9V
1A
C 7-Segment-LED
SCL
SDA
SCL
SDA
+9V
Adr:40,44,48,4C
PCF8574 T
+9V
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
C
// DE_16 7segmentanzeige zaehlen -- Anzeige als I2C Brick
#include <Wire.h>
// 8574T
#dene i2cseg7x2alsb1 (0x40>>1)
...............
siehe auch Anhang -- oder aus dem vorherigen Beispiel DE_16
...............
// Start einmal, nur I2C Initialisieren
void setup() {
Wire.begin(); // I2C Library
}
void loop() { // In der Schleife
char buffer[10]; // Zeichenbuffer verwenden
static int counter = 0; // Zaehler statisch bei 0 beginnend
sprintf(buffer,“%02d“,counter++); // Umrechnen Integer auf Zeichen
if (counter >99) counter = 0; // Zaehler soll nur zwischen 0..99 laufen
// Counter ausgeben als zwei Ziffern, daher Buffer 0 und 1
display_seg1x(i2cseg7x2amsb1,buffer[0]); // msb Zeichen
display_seg1x(i2cseg7x2alsb1,buffer[1]); // lsb Zeichen
delay(500); // Ca. alle 500ms hochzaehlen.
} // Ende der Schleife
Was passiert? Auf der Siebensegment-Anzeige erscheint
nacheinander die Zahlenfolge 00, 01, ... 99. Alle 1/2 Sekun-
de erfolgt ein Wechsel. Nach 99 kommt wieder der Wert
00.