El conjunto contiene tres de estos sensores.
Sensor de choque:
El sensor está conectado entre el pin S y el pin GND. Una resistencia de 10kOhm está conectada como una resistencia pullup entre S y el pin central. El sensor en sí consiste en una caja de plástico alargada en la que hay un resorte provisto de un contacto al final. El contacto tiene una pequeña distancia desde la superficie de contacto debajo. El interruptor está abierto debido a un impacto desde arriba o abajo, el resorte se balancea hacia arriba y hacia abajo para que el contacto al final del resorte toque la superficie de contacto. El interruptor está cerrado. Dado que el contacto se cortocircuita varias veces en caso de una descarga, el sensor en el Arduino debe estar conectado a una entrada con capacidad de interrupción para registrar el evento de manera confiable. El sensor tiene una sensibilidad media.
Interruptor de bola:
Este sensor contiene dos bolas de metal que cierran los dos contactos cuando se agitan. No hubo información precisa sobre cómo está estructurado el interruptor. La designación de tipo es HDX 2100. El interruptor de bola está entre las conexiones S y -. El conector S también está conectado al pin central a través de una resistencia de 10kOhm. Si coloca + 5V en el pin central, esta resistencia sirve como resistencia pull-up. Dado que el contacto se cierra brevemente en caso de vibraciones, se recomienda el uso de una entrada con capacidad de interrupción. El sensor reacciona a fuertes vibraciones y cambios de posición.
Interruptor de inclinación:
El interruptor de inclinación también usa dos bolas para hacer contacto. Si el tubo está inclinado con las bolas hacia arriba, las bolas caen y cierran el contacto. Esto sucede en ángulos pequeños de alrededor de 10 grados. El sensor puede funcionar como una entrada digital, pero el uso de una interrupción también es útil aquí, ya que el contacto no es muy estable en ángulos pequeños. El sensor es bastante sensible y es particularmente adecuado para detectar inclinaciones. Sin embargo, es igual de adecuado para detectar vibraciones, pero esto requiere el uso de una interrupción.
Circuito de prueba:
El circuito es muy simple e idéntico para los tres módulos. - está conectado a GND y el pin del medio a + 5V. Conectamos la salida del sensor S a la entrada interrumpible D2. Usamos el led interno en el pin D13 como pantalla.Programa:
// usando interrupciones
const byte display = 13;
sensor de byte constante = 2;
duración del byte constante = 1000; // tiempo de visualización
// variable global
byte led = BAJO; // estado actual de la pantalla led
configuración nula () {
// Asignar sensor de preparación como entrada e interrumpir
// La rutina de servicio de interrupción se llama servicio y la interrupción
// debería activarse con el borde descendente
pinMode (sensor, ENTRADA);
attachInterrupt (digitalPinToInterrupt (sensor), servicio, FALLING);
}
// Interrupción de la rutina de servicio
// Se llama cuando la entrada del sensor va a 0
servicio nulo () {
led = ALTO; // led está configurado en ALTO
}
// lazo principal
bucle vacío () {
digitalWrite (pantalla, led);// se muestra el estado actual
// si el estado es ALTO, dejamos el LED encendido por más tiempo,
// para que podamos percibir el evento
if (led == ALTO) {
retraso (duración);
// luego restablecemos el valor
led = BAJO;
digitalWrite (led, BAJO);
}
}