Revista Informática

24.- Tilt Sensor

Publicado el 14 diciembre 2013 por Practicandoarduino @PracticaArduino

Vamos a hacer un circuito que detecte terremotos, para probarlo bastará con menearlo, a no ser que haya un terremoto donde vivis, en cuyo caso no me esperaría a ver si funciona xD. Bromas a parte, usaremos un tilt sensor, en mi caso es un módulo, por lo que mi esquema no corresponde con el video pero a efectos prácticos es lo mismo. Este sensor tiene mercurio en su interior, si se mueve de su posición “estable” envía una señal HIGH, lo que nosotros haremos será mantener 2 LEDs encendidos mientras no pase nada y si hay movimiento se apagan.
suficiente
Necesitamos:

1 Placa Arduino Uno
1 Protoboard
1 Tilt sensor
2 LEDs
2 Resistencias de 220Ω
1 Resistencia de 10kΩ
Cables para realizar las conexiones

Lo primero que haremos será conectar los pines GND y 5V de la placa a sus respectivas líneas de la protoboard, una vez hecho esto, conectamos las 3 resistencias a GND, los cátodos de los LEDs a las resistencias de 220Ω y sus ánodos a los pines digitales que vamos a usar (en nuestro caso el 4 y el 8), el sensor lo conectamos a la resistencia de 10kΩ y al pin digital 2.
El resultado sería este:

sensorfalta_bb

Código fuente:

int SensorPin = 2; 
int LED1 = 4;
int LED2 = 8; 
 
int estado = HIGH; 
int current; 
int previous = LOW;
long time = 0;
long rebote = 50;
 
void setup(){
  pinMode(SensorPin, INPUT);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
}
 
void loop(){
  current = digitalRead(SensorPin);
  if (current != previous) {
    time = millis();
  } 
  if ((millis() - time) > rebote) {
    if (current == HIGH)
      estado = LOW;
    else
      estado = HIGH;
    }
digitalWrite(LED1, estado);
digitalWrite(LED2, estado);
previous = current;
}

Primero declaro los pines que voy a usar como variables globales, e inicializo las que voy a usar, la única “rara” es rebote, que marcará el umbral en el cual consideramos que se está moviendo el sensor, podemos ajustarlo para que sea más o menos sensible. En el void setup() configuramos los pines simplemente.
En el void loop() leemos el sensor, si el valor leido es distinto al que teníamos antes actualizamos la variable time con el valor de tiempo actual, y cada ciclo la comparamos con tiempo actual, cuando la diferencia sea mayor que nuestro umbral significa que hay movimiento, por lo tanto, si el estado era “reposo” y ahora no, apagamos los LEDs, si nuestro estado a pasado de movimiento a reposo los encendemos.



style="display:inline-block;width:728px;height:15px"
data-ad-client="ca-pub-3868159888315364"
data-ad-slot="7639712738">


Volver a la Portada de Logo Paperblog