martes, 28 de abril de 2020

Practica 3.05 Sensor de inclinación

Hola a todos y a todas, hoy voy a enseñaros cómo funciona un sensor de inclinación.

Este sensor permite detectar si hay un cambio en la posición de un objeto. Normalmente un sólo sensor no me permite hacer muchas cosas, pero si combino varios sensores de inclinación puedo detectar con detalle la inclinación de un objeto e incluso medir ángulos.

Este tipo de sensores funciona con unas pequeñas bolas metálicas en su interior o una pequeña gota de mercurio, que al moverse en función de la inclinación, abre o o cierra el contacto.

Voy ha hacer un proyecto en Tinkercad utilizando dos de estos sensores, uno de ellos representa la inclinación hacia la izquierda y otro hacia la derecha. Al inclinarse hacia la izquierda, se enciende un LED verde, y hacia la derecha uno rojo. Se puede regular la inclinación de los sensores desde Tinkercad. Si cada uno de los sensores apunta hacia un lado diferente, no se enciende ningún LED.


Para empezar, he dispuesto los componentes de esta manera:




Estos son los bloques de código:



Primero, he creado dos variables; izquierda y derecha, a las que he asignado el valor de los pines 4 y 2.
Como solo puede estar inclinado hacia la izquierda o hacia la derecha, y en Tinkercad existe la opción de apuntar los dos sensores hacia lados diferentes, he tenido que ordenar que, cuando apuntan hacia lados diferentes (las variables obtienen el mismo valor), se apaguen los LEDs.
Si eso no ocurre, llegamos a la parte en la que solo hay derecha o izquierda. Si el sensor correspondiente a derecha se inclina, deja de emitir señal, y, gracias a la forma en la que he programado esta parte, se enciende el LED rojo, si no, no se enciende. 
Para la parte de izquierda, la programación es prácticamente la misma.


Este es el código de programación:



int izquierda = 0;

int derecha = 0;

void setup()
{
  pinMode(4, INPUT);
  pinMode(2, INPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop()
{
  derecha = digitalRead(4);
  izquierda = digitalRead(2);
  if (izquierda == derecha) {
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
  } else {
    if (derecha == 0) {
      digitalWrite(12, HIGH);
    } else {
      digitalWrite(12, LOW);
    }
    if (izquierda == 0) {
      digitalWrite(13, HIGH);
    } else {
      digitalWrite(13, LOW);
    }
  }
  delay(10); // Delay a little bit to improve simulation performance

}




Para finalizar, aquí os dejo un vídeo para que veáis cómo funciona:





Y esto ha sido todo por hoy, ¡un saludo y hasta la próxima!😁

No hay comentarios:

Publicar un comentario