User manual

63 64
8.3 Reedrelais steuert Anzeige
Mit dem Reedrelais kann man die Anzeige steuern. Hier wird bei einer Annäherung des Magnets der Zähler-
stand um eins erhöht. Wird der Magnet an einem Rad befestigt, lässt sich so die Zahl der Umdrehungen anzei-
gen. Reedkontakte muss man prinzipiell entprellen, auch wenn die Kontakte meist sehr gut konstruiert sind
und durch die magnetischen Eigenschaften die Presszeit extrem kurz sein kann. Hier ist unser normales Zähl-
programm eingesetzt.
+
-
9V
1A
Reed Relais
C 7-Segment-LED
SCL
SDA
SCL
SDA
+9V
Adr:40,44,48,4C
PCF8574 T
+9V
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_22 7segment Zaehler mit Reed Relais.
#include <Wire.h>
// 8574T
#dene i2cseg7x2alsb1 (0x40>>1)
#dene i2cseg7x2amsb1 (0x42>>1)
..... wie vorher ...
// Code neu:
#dene PORTRELAIS 2 // dort das Reedrelais an PD2
void setup() {
Wire.begin(); //I2C initialisieren
pinMode(PORTRELAIS,INPUT_PULLUP); // PD2 mit Pullup fuer den Kontakt
}
void loop() {
char buffer[10]; // Ausgabe des Zaehlerstandes in ASCII
static int counter = 0; // statischer Zaehler
sprintf(buffer,“%04d“,counter); // Umrechnen INT in ASCII Code
// Reed Relais abfragen, kann prellen
if (digitalRead(PORTRELAIS)==LOW) { // wenn high->low
delay(20); // 20ms warten bis stabil // entprellen
// auch Reed Relais koennen prellen
while (digitalRead(PORTRELAIS)==LOW) { // dann warten low->high
// warten bis losgelassen !
}
counter++; // dann Zaehler hoch
delay(20); // auch nach dem loslassen nochmal warten
}
if (counter > 9999) counter = 0; // Range ist 0..9999
// Counter ausgeben
display_seg1x(i2cseg7x2bmsb1,buffer[0]); // msb zeichen/ LINKE Anzeige
display_seg1x(i2cseg7x2blsb1,buffer[1]); // ..
display_seg1x(i2cseg7x2amsb1,buffer[2]); // ..
display_seg1x(i2cseg7x2alsb1,buffer[3]); // lsb zeichen
}
Was passiert? Wenn man einen Magneten, der stark genug ist an das
Reedrelais annähert, wird der Zählerstand in der Anzeige um eins
erhöht. Soll der Zähler nochmal weiterspringen, so muss man den
Magneten erst wieder weit genug entfernen und erneut annähern.