Un interruptor de inclinación sirve para detectar la orientación o inclinación de un sistema. Suele utilizarse para indicar si un sistema (como un vehículo agrícola) está fuera de su rango de inclinación operativo, o para detectar la orientación de una pantalla y cambiar así su disposición. No da tanta información como un acelerómetro, pero es más robusto y no requiere ningún programa especial para procesarlo.
Hardware
- Ordenador
- Arduino UNO
- Cable USB A macho
- Interruptor de inclinación
Principio de funcionamiento
El interruptor basculante consta de una bola (o una masa de mercurio) y un contactor. Cuando cambia su orientación con respecto al horizonte, la bola, sometida a la gravedad, se desplaza y entra en contacto con dos polos. Esto cortocircuita los polos y cierra el interruptor.

Diagrama
El interruptor basculante se conecta, como un pulsador, preferiblemente a un pin digital del microcontrolador porque devuelve un estado alto o bajo, cerrado o abierto.
- Conectando tierra y un pin digital (aquí pin 2)

- Utilizando una resistencia de pull-up externa (si el microcontrolador o el pin utilizado no tienen pull-up interno).

Código
El interruptor basculante funciona como un interruptor. Por lo tanto, el código de gestión del sensor se parecerá mucho al de un pulsador. Cabe señalar que, por lo general, una bola hace contacto y cierra el interruptor. A veces, esta bola rebota cuando cambia el estado. Para no tener en cuenta estos rebotes parásitos, utilizamos una lógica anti-rebote.
//Parameters const int tiltPin = 2; //Variables bool tiltStatus = false; bool oldTiltStatus = false; unsigned long lastDebounceTime = 0; unsigned long debounceDelay = 50; void setup() { //Init Serial USB Serial.begin(9600); Serial.println(F("Initialize System")); //Init digital input pinMode(tiltPin, INPUT); } void loop() { debounceTilt(); } void debounceTilt( ) { /* function debounceTilt */ ////debounce TiltSwitch int reading = digitalRead(tiltPin); if (reading != oldTiltStatus) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { if (reading != tiltStatus) { tiltStatus = reading; Serial.print(F("Sensor state : ")); Serial.println(tiltStatus); } } oldTiltStatus = reading; }
Resultados
Al inclinar el sensor de bola, debería ver su cambio de estado en el monitor serie. Realizando varias pruebas, deberías poder ajustar el parámetro debounceDelay para asegurarte de que la lectura del estado es fiable.
Aplicaciones
- Detectar la orientación de un objeto