miércoles, 29 de abril de 2020

P.4 3ºtrim. Sensor de inclinación

Sensor de inclinación:

Hoy vamos a hacer un sensor de inclinación con tinkercad para determinar con dos leds si un objeto se inclina a la derecha o a la izquierda.
Para ello hay que hacer:
-Conexiones:
Aquí hay dos sensores de inclinación cada uno hacia un lado distinto, tenemos que programar que cuando en la simulación inclinemos cada sensor a izquierda y derecha, se encienda un led rojo o verde dependiendo del lado al que se incline.

-Código:
Aquí en el código podemos ver que he creado dos variables, una para cada lado correspondiendo a los pasadores donde está cada sensor de inclinación. Al principio indicamos que si los dos sensores están inclinados o rector a la vez (igual), se apagan los led. 
Luego hay dos partes, una que dice cuando se enciende y se apaga el primer led y otro que dice lo mismo del otro led. Con este código logramos nuestro objetivo.

Simulación:

Por último os dejo aquí una simulación para que veáis como funciona.

martes, 21 de abril de 2020

P.3 3ºtrim. Medidor de distancia/ultrasonido

Medidor de distancias o ultrasonido

Hola a todos, en esta entrada he realizado un medidor de distancias mediante un sensor de ultrasonidos. He elegido una opción difícil y por eso hay 3 leds y no solo uno, así puedo medir tres distancias a la vez.

Circuito:

Código:
Bloques:


Texto:

int distancia1 = 0;

long readUltrasonicDistance(int triggerPin, int echoPin)
{
  pinMode(triggerPin, OUTPUT);  // Clear the trigger
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  // Sets the trigger pin to HIGH state for 10 microseconds
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);
  pinMode(echoPin, INPUT);
  // Reads the echo pin, and returns the sound wave travel time in microseconds
  return pulseIn(echoPin, HIGH);
}

void setup()
{
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop()
{
  distancia1 = 0.01723 * readUltrasonicDistance(10, 9);
  if (distancia1 < 50) {
    digitalWrite(3, HIGH);
  } else {
    digitalWrite(3, LOW);
  }
  if ((distancia1 < 50) < (distancia1 < 100)) {
    digitalWrite(5, HIGH);
  } else {
    digitalWrite(5, LOW);
  }
  if ((distancia1 < 100) < (distancia1 < 150)) {
    digitalWrite(7, HIGH);
  } else {
    digitalWrite(7, LOW);
  }
  delay(10); // Delay a little bit to improve simulation performance
}
Vídeo simulación: