Das Set enthält drei dieser Sensoren
Stoß Sensor:
Zwischen dem Pin S und dem Pin GND – ist der Sensor geschaltet. Ein 10kOhm Widerstand ist als Pullup-Widerstand zwischen S und dem mittleren Pin geschaltet. Der Sensor selbst besteht aus einem länglichen Kunststoffkästchen indem sich eine Feder befindet die am Ende mit einem Kontakt versehen ist. Der Kontakt hat einen kleinen Abstand zur darunterliegenden Kontaktfläche. Der Schalter ist offen durch einen Stoß von oben oder unten schwingt die Feder auf und ab sodaß der Kontakt am Ende der Feder die Kontaktfläche berührt. Der Schalter wird dabei geschlossen. Da bei einem Stoß der Kontakt mehrfach kurz geschlossen wird muß der Sensor am Arduino mit einem interruptfähigen Eingang verbunden werden, um das Ereignis sicher zu registrieren. Der Sensor hatt eine mittlere Empfindlichkeit.
Kugel Schalter:
Dieser Sensor enthält zwei Metallkugeln, die bei Erschütterungen die beiden Kontakte schließen. Genauere Angaben wie der Schalter aufgebaut ist waren nicht zu finden. Die Typenbezeichnung ist HDX 2100. Der Kugel Schalter liegt zwischen den Anschüssen S und -. Der S Anschluss ist außerdem über einen 10kOhm Widerstand mit dem mittleren Pin verbunden. Legt man +5V an den mittleren Pin dient dieser Widerstand alls Pullup-Widerstand. Da der Kontakt bei Erschütterungen kurzzeitig geschlossen wird ist auch hier die Verwendung eines interruptfähigen Eingangs empfehlenswert. Der Sensor reagiert auf stärkere Erschütterungen und auf Lageänderungen.
Neigungs Schalter:
Der Neigungsschalter benutzt ebenfalls zei Kugeln um den Kontakt herzustellen. Wird das Röhrchen mit den Kugeln nach oben geneigt, fallen die Kugeln nach unten und schließen den Kontakt. Dies passiert bereits bei kleinen Winkeln von etwa 10 Grad. Der Sensor kann als digital Eingang betrieben werden, aber auch hier ist der Einsatz eines Interrupts sinnvoll, da bei kleinen Winkeln der Kontakt nicht sehr stabil ist. Der Sensor ist recht empfindlich und eignet sich insbesondere um Neigungen zu erkennen. Er ist aber ebensogut zum Erfassen von Erschütterungen geeignet, dazu ist aber die Verwendung eines Interrupts erforderlich.
Testschaltung:
Die Schaltung ist ganz einfach und für alle drei Module identisch. - wird mit GND und der mittlere Pin mit +5V verbunden. Den Sensor Ausgang S verbinden wir mit dem interruptfähigen Eingang D2. Als Anzeige benutzen wir die interne Led an Pin D13.Programm:
//unter Verwendung von Interrupts
const byte anzeige = 13;
const byte sensor = 2;
const byte dauer = 1000; //Anzeigedauer
//globale variable
byte led = LOW; // aktueller Zustand der Anzeige Led
void setup() {
// Vorbereitung sensor als Eingang und Interrupt zuweisen
// Die Interrupt Service Routine heißt service und der Interrupt
// soll mit der fallenden Flanke ausloesen
pinMode(sensor, INPUT);
attachInterrupt(digitalPinToInterrupt(sensor),service,FALLING);
}
//Interrupt Service Routine
//Wird aufgerufen wenn der Sensor Eingang auf 0 geht
void service() {
led = HIGH; //led wird auf HIGH gesetzt
}
//Hauptschleife
void loop() {
digitalWrite(anzeige,led);//aktueller Zustand wird ausgegeben
//wenn Zustand HIGH ist lassen wir die Led länger eingeschaltet,
//damit wir das Ereignis wahrnemen können
if (led == HIGH) {
delay(dauer);
//anschließend setzen wir den Wert zurück
led=LOW;
digitalWrite(led,LOW);
}
}