Scratch, Enchanting y S4A tres herramientas para divertirse

  • Scratch es un lenguaje de programación con el que se pueden desarrollar fácilmente sencillos videosjuegos.
  • Enchanting es una modificación de Scratch que permite que los programas que desarrollemos controlen robots construidos con las piezas de Lego Mindstorm.
  • S4A es otra modificación de Scratch con la que se pueden hacer programas que controlen una placa electrónica Arduino para desarrollar máquinas programables.

 

En estas páginas hay programas desarrollados con alguna de estas herramientas, están comentados e incluyen todas las instrucciones necesarias para poder hacerlos funcionar en tu entorno.

Scratch. Descripción general

Scratch es un lenguaje de programación orientado a los niños y está desarrollado por el Lifelong Kindergarten Group en el Laboratorio de Medios de MIT.

Es software libre por lo que puedes descargarlo y utilizarlo sin ninguna restricción. Puedes copiarlo y distribuirlo a quien quieras, también pudedes modificarlo para producir nuevas verisones que hagan cosas nuevas como ocurre con Enchantin o S4A.

Al arrancar la aplicación se abre un pantalla con cinco zonas:

 

  • 1.- El escenario es donde actuan los objetos en función de los programas que pueden ejecutar.
  • 2.- Lista de objetos, podemos crear todos los objetos que necesitemos, podemos dibujarlos o importarlos.
  • 3.- Scripts en eta zona están los programas que definen cómo se comporta el objeto en relación a los otros objetos y como interacciona con el usuario
  • 4.- Bloques de instrucciones, las instrucciones empleadas en los scripts se agrupan según la función: control de sonido, del movimiento...
  • 5.- Listado de las instrucciones del bloque seleccionado.

 

 

 

. E-1 Capturar y dibujar el volumen de un sonido con Scratch

Este proyecto muy sencillo sólo contiene un objeto y un script y pinta sobre la pantalla lineas verticales cuya altura se corresponde con el volumen del sonido que recoge el micrófono.

Como podemos ver en las 6 primeras instrucciones se inicializan ciertos datos para comenzar a pintar:

  • subir lápiz: para no dejar marca al llevarlo al punto de inicio
  • fijar: asignamos el valor 5 a la variabe "amplificador"
  • borrar: borramos la pantalla para empezar con la pantalla limpia
  • fijar color de lápiz a: elegimos el color con el que sepintarán las líneas verticales
  • ir a: llevamos el objeto a la posición -200 -80
  • bajar lápiz: para que empiece a dejar marca

 

En el siguiente bucle continuo (por siempre) asignamos a las coordenadas del objeto (x e y) los valores de cada paso x=x+1 e y=-80. a continuación sumamos al valor de y el del volumen del sonido capturado por el micrófono multiplicado por el amplificador. La variable amplificador la podemos cambiar en cualquier momento ya que está definida como deslizamiento.

La intrucción sellar la comentaremos al final.

Por último hay una condición (si x > 210) que se cumple cuando el objeto llega al extremo derecho de la pantalla, cuando esto ocurre ejecutamos los siguiente comandos:

subir lápiz, fijar x=-200 y bajar lápiz, es decir volvemos a empezar en la parte izquierda de la pantalla (hemos subido el lápiz para no pintar ese trazo).

La instrucción sellar que hemos dejado para el final resuelve el problema de solapar las líneas verticales cuando se pasa de la parte derecha de la pantalla a la izquierda. Si no hacemos nada se superpondrian las líneas verticales actuales con las que ya estaban pintadas.

Para resolver esto hay dos posbilidades:

  • Borrar la pantlla al llegar a la derecha (dentro de la condición x > 210 habría que poner borrar)
  • Utilizar un objeto que tenga una banda blanca por delante (el objeto de la izquierda) y al sellar pinta esa banda blanca borrando sólo una parte de las líneas de la pantalla. Esto hay que hacerlo en cada paso (fuera de la condición si x > 210).

 

 

 

Así es como quedaría un trozo de la canción Waitin'On A Sunny Day de

Bruce Springsteen

 

. E-2 Juego de ping pong desarrollado con Scratch

 

Este juego está formado por tres objetos y un fondo con tres disfraces.

 

Los objetos son las dos raquetas y la pelota. El fondo se puede ver en la captura de pantalla con el disfraz principal, los otros dos disfraces indican el jugador que ha ganado (un disfraz para cada jugador como campeón) que se activa al terminar la partida.

 

 

Los objetos raqueta son idénticos y constan de una barra vertical estrecha con los siguientes programas:

  • El primer bloque coloca la raqueta en su posición inicial al comenzar el juego.
     
  • El segundo responde a las teclas "o" y "l" para la raqueta derecha, o las teclas "a" y "q" para la raqueta izquierda.
     
  • Las teclas "a" y "o" suben la raqueta y si supera la coordenada 108 coloca la raqueta en la posición 108 (tope superior).
     
  • Lo mismo ocurre con el tope inferior en la coordenada -140.

 

 

El objeto pelota dispone de un único programa y consta de cuatro variables: vx y vy que dan la velocidad de desplazamiento de la pelota; y A y B que llevan los puntos conseguidos por cada jugador.

El primer bloque muestra el objeto, fija la posición original, e inicializa las variables, las velocidades vx y vy a 3 y los puntos de cada jugador a 0.

 

 

El siguiente bloque, el primero del bucle mueve la pelota en función de las velocidades.

 

Los dos siguientes gestionan los rebotes con la paredes superior e inferior, y con las raquetas (objeto1 y objeto2). El rebote con las paredes multiplica la velocidad vy por -1 para cambiar el sentido. El rebote con las raquetas  multiplica la velocidad vx por -1 para cambiar el sentido y además añade una cantidad aleatoria entre 0.5 y -0.5 para dar cierto cambio de dirección al rebote.

 

 

Los dos últimos bloques controlan cuando uno de los jugadores gana un punto. Si la pelota llega a la coordenada 236 o -236 (por detrás de cada una de las raquetas) añade un punto al jugador del otro campo, oculta la pelota y la desplaza a la posición de la raqueta del jugador que ha ganado para que haga el saque. La instrucción que añade (o resta) 10 pixeles a la posición de la raqueta es para que la pelota salga desde fuera de la raqueta, sino estaría rebotando en la raqueta de forma continua.

 

 

 

 

 

 

Por último el fondo también tiene un programa que controla si alguno de los jugadores ha llegado a 10 puntos para cambiar el fondo (indicando el jugador ganador) y para todo el programa.

 

Enchanting. Descripción general

Enchanting es un lenguaje de programación basado en Scratch y que puede controlar robots LEGO MINDSTORMS NXT. Utiliza leJOS NXJ(external link) (Java for the NXT). Enchanting is software libre.

El entorno de desarrollo es casi idéntico al de Scratch. La diferencia está en el bloque que controla el movimiento de los objetos, y en el que controla los sensores. En el caso de Enchanting el bloque de control de movimiento contienen las funciones que controlan el robot y han desaparecido las funciones de movimiento de objetos Scratch, en el bloque de sensores han desaparecido las funciones de relación entre objetos, o con el teclado, o con el ratón.

En Enchanting los dos bloques contienen un botón que permite configurar los elementos que usaremos:

  • Cuantos motores se usarán y que nombre asignaremos a cada uno para poder identificarle en los scripts.
  • Que sensores vamos a utilizar, y el nombre que le asignaremos.

El resto de bloques funcionan igual que en Scratch.

Una vez definidos los motores y sensores que vamos a utilizar aparecerán las funciones con las que podemos controlar los motores y las que nos permiten recoger datos de los sensores.

 

Estos son algunos ejemplos de las funciones disponibles:

Como se puede ver podemso mover los motores comomotores, es decir movimiento continuo, o como servos, es decir, girando en un determinado ángulo.

Con los sensors podemos encender la luz y detectar si reciben luz, o si el pulsador está pulsado.

 

 

 

 

 

 

 

 

 

 

 

 

 

Los scripts desarrollados en Enchanting se envían al robot, a través del cable USB, pulsando el icono de la bandera típico de Scratch. El código es previamente compilado y después enviado y ejecutado.

Cuando el código está en el robot podemos desconectar el cable USB y el script  seguirá funcionando autónomamente.

 

. E-1 Un robot que clasifica bolas según su color, programado con Enchanting

El montaje mecánico está basado en el propuesto en la documentación de NXT. La única modificación es la posición del sensor de contacto que controla el motor dispensador. En este vídeo se puede ver cómo funciona.

Para este proyecto necesitamos dos motores, dos sensores de contacto y un sensor de color.

Uno de los motores se utiliza para colocar la bola bajo el sensor de color y después soltarlo por una rampa (dispensador).

El otro motor gira las cajetillas para que cada bola caiga en la que le corresponde (clasificador).

Los sensores de contacto se utilizan para parar los motores en su posición inicial.

El sensor de color se utiliza para identificar el color de las bolas.

En el programa se usan cuatro variables:

Posición: recoge el valor del último giro para poder colocar las cajetillas en la posición inicial realizando un giro del mismo valor en sentido contrario.

br, ba, bv: valores devueltos por el sensor de color para cada uno de los colores (rojo, azul, verde).

El funcionamiento sigue esta secuencia:

  1. Gira el motor clasificador (el que mueve las cajetillas donde quedarán las bolas) hasta que el sensor de contacto que lo controla se pulsa y se suelta. Esta será aposición inicial del clasificador.
  2. Entra en un ciclo (repetido 15 veces) en el que mueve el motor dispensador para colocar la bola debajo del sensor de color hasta que el sensor de contacto que controla este motor se pulsa y se suelta. Esta será la posición inicial del dispensador.
  3. Mueve el motor clasificador (en dirección contraria a las agujas del reloj, ángulo negativo) para volver a la posición inicial después de haber girado para clasificar la última bola. En el primer giro no hace nada la variable que fija la posición girada es 0, en los demás casos será -90º si para la última bola el clasificador se giro 90º, 180 si el giro fue de 180 (180º es igual a -180º), o 90º si el giro fue de -90º.
  4. Enciende consecutivamente las luces roja, azul y verde y recoge los valores de brillo que detecta el sensor de color (los asigna a las variables br, ba, bv). Según los valores recibidos asigna a la variable posición el giro que debe dar el motor clasificador y efectúa el giro.

     

Análisis detallado del programa:

Empieza asignando el valor cero a la variable posición.

 

El siguiente bloque mueve el motor que gira las cajetillas hasta que el sensor de contacto se pulsa y se libera, así queda colocada en la posición inicial.

 

A continuación se abre un bucle de 15 repeticiones, aunque son 12 bolas, ya que en algún paso no entra la bola en el hueco de selección de color.

Se inciializan las variables ba,br y bv a cero.

El siguiente bloque mueve el motor dispensador hasta que el sensor de contacto del dispensador se pulsa y se libera. Con este movimiento la bola queda colocada en el hueco de valoración de color,

Además este movimiento deja caer la bola anterior del hueco a la cajetilla. Este proceso se repite con todas las bolas.

 

La siguiente instrucción gira en sentido contrario el último giro del clasificador. La primera vez no gira ya que la variable posición es cero.

El siguiente bloque identifica el color de la bola:

Ilumina la bola con luz roja y lee la luz reflejada, asignando ese valor a la variable br.

 

Después la ilumina con luz azul y asigna el valor reflejado a la variable ba

 

Finalmente con luz verde y asigna el valor leido a la variable bv.

 

La respuesta depende de la luz ambiental y para que el programa funcione con los valores de control (siguiente bloque) es necesario que la luz ambiente sea tenue. Habrá que trabajar con el calibrado (todavía no se cómo funciona) para que no depende de la iluminación ambiental.

 

Éste último bloque selecciona el giro (90º, 180º ,-90º o 0º) que deberá girar el clasificador en función de los colores registrados por el sensor.

 

En el caso de la bola amarilla las variables roja y verde son las más altas por eso están en la primera condición y en caso contrario se valora cada color independientemente.

 

En cada condición se asigna valor a la variable posición y se gira el motor.

S4A y Arduino. Descripción general

S4A es otra modificación de Scratch desarrollada por el Grupo de Programación Smalltalk del Citilab.

Esta modificación supone la creación de un nuevo tipo de objeto (la placa Arduino) sobre el que se han definido un conjunto de nuevas funciones. Estas funciones están añadidas a las del bloque de movimiento.

Como se puede ver en la imagen dispone de funciones para:

  • Asignar valores (encendido/apagado) a "salidas" digitales de la placa Arduino
  • Asignar valor (0-255 que corresponden a 0-5 voltios) a salidas analógicas de la placa
  • Leer sensor digital (presionado)
  • Leer sensor analógico (0-1023 que corresponden a 0-5 voltios)
  • Girar un motor (en realidad un servo) para colocarlo con un ángulo concreto

Además permite trabajar con un nuevo tipo de datos (tabla) que funciona como una lista de datos sobre la qeu se puede añadir y quitar datos.

S4A detecta la placa Arduino cuando la conectamos al ordenador a través del cable USB y a partir de ese momento podemos enviarle órdenes  para que la placa actue activando y desactivando salidas que si están conectadas a ciertos actuadores (motores, servos, iluminación), o recogiendo información de los sensores conectados a la placa (interruptores,

 

 

Arduino es una placa electrónica para desarrollar de forma sencilla prototipos interactivos. Puede recoger información a través de sensores y responder a través de diferentes dispositivos como les, motores, servos… Dispone de software de programación libre y también es libre el diseño de la placa.

Hay diferentes modelos de placas Arduino, con conexiones USB, Bluetooth, Ethernet… Para los ejemplos mostrados aquí usaremos una placa Arduino UNO con conexión USB.

Esta placa tiene una conexión USB con la que se conecta al ordenador, de esta conexión se obtiene la alimentación eléctrica necesaria para funcionar y también se utiliza para la comunicación entre el ordenador y la placa.

La placa consta de un conjunto de  entradas y salidas tanto analógicas como digitales:

  • Las salidas digitales ofrecen una tensión de 5V cuando están activas (On) y de 0V cuando están apagadas (Off).
  • Las entradas digitales se activan cuando se conecta a la entrada 5V y están apagadas cuando se conectan a tierra.
  • Las salidas analógicas ofrecen una tensión entre 0 y 5V.
  • Las entradas analógicas reconocen tensiones entre 0 y 5V.

     

Para usar la placa Arduino con S4A necesitamos instalar un "firmware" en la placa. Este firmware no es más que un programa hecho en el lenguaje propio de Arduino que define las entradas y salidas que será capaz de reconocer S4A. Existen dos firmware diferentes, la diferencia entre ellos es que el estándar define 4 salidas para servos y 3 salidas digitales y el "patch" que deja dos servos y 5 salidas digitales. Lógicamente es necesario utilizar el firmware  junto con la imagen de S4A correspondiente para que todo funcione correctamente.  

En los ejemplos siguientes usamos la versión "patch" con 5 salidas digitales.

En estas imágenes vemos como podemos acceder desde S4A a las entradas y salidas de la placa.




Para conectar algunos sensores (LDR, potenciómetros, interruptores …) y algunos actuadores (motores, servos, leds…)  es necesario completar un circuito electrónico simple sencillo y de bajo coste. Los elementos utilizados en los ejemplos incluyen:

  • La placa Arduino UNO (coste aproximado 25 Euros)
  • Una placa de prototipos (coste aproximado 7 euros)
  • Un servo motor usado en aeromodelismo (coste aproximado 12 euros)
  • Leds, resistencias,interruptores, potenciómetros (coste aproximado menos de 5 euros)
  • Fotoresistencias LDR (variables según la iluminación) (coste aproximado 1 euro cada una)
  • Interruptor infrarrojo + emisor infrarrojo (coste aproximado 7 euros)


Los programas desarrollados con S4A se ejecutan en el ordenador no en la placa (como ocurre con los desarrollados en el lenguaje propio de Arduino). Cuando el programa se ejecuta,m el ordenado envía comandos a la placa para que recoja valores de los sensores o para que active salidas digitales con valores encendido (5V) apagado (0V) o salidas analógicas (0-255 => 0-5V). Por lo que los programas no pueden funcionar de manera autoónoma en la placa y deben funcionar siempre con el ordenador conectado.

 

 

. E-0 Recursos sobre Arduino y S4A

Aquí encontrarás enlaces a documentos que pueden completar la documentación general para iniciarse en Arduino y S4A.

 

. E-1 Programación de un semáforo con S4A y Arduino

En este ejercicio tratamos de construir un semáforo de los que esperan que se pulse el botón para permitir el paso de peatones. Como podemos ver en el vídeo el estado normal es rojo para peatones y verde para vehículos, cuando se pulsa el botón el verde de vehículos pasa a amarillo y después a rojo, en este momento el rojo de peatones pasa a verde. Pasado un tiempo el verde de peatones se pone intermitente y finalmente pasa a rojo haciendo que el rojo de vehículos pase a verde, en este estado se queda hasta que se vuelve a pulsar el botón.

 

Los componentes que vamos a nacesitar para este ejemplo son:

  • Placa Arduino
  • Placa de prototipos
  • Leds de colores (rojo, verde y amarillo)
  • Interruptor
  • Resistencias pequeñas (270Ω) y una grande (10kΩ)

 

Las conexiones de la placa Arduino que emplearemos serán:

  • Salida 8 digital  para el color rojo vehículos
  • Salida 12 digital para el color naranja vehículos
  • Salida 13 digital para el color verde vehículos
     
  • Salida 10 digital par color rojo peatones
  • Salida 11 digital para color verde peatones
     
  • Entrada 2 digital para conectar el interruptor
     

 

La conexión de los leds de colores (verde, amarillo y rojo) ya se explicó en el ejemplo anterior pero lo recordamos aquí: tienen polaridad así que la patilla más larga hay que conectarla al polo positivo de la corriente, además hay que incluir una resistencia (270Ω) para limitar la corriente y evitar que se funda.

 

Ahora vamos a ver la conexión del interruptor (botón). Como se puede ver en el esquema una patilla del interruptor va a 5V y la otra va a la entrada digital, así al pulsar el botón metemos la señal de 5V en la patilla y el programa lo detecta.

Si lo dejáramos así, cuando no se pulsa el botón la entrada no estaría conectada a nada lo que podría dar lugar a una lectura errónea en la entrada digital; para evitarlo conectaremos la entrada a tierra a través de una resistencia grande (10kΩ), de esta forma cuando no esté pulsado el botón la entrada estará a 0V.

 

Con todo esto ya podemos construir el circuito y conectarlo a la placa Arduino.

 

El programase bastante sencillo ya que sólo hay que seguir el proceso comentado anteriormente encendiendo y apagando los correspondientes leds.

En el primer bloque de instrucciones apagamos todos los leds.

Después comenzamos un bucle que repetirá la secuencia

Encendemos las luces rojo peatones (10) y verde vehículos (13)

Esperamos a que se pulse el botón (esperar hasta que en digital 2 haya 5V)

esperamos 1 segundo después de pulsar el botón para cambiar las luces

Apagamos el verde vehículos (13) y encendemos el amarillo (12)

Mantenemos este estado 3 segundos

Apagamos: el amarillo vehículos (12)

    rojo peatones (10)

encendemos: rojo vehículos(8)

    verde peatones(11)

Esperamos 15 segundos (para que puedan pasar los peatones)

Entramos en un bucle de 5 repeticiones para hacer el verde peatones intermitente

    lo apagamos (11)

    esperamos 0.3 segundos

    lo encendemos (11)

    esperamso 0.3 segundos

Finalmente apagamos el verde peatones y el rojo vehículos

 

Al empezar el bucle se encienden de nuevo el verde vehículos y el rojo peatones y repetimos el proceso.

. E-2 Modificr frecuencia de parpadeo de varios leds con un potenciometro, S4A y Arduino

Potenciometro

 

 

 

Un potenciometro o una resistencia variable es un dispositivo de tres patas (como se puede ver en el dibujo) que mantiene una resistencia fija entre los extremos y dos resistencias variables entre la patilla central y cualquiera de los dos extremos.  La patilla central está conectada a una pieza que puede girar provocando la variación de las resistencias según la posición. La suma de las dos resistencia variables será igual a la resistencia fija entre los extremos: R1 + R2 = R del potenciometro.

 

 

 

 

 

 

 

 

 

 

 

 

En el ejemplo que vamos a desarrollar conectaremos los extremos del potenciometro a 5v y a 0v. La patilla central se conectará a la entrada analógica (Analog1) de la placa Arduino.

 

Según giremos el potenciometro la tensión que llega a la entrada analógica variará entre casi 5v y casi 0v lo que representa una variación entre casi 1023 y casi 0 en la lectura que hará S4A. Este es el valor que usaremos para variar la frecuencia de parpadeo de los leds como se puede ver en el vídeo .

 

En cada ciclo del programa guardamos el valor del potenciometro (recogido en el sensor Analog1) en la variable nivel.

Después encendemos los leds (salidas digitales 11,12,y 13) esperamos 2 decimas de segundo y los apagamos.

 

Finalmente esperamos un tiempo calculado al dividor por 2000 el valor recogido en la variable, como el valor de la variable cambia entre o y 1000 el tiempo de espera variará entre 0.5 segunodos y unas milésismas (no se aprecia ya que el programa es más lento).

. E-3 Girar un servo con un potenciometro, S4A y Arduino

En este ejercicio vamos a utilizar la señal variable que produce un potenciometro para girar un servo un ángulo determinado como se puede ver en este vídeo.

Para hacer el montaje necesitaremos:

Placa Arduino

Placa de prototipo

Potenciometro

Servo

El servo es un dispositivo con tres entradas, dos son de alimentación (5v y 0v) y la otra es la que recibe la señal que le indica el ángulo que debe girar, esta señal está formada por un pulso que el circuito incluido en el servo interpreta para girar el motor y dejarlo fijo en el ángulo indicado.

S4A dispone de dos salidas para servos, son la 4 y la 7, y dispone de una instrucción para girar un ángulo determinado el servo. Este servo que usamos puede colocarse en cualquier ángulo entre 0 y 180 grados.

Conectaremos las patillas externas del potenciometro, como en el ejemplo anterior, a 5v y 0v, y la patilla central a la entrada analógica Analog6.

 

El conector rojo del servo los conectaremos a 5v, el marrón a 0v y el naranja, que es el de señal, lo conectaremos a la salida 7.


El valor recogido del potenciometro varía entre 0 y 1023, esta cantidad hay que transformarla en ángulo (entre 0 y 180) así que los más fácil será multiplicar el valor del potenciometro por 0.18 obtener la parte entera y usar ese valor como ángulo para el servo.

. E-4 Seguidor de luz con S4A y placa Arduino

 

Seguidor de luz con S4A

 

En este vídeo podemos ver como funciona este ejemplo.

 

Con este ejemplo queremos mover un servo motor para que oriente una pequeña placa (donde está el circuito) hacia la luz  recibida desde una linterna.Para esto utilizaremos dos resistencias variables con la luz (LDR) en las que la resistencia varía en función de la luz recibida.

 

En este ejemplo vamos a utilizar los siguientes componentes:

  • Placa Arduino UNO.
  • Placa de prototipado.
  • 2 fotoresistencias LDR.
  • 2 resistencias 270 ohmios.
  • 1 servo motor con giro 0-180 grados.

 

En el dibujo del circuito vemos que se generan dos divisores de tensión con la resistencia de 270 ohmios y la resistencia LDR variable en función de la luz recibida. Según sea esta resistencia, en los puntos analógico1 y analógico2 habrá una tensión diferente entre 0V y 5V (si la luz recibida es diferente), que se convertirá en un valor entre 0 y 1023 que la placa Arduino enviará al ordenador.

 

En el programa leeremos los valores de la tensión en los puntos analógico1" y "analógico2" con la instrucción:


 

Comparando los valores de las dos entradas sabremos cual recibe más luz y por lo tanto hacia donde deberemos mover el servo.

 

Inicialmente el servo se colocará a 90 grados (la variable posición = 90 que corresponde con la posición intermedia del servo), a cada ciclo del bucle y en función de los valores leídos en las entradas añadirá o restará una cantidad (2 o 6) a la variable posición y después moverá el servo a la nueva poción.

 

En función de las LDR utilizadas y la luz suministrada (junto con la luz ambiente) es posible que haya que modificar los valores de las condiciones (en el ejemplo las diferencia consideradas son 50 y 100) para ajustar el movimiento del servo.

 

 

 

 

 

 

 

 

 

 

 

 

 

Con estos elementos, un led blanco y un motor para mover dos ruedas podemos fabricar un pequeño robot  siguelínemeas. Este tipo de robot sigue un camino formado por trazo de una línea negra sobre un fondo blanco. La separación de las LDR sería más o menos d ella anchura de la línea y entre ellas estaría el led blanco, si las LDR están sobre el fondo blanco responderán con el mismo valor y el robot seguirá una trayectoria recta, si una de las LDR se coloca sobre el línea negra existirá una diferencia en las resistencias que el programa podrá utiliza par amover el servo y girar el robot hacia posición correcta.

 

. E-5 Programar una barrera de acceso a un parking con S4a y Arduino

En este ejercicio usaremos partes de ejemplos anteriores para hacer un montaje nuevo.

Como podemos ver en el vídeo vamos a programar una barrera de acceso a un parking. Inicialmente estará encendida la luz roja indicando acceso dentado, también estará bajada la barrera.
Al pulsar el botón la barrera se levantará y la luz roja cambiará a verde para permitir la entrada. transcurrido un tiempo la barrera bajará y la luz volverá a ser roja.

Necesitaremos:
Placa Arduino
Placa prototipo
1 led rojo
1 led verde
2 resistencias 270Ω
1 resistencia 10KΩ
1 servo
1 interruptor
 

  • El interruptor lo colocaremos como en los ejercicios anteriores con una resitencia de 10kΩ a la entrada Digital2.
  • Los leds con las resistencias de 270Ω en las salidas 11 y 12.
  • El servo conectado a 5v, 0v y a la salida 7 de motor de S4A.

 

El programa comienza colocando el servo en un ángulo que deje la barrera horizontal (según la posición del servo será otro ángulo el inicial). A continuación encendemos el led rojo (salida 12) y miramos si el botón está pulsado (si está en verdadero la entrada Digital2):

  • En caso verdadero encenderemos el led verde, apagaremos el rojo y giraremos el servo 90 grados para levantar la barrera.
  • En caso negativo encenderemos el led rojo (12), apagaremos el verde (11) y giraremos el servo a la posición inicial.

 

 

 

Para completarlo sería necesario preparar un dispositivo qeu detecte si el coche se ha quedado parado debajo de la barrera para no cerrarla, ahora se cierra al cabo de un tiempo sin hacer esa comprobación. Podría ser una barrera formada por un emisor/receptor de infrarrojos como veremos en algún ejercicio posterior.

. E-6 Emisor y receptor infrarrojos con S4A y placa arduino

En este ejemplo vamos a utilizar un emisor y un receptor infrarrojos para construir un interruptor que se acciona con luz IR.

 

c