Neigungsschalter (tilt switch) mit Arduino ansteuern
Wir zeigen Ihnen wie Sie einen Neigungsschalter (tilt switch) mit einem Arduino UNO Board verwenden./p>
Übersicht
Neigungsschalter (englisch tilt switch) ermöglichen es Ihnen, die Ausrichtung oder Neigung zu erkennen. Sie sind klein, kostengünstig, stromsparend und einfach zu bedienen. In der Regel verschleißen sie auch nicht. Die Einfachheit macht sie beliebt für Spielzeug, Gadgets und Haushaltsgeräte.
Manchmal werden sie auch „Quecksilberschalter“, „Neigungsschalter“ oder „Neigungswinkelschalter“ genannt. Früher waren die Neigungsschalter noch Quecksilberschalter, bei denen ein mit einem Tropfen Quecksilber gefülltes Glasrohr mit zwei elektrischen Kontakten versehen war. Mittlerweile werden statt Quecksilber rollende Kugeln verwendet. Am Ende vom Hohlraum sind zwei leitfähige Elemente (Pole), die ab einer gewissen Neigung von der Kugel verbunden werden, damit der Schaltzustand erreicht wird.
Vorteile von Neigungsschaltern
Neigungsschalter sind zwar nicht so präzise oder flexibel wie ein vollständiger Beschleunigungsmesser, können jedoch Bewegungen und Ausrichtungen erkennen. Ein weiterer Vorteil ist, dass die größeren Neigungsschalter den Strom selbst schalten können. Beschleunigungsmesser geben hingegen eine digitale oder analoge Spannung aus, die dann mit einer zusätzlichen Schaltung analysiert werden muss. Ein gutes Beispiel für den Einsatz von Beschleunigungssensoren sind Controller mit einer Bewegungssteuerung (z.B. von der Switch oder Wii Konsole).
Nachteile von Neigungsschaltern
- Quecksilberschalter sind giftig und nicht mehr zeitgemäß
- Vibrationen können Fehleingaben erzeugen
- Ohne Schwerkraft funktionieren die Schalter nicht
- Funktion ist in beweglichen Projekten nicht zuverlässig
Benötigte Komponenten
- Uno R3 kompatibles Board
- Neigungsschalter
- 2x Dupontkabel Buchse-Stecker
Schaltplan
Anschlussplan
Beispielcode
Mit diesem Beispielcode bringen wir die integrierte LED (Beschriftung L auf der Platine) zum Aufleuchten, wenn der Neigungsschalter schaltet. Sie können stattdessen auch eine LED an Pin 13 anschließen. Dieses Beispiel ist etwas komplizierter als üblich, funktioniert durch die Debounce-Funktion aber wesentlich zuverlässiger.
|
// Pins werden deklariert constint ledPin = 13;// Pin für die LED constint sensorPin = 2; // Pin für den Neigungsschalter
//Variablen werden deklariert int sensorState; // Aktueller Status vom Sensor int lastTiltState =HIGH; // Letzter Status vom Sensor int sensorWert; // Variable um den Messwert einzulesen unsignedlong lastDebounceTime = 0; // Letzte Zeit als der Sensor ausgelöst wurde unsignedlong debounceDelay = 50; // Entprellwert in Milisekunden um Fehleingaben zu vermeiden
voidsetup() { pinMode(ledPin,OUTPUT);// Initialisiere den LED Pin als Ausgang pinMode(sensorPin,INPUT); // Initialisiere den Neigungsschalter als Eingang digitalWrite(sensorPin,HIGH); // Setze den Neigungsschalter auf HIGH digitalWrite(ledPin,LOW); // Setze die LED auf LOW Serial.begin(9600); // Serielle Verbindung mit Baud 9600 öffnen }
voidloop() { sensorWert =digitalRead(sensorPin); // Sensorwert lesen // Debounce (Entprellen) vom Sensorwert, um Fehleingaben zu verhindern if (sensorWert == lastTiltState) { // Debounce timer zurücksetzen lastDebounceTime =millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { // Wenn der Sensorwert länger vorhanden ist als der Debounce Delay, wird der Sensorwert übernommen lastTiltState = sensorWert; } //Wenn der Sensorwert 1 (HIGH) ist, dann wird die LED eingeschaltet. Ansonsten ist die LED aus if (sensorWert == 1) { digitalWrite(ledPin,HIGH);// LED einschalten } else { digitalWrite(ledPin,LOW);// LED ausschalten } Serial.println(sensorWert); // Ausgabe vom Sensorwert delay(500); } |