logo

S4A, parktronic, Arduino, Ejemplo, ultrasonidos, tutorial, modificar, firmware, Scratch, Arduteka, parking, medir, distancia, proximidad


Hola amigos!

Hoy vamos a ver como hacer algo muy interesante con S4A!

Vamos a conectar un sensor de ultrasonidos a nuestro Arduino y lo vamos a gestionar desde S4A simulando un sensor de parking como el que podemos ver en nuestros coches, pero claro, S4A no viene con esas características por defecto, así que tendremos que hacer algunos cambios!

Recordar que cualquier duda que tengáis, podemos comentarla en el NUEVO FORO!

En él, hemos creado una sección específica para tratar todo lo relacionado con S4A.

Uniros a la comunidad S4A!!

Veamos un video del resultado final!

Sensor de parking con S4A.

Conectando un sensor de ultrasonidos a S4A

S4A no dispone de ninguna opción para activar y utilizar un sensor de ultrasonidos de una forma similar a la opción que tiene para servomotores, en este tutorial vamos a explicar cómo modificar el firmware para que podamos incluir los sensores de ultrasonidos en los scripts de S4A.

El funcionamiento de los sensores por ultrasonidos es sencillo: emiten una señal, miden el tiempo que tarda en llegar el eco y calculan la distancia a la que se encuentra el objeto en el que ha rebotado la señal sonora.

S4A, parktronic, Arduino, Ejemplo, ultrasonidos, tutorial, modificar, firmware, Scratch, Arduteka, parking, medir, distancia, proximidad

Cuando queremos conectar uno de estos sensores a la placa Arduino encontramos dos tipos de sensores: los que tienen tres patillas y los que tienen cuatro.

De estas patillas una va conectada a 5v, otra a GND, en el caso de sensores de cuatro patillas, una de las dos que quedan va conectada al pin que gestiona la emisión de la señal y la otra patilla va conectada al pin gestiona la recepción de la señal. En los sensores con tres patillas utilizan el mismo pin como emisor y como receptor de la señal de ultrasonidos.

En el ejemplo que se presenta aquí usamos un sensor de cuatro pines (HC-SR04) aunque se harán las aclaraciones necesarias para usar uno de tres patillas.

Un ejemplo de código Arduino para usar el sensor:

pinMode(10, OUTPUT); // ponemos el pin 10 como salida
digitalWrite(10, HIGH); // lo activamos
delayMicroseconds(10); // esperamos 10 microsegundos
digitalWrite(10, LOW); // lo desactivamos
pinMode(11, INPUT); // ponemos el pin 11 como entrada
pulso = pulseIn(11, HIGH); //tiempo de llegada del eco
distancia = ((float(pulso/1000.0))*34.32)/2; // pasar tiempo a cm.

En este código de ejemplo se usa el pin 10 como emisor y el 11 como receptor, aunque podría usarse cualquier otro. Si el sensor es de tres patas usaríamos el pin 10 también en las líneas de código 5 y 6 que son las que gestionan la recepción de la señal:

  • La instrucción pulseIn mide en tiempo, en microsegundos, que pasan desde que se ejecuta la instrucción hasta que se recibe un pulso (el eco de la señal emitida).
  • La última instrucción transforma ese tiempo en una distancia medida en centímetros.


Modificación de firmware

Para usar este sensor en S4A tenemos que modificar el firmware incluyendo el código que activa el sensor y asigna a la variable distancia el resultado de la medida.

El código de control del sensor lo vamos a poner en alguna parte que se ejecute continuamente, así la variable distancia estará actualizándose continuamente.

Lo pondremos, por ejemplo, al principio de la función updateActuator, quedando la función así:

S4A, parktronic, Arduino, Ejemplo, ultrasonidos, tutorial, modificar, firmware, Scratch, Arduteka, parking, medir, distancia, proximidad

Después tenemos que enviar el resultado de esa medida al S4A.

Para pasar este dato usaremos el sensor analógico A5.

Esto implica otras dos modificaciones más del firmware, en concreto en la función sendSensorValues:

  • Una para desactivar en la placa Arduino el pin A5, modificando el rango de sensores, que originalmente está entre 0 y 5, para que esté entre 0 y 4. La función de recogida de entradas A0-A4 funciona igual que siempre.

 

S4A, parktronic, Arduino, Ejemplo, ultrasonidos, tutorial, modificar, firmware, Scratch, Arduteka, parking, medir, distancia, proximidad

  • Otra para enviar, dentro del sensor A5, el valor de la variable distanciaScratchBoardSensorReport(5, distancia);

Por último tenemos que incluir un par de modificaciones más:

Para evitar interferencias quitaremos el pin 10 de la configuración de salidas en el firmware, para esto en la función configurePins modificaremos la línea donde se configura el pin10 y la dejaremos así:

S4A, parktronic, Arduino, Ejemplo, ultrasonidos, tutorial, modificar, firmware, Scratch, Arduteka, parking, medir, distancia, proximidad


 


En lugar de ser una salida digital ‘d’ ponemos una salida ‘X’, que no se emplea.

Este pin queda anulado y hagamos lo que hagamos en S4A no tendrá efecto sobre la salida digital de la placa Arduino.

Finalmente tenemos que definir, al principio del script, la dos nuevas variables que usará el firmware: distancia y pulso:

float distancia;
unsigned long pulso;

Y así conectaremos el sensor de ultrasonidos a la placa Arduino:

S4A, parktronic, Arduino, Ejemplo, ultrasonidos, tutorial, modificar, firmware, Scratch, Arduteka, parking, medir, distancia, proximidad

Código S4A que utiliza este nuevo firmware

Descargar el firmware modificado aquí! S4Afirmware14_distancia.ino.

Como ejemplo de uso de este nuevo firmware vamos a crear un script en S4A que simule un sistema de ayuda para aparcar de un coche.

Usaremos el sensor de distancia par calcular la distancia a la que se encuentra el “obstáculo trasero” y en función de esa distancia emitiremos una serie de pitidos que se repetirán a mayor velocidad cuando la distancia sea menor. Además modificaremos el color de un objeto (un rectángulo) para que cambie el color hacia el rojo según se reduzca la distancia. El código Scracht para el objeto Arduino (el que producirá los pitidos) es el siguiente.

S4A, parktronic, Arduino, Ejemplo, ultrasonidos, tutorial, modificar, firmware, Scratch, Arduteka, parking, medir, distancia, proximidad

Y el código para el objeto (rectángulo) que cambia de color será…

S4A, parktronic, Arduino, Ejemplo, ultrasonidos, tutorial, modificar, firmware, Scratch, Arduteka, parking, medir, distancia, proximidad

Espero que os haya gustado este nuevo tutorial S4A!

A disfrutar!!

  1. Tom Rieken Responder

    Hola,
    por fin y gracias a las informaciones del tutorial funciona mi sensor de ultrasonido (3 pines) con S4A. Sin embargo, he tenido que añadir un delay en el firmware, un delay de 20 ms después de la calculación de la distancia. Sin ese delay el sensor oscilaba de manera irregular (se podía escucharlo) y no daba resultados que tenían sentido.
    Muchísimas gracias por el tutorial.
    Un saludo.
    Tom Rieken

Déjanos un comentario!

*

captcha *