Libro Maestro
Libro Maestro
OBJETIVOS
Por eso el curso está ordenado de modo que se pueda empezar sin ningún conocimiento previo y vaya avanzando
presentando conceptos y competencias básicas que permitan avanzar con suelo firme hasta un punto en que puedas
acometer tus propios proyectos con garantías de éxito.
Scratch está diseñado para ser sencillo de usar y con los mas peques en mente (Entre 8 y 15 años) de
modo que puedan iniciarse a la programación de un modo divertido y que resulte atrayente, pero
muchos padres sin conocimientos previos de programación probablemente se sorprendan al ver que
también ellos son capaces de hacer programas medianamente complejos y entendiendo lo que hacen
y no simplemente copiando.
El conocimiento de la programación está comenzando a formar parte de las competencias necesarias en la educación
básica, no con la intención de todos se conviertan en programadores, sino para que conozcan los rudimentos de una
disciplina que es clave para comprender el mundo en el que van a vivir.
Scratch for Arduino S4A es un entorno sencillo y divertido para los alumnos más jóvenes, que les inicia en ese camino y
les introduce a los conceptos inherentes a la programación estructurada de un modo que parece un juego, pero con
muchas más profundidad de lo que a primera vista se percibe.
¿QUÉ ES ARDUINO?
Arduino es una plataforma de código abierto basada en una placa con un micro controlador
y un entorno de desarrollo. Se desarrolló con la idea de facilitar la creación de todo tipo de
proyectos de electrónica y hacerlo accesible a los no profesionales.
De entre todas las plataformas de hardware libre, hemos elegido Arduino porque ofrece ciertas ventajas para estudiantes,
profesores y aficionados:
Es barata.
Es multiplataforma: el software de Arduino se puede ejecutar desde sistemas operativos Windows, Linux y
Macintosh OSX.
Es fácil de usar y de programar.
El software y el hardware son de código abierto y ampliable.
Tiene una comunidad de usuarios inmensa.
Es compatible con muchísimos periféricos de todo tipo.
Tiene infinidad de aplicaciones.
Un programa consiste en una serie de instrucciones que se ejecutan de manera secuencial. Por eso las instrucciones
deben ser:
Programar se podría resumir como proporcionarle esas instrucciones a una máquina para que haga lo que nosotros
queramos. Para poder comunicarnos con ella necesitamos un lenguaje común. A esto le llamamos lenguaje de
programación.
Existen muchos lenguajes de programación, y aunque los hay de diferente dificultad de aprendizaje, lo cierto es que
aprender cualquiera de ellos no es una tarea sencilla. En el caso de Arduino se programa en una variante de C++.
Una de las mayores barreras que existen a la hora de empezar a trabajar con Arduino en educación primaria o secundaria
es precisamente la de tener que escribir código.
Un entorno gráfico de programación sustituye el código del lenguaje de programación por bloques gráficos para acercar
a este mundo de manera atractiva, accesible y divertida a todas las personas que quieran aprender a programar,
especialmente a los niños y adolescentes.
A lo largo de este curso utilizaremos el entorno gráfico Scratch 4 Arduino (S4A), basado en el popular Scrath desarrollado
por el MIT, que proporciona una herramienta de programación sencilla para la placa Arduino.
S4A es compatible con las placas Arduino Uno, Diecimilia y Duemilanove y funciona en los sistemas operativos
más populares: Windows, Linux y MacOS.
Es importante saber que nuestra placa Arduino sólo ejecutará el programa mientras esté conectada al PC.
Con S4A no podemos conectar la placa Arduino a una fuente de alimentación y que siga ejecutando el último
programa que le hemos cargado
MATERIALES NECESARIOS
Somos conscientes de la dificultad que puede suponer conseguir los materiales necesarios para seguir el curso, y por eso
hemos desarrollado un kit de Inicio que se pueda usar como base para su seguimiento con garantías.
Aunque en el kit se incluyen cosas que no usaremos en este curso, si seguís adelante tendréis todo lo que necesitáis para
seguir con el curso de programación en el IDE de Arduino, en el que aprenderemos a programar con código (derivado del
C++) , y utilizaremos nuevos y más complejos componentes electrónicos.
No pretendemos que nuestro kit sea imprescindible, ni que no se pueda hacer con muchos otros que existen en el
mercado, sino que simplemente nos parece importante poder conseguir el material necesario para seguir los cursos por
completo y a un precio ajustado.
Creemos que si completáis nuestros humildes cursos estaréis en buenas condiciones para montar vuestros propios
proyectos, o si sois entidades de formación reglada, dar a vuestros alumnos unas nociones muy interesantes de
programación y electrónica, que estamos seguros serán de interés en su formación intelectual. Os invitamos a ello.
NUESTRO PRIMER PROGRAMA SCRATCH
OBJETIVOS
No tiene ningún sentido tratar de explicar para qué sirven cada una de las opciones y bloques que encontramos en el
entorno S4A, porque probablemente se os olvidarían la mayoría al de diez minutos (O menos, que ya nos
conocemos). Igual que la mejor manera de aprender a andar es andando, la mejor manera de aprender a programar es ir
programando poco a poco. De momento nos basta con saber que al arrancar S4A nos encontramos una pantalla con 5
zonas diferentes. Iremos explicando qué son y para qué sirven cada una de ellas a lo largo del curso.
Tipos de bloques.
Listado de bloques de una determinada categoría.
Contenido de un objeto: programas, disfraces y sonidos.
Escenario.
Listado de objetos.
El ejercicio típico para empezar a programar suele ser el blinking LED (LED intermitente), porque es fácil de programar e
ilustra la capacidad de Arduino para interactuar con el mundo exterior.
Es interesante destacar aquí, los PCs de sobremesa a los que estamos ya tan habituados, son rapidísimos y con
capacidades muy lejos del alcance de Arduino y otros pequeños procesadores de bajo costo. Pero en cambio,
estos son capaces de interactuar con el mundo exterior fácilmente algo que queda casi fuera del alcance de los
potentes PCs.
Esta capacidad de interactuar con el exterior y no simplemente realizar operaciones internas aisladas, ha sido
bautizada como computación fisica y abre unas posibilidades inmensas, como las impresoras 3D, los Drones y
automatismos de todo tipo.
Y aun más interesante, están al alcance de cualquiera con interés y no hace falta ser ingeniero
para comprobarlo, como esperamos poderos demostrar.
Arduino tiene varias maneras de relacionarse con el mundo exterior. Vamos a empezar por los pines digitales de
entrada y de salida.
Aunque las placas Arduino tienen la capacidad de utilizar cualquiera de los pines digitales como entrada o salida, en el
entorno S4A vienen ya predefinidos:
Entradas digitales: para leer información digital del mundo exterior. En S4A corresponden a los pines 2 y 3. (En
rojo)
Salidas digitales: para enviar una señal digital al mundo exterior. En S4A corresponden a los pines 10, 11 y 13.
(En amarillo).
Las señales digitales son aquellas que sólo pueden tomar dos valores, 0 y 1 (HIGH y LOW). En Arduino corresponden a
valores de 5V para HIGH y 0V para LOW.
Aunque al principio puede sonar raro, muchas cosas son digitales. Por ejemplo puedes salir de casa o no, pero
no hay un término intermedio (Filósofos abstenerse)
Puedes aprobar sí o no. Cuando alguien te explica que no ha aprobado pero en realidad es como si si,
suele acabar en recuperación.
Esta dualidad tan sencilla es la base de funcionamiento de toda la computación actual aunque aún os parezaca
increíble.
Nuestro primer programa será un LED que parpadea cada segundo. Para ello vamos a utilizar la salida digital 13 porque
tiene conectado un LED directamente en la placa Arduino. De esta manera no tendremos que realizar ningún montaje y
nos podremos centrar en explicar los bloques que compondrán el programa y como cargarlo en la placa.
Para empezar nos fijamos en la parte de arriba a la izquierda del S4A. Ahí es donde se escogen las diferentes categorías
de bloques que hay.
En este caso seleccionaremos la categoría “Control” y vemos como debajo aparece la lista de bloques que entran dentro
de ese grupo de “Control”.
Los bloques de “Control” son los que indican a nuestro programa cómo y cuándo interpretar los demás bloques.
Todos son de color amarillo.
Si os fijáis en los bloques veréis que tienen una forma determinado a modo de pieza de un puzle.
Sólo determinados bloques encajan con otros, lo que nos ayudará a la hora de componer las estructuras de
nuestros programas.
Normalmente los programas los empezaremos con el primero de los bloques (El de la bandera verde) y todos los
demás están por debajo de éste. Pulsamos con el botón izquierdo del ratón encima de él y lo arrastramos hacia
la parte central de S4A. Con este bloque lo que hacemos es que el programa se ejecute cuando pulsemos la
bandera verde de la parte de arriba a la derecha y hasta que pulsemos en el hexágono rojo.
Además el bloque “por siempre” tiene un hueco en medio en el que podremos encajar
otras instrucciones, de manera que todo lo que esté dentro de él se ejecute en
secuencia hasta el final. Una vez que termina, vuelve a empezar desde el principio del
bloque, haciendo un ciclo sin fin.
Lo que vamos a hacer ahora es elegir los bloques que enviarán las señales a la salida
digital para encender y apagar el LED. Este tipo de bloques están en la categoría
de “Movimiento”.
De los bloques que aparecen vamos a utilizar los de “digital 13 encendido” y “digital 13
apagado”. Primero cogeremos “digital 13 encendido” y lo metemos, arrastrando,
dentro de del bloque “por siempre”.
Si en este punto damos a la bandera verde para ejecutar el programa, veremos que el
LED se enciende y se mantiene encendido hasta que paremos el programa.
Con esto lo que hacemos es que el programa se quede en la situación en la que está
durante 1 segundo (o el tiempo que nosotros le indiquemos).
Como lo que queremos es que se pague ahora y se mantenga apagado dos segundos,
repetimos lo mismo pero con el bloque “digital 13 apagado”.
Ya hemos terminado nuestro primer programa. Sólo nos queja ejecutarlo y ver si
funciona correctamente.
RESUMEN DE LA SESIÓN
En esta sesión hemos aprendido varias cosas importantes:
La estructura básica de un programa.
A seleccionar bloques y añadirlos a nuestro programa.
La importancia de la forma y color de los bloques y cómo interactúan entre sí.
Como ejecutar y parar un programa.
NUESTRO PRIMER CIRCUITO
OBJETIVOS
Fijar algunas ideas básicas sobre electrónica.
Montar un circuito con LED y Resistencia.
Aprender el manejo de la Protoboard.
Instalar del blinking LED en la Protoboard.
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED
V = I x R
Lo que implica que si la resistencia del circuito es nula (O casi, como en el caso de un cable de cobre) la intensidad de la
corriente se dispara y puede llegar a fundir el cable o componente que encuentre. Esto se conoce
como Cortocircuito o Corto simplemente y debe ser evitado decididamente ya que suele acabar con olor a quemado y
algún susto, en el mejor caso.
NUESTRO PRIMER CIRCUITO ELECTRÓNICO
En la sesión anterior programamos el LED conectado al pin 13 de nuestro Arduino. Ahora vamos a duplicar este circuito
en el exterior. Su esquema eléctrico sería así:
Vemos a la izquierda el símbolo del diodo LED que es emisor de luz y por eso tiene esas flechitas salientes para indicarlo
(LED viene del inglés Light Emitting Diode, o diodo emisor de luz).
La resistencia se representa por ese segundo símbolo indicando un nombre R1 y su valor 330Ω.
A su vez vemos a la izquierda las letras GND para indicar que es el negativo. Tiene muchos nombres: Masa, El símbolo –,
Tierra (Aunque no es lo mismo), Ground, Negativo, cátodo.
Por último a la derecha el símbolo de +5V indica el extremo de tensión positiva o positivo y a veces se representa como
Vcc. Las líneas rectas y negras indican conexión eléctrica mediante cables conductores.
Una vez comprendido el esquema eléctrico del circuito, veamos la conexión en la Protoboard:
Este esquema sigue una pauta de marcar los cables que van a positivo en rojo y los que van a GND en negro. Os
recomendamos encarecidamente que sigaís esta norma en la práctica porque ayuda a identificar posibles problemas y
evita errores.
La protoboard une los puntos horizontales de la línea azul entre si y los horizontales de encima de la línea roja entre sí,
(se les llama raíles), pero no conecta el raíl rojo positivo con el raíl negro negativo.
En algunas protoboards estos raíles llegan sólo hasta la mitad de ella. La otra mitad es otro raíl diferente. En ese caso las
líneas roja y azul están divididas en dos en la mitad de la línea.
A su vez existen dos zonas de líneas verticales en la protoboard. Estas líneas verticales están unidas entre sí
internamente, para facilitar la conexión de los componentes, pero no se unen las líneas paralelas, ni tampoco a la otra
mitad separada por el canal central.
En la imagen las diferentes líneas de colores representan algunos ejemplos de cómo están unidos internamente los
puntos de conexión. Todos los puntos debajo de una línea de un mismo color son un único punto en cuanto a conexión
eléctrica.
Podemos ahora ejecutar el programa que hicimos en la sesión 2, siguiendo el procedimiento que definimos allí, y
veremos cómo esta vez, además del LED propio de Arduino, nuestro LED exterior parpadea siguiendo el mismo ciclo de
encendido y apagado.
RESUMEN DE LA SESIÓN
En esta sesión hemos aprendido varias cosas importantes:
Hemos visto algunos conceptos básicos de electrónica: la ley de Ohm, que relaciona la tensión la resistencia.
Hemos identificado dos componentes básicos en electrónica, resistencias y los diodos.
Aprendimos a descifrar los primeros esquemas electrónicos.
Hemos montado nuestro primer circuito con estos componentes.
EJECUCIÓN DE UN PROGRAMA EN PANTALLA
OBJETIVOS
MATERIAL REQUERIDO.
Una vez aceptado volveremos a la pantalla de” Disfraces” y le cambiaremos el nombre al “disfraz1” por “led_on”.
(Si al tratar de escribir “_” os escribe “?”, podéis escribir el guión bajo “_” haciendo como si escribieseis “?”)
Nos queda dibujar el disfraz que representará el diodo LED apagado. Para hacerlo, en vez de crear uno de nuevo
copiaremos el anterior y lo rellenaremos de gris.
Pulsamos el botón “Copiar” que hay en la figura “led_on” que hemos creado. Se nos creará una nueva figura
idéntica.
Le damos a “Editar” en la nueva figura que hemos creado y rellenamos el círculo de gris.
Cambiamos el nombre de la figura por “led_off”..
Si en vez de dibujarlos preferís usar una imagen que tengáis guardado en el ordenador o alguna de las que vienen
predefinidas en S4A, bien sea un dibujo o una foto, podéis utilizar el botón de “Importar” en vez de “Pintar”.
Lo que queremos es que cuando se encienda el LED, en el escenario se visualice el disfraz “led_on”, y cuando se
apague el disfraz “led_off”. Los bloques relacionados con los disfraces están en el grupo “Apariencia”. En este caso
usaremos el bloque “cambiar el disfraz a”.
Como queremos que esto pase inmediatamente a la vez que el encendido o apagado debemos colocarlo justo
debajo de los bloques de encender y apagar. También valdría colocarlo justo encima.
Recordad que las instrucciones se llevan a cabo de forma secuencial, una inmediatamente detrás de otra,
mientras no le indiquemos lo contrario.
Seleccionaremos “led_on” en el bloque de “cambiar disfraz a” después de encenderlo, y “led_off” después de
apagarlo.
Esta vez para que el programa espere vamos a usar el bloque de “Apariencia” “pensar mmm… por 2 segundos”.
También podemos cambiar el tiempo que queremos que espere y el mensaje que queremos que se vea mientras
espera.
Ya sólo nos queda dar a la bandera verde y comprobar que nuestro programa funciona correctamente. Veremos
que mientras espera podemos ver el mensaje que hemos escrito en el bloque “pensar mmm… por 2 segundos”.
Podéis descargaros el programa completo desde aquí: Led en pantalla.
RESUMEN DE LA SESIÓN
A dibujar disfraces.
Incluir los disfraces en nuestro programa.
Visualizar en la pantalla de nuestro PC el estado de nuestro programa.
OBJETIVOS
.
MATERIAL REQUERIDO.
Arduino Uno o compatible y con el firmware para S4A cargado.
Una Protoboard.
En la sesión anterior vimos cómo conectar correctamente un LED. Ahora vamos a complicar un poco el circuito
conectando tres diodos LED que se encenderán y apagarán para construir nuestro propio semáforo.
Si hemos entendido el circuito con un sólo LED es fácil entender también este circuito. El esquema electrónico
sería el siguiente:
Hemos conectado cada uno de los diodos LED a diferentes salidas digitales para poder gobernarlos de forma
independiente.
Sólo necesitamos una resistencia porque está en serie con los tres diodos. La corriente que circule por cualquiera
de ellos lo hará también por la resistencia, de forma que protegerá a los tres de quemarse.
Cerramos el circuito conectando la resistencia a GND.
El montaje del circuito en la placa protoboard sería el siguiente:
En general, se considera buena costumbre (la recomendamos), montar los circuitos que veamos a partir del
esquema electrónico del mismo, más que a partir del diagrama de conexiones de la protoboard.
La razón es que con el esquema, la comprensión del circuito es completa y se evita la tentación de copiar la
práctica sin necesidad de entenderla.
Además, el diagrama electrónico del circuito es su completa descripción y suele resultar más sencillo comprender
la función del mismo. En cambio a medida que los circuitos se hacen más complejos, comprender su función desde
un esquema de protoboard puede complicarse mucho, y peor aún, llevar a una interpretación errónea.
Un semáforo funciona de forma que se encienden primero el rojo, luego el verde, y por último el amarillo. Después
volvería a empezar por el rojo.
Para programar nuestro semáforo no necesitamos ningún bloque que no hayamos usado antes. La única novedad
será elegir en el bloque “digital encendido” y “digital apagado” la salida digital que queramos utilizar.
Comenzaremos el programa con los mismos bloques de control que comenzamos la práctica anterior, ya que
queremos que el semáforo funcione continuamente mientras esté pulsada la bandera verde.
Lo primero que queremos hacer es que se encienda el LED rojo durante 3 segundos y después se apague. Como
es el que hemos conectado a la salida digital 13, seleccionaremos esa salida en los bloques de “Movimiento” de
encender y apagar.
En el bloque de “Control” de “esperar” le ponemos 3 segundos.
No queremos que pase tiempo entre que se apague el LED rojo y se encienda el amarillo. Por eso no necesitamos
poner otro bloque de “esperar” después de apagar.
Hacemos los mismo para el LED verde (pin digital 10) y para el amarillo (pin digital 11), con la excepción de que el
amarillo solo queremos que este encendido 1 segundo.
Si damos a la bandera verde para ejecutar el programa, veremos cómo funciona nuestro propio semáforo en la
placa Arduino.
Siguiendo el concepto de la práctica anterior, vamos a tratar de visualizar el comportamiento de nuestro programa
en nuestro monitor.
Dibujamos los tres disfraces para simular nuestro semáforo en la pantalla del ordenador, uno por cada situación
diferente de las que se dan.
Incluimos los respectivos bloques de “Apariencia” “cambiar el disfraz a” como hemos aprendido, y seleccionamos
que disfraz queremos que usen.
Al ejecutar el programa veremos cómo funciona nuestro programa del semáforo, tanto en nuestra
placa Arduino como en nuestro monitor.
COLOCANDO UN FONDO DE ESCENARIO
Hasta ahora todos nuestros escenarios han consistido en un fondo blanco. Ahora vamos a sustituirlo por un fondo
en el que colocar nuestro semáforo de forma que le dé un poco más de realismo.
Para ello seleccionaremos el icono del escenario en el listado de objetos de la parte inferior derecha.
Para cambiar el fondo del escenario iremos a “Fondos”, que se encuentra en el mismo sitio que la pestaña
de ”Disfraces” de los objetos.
En este caso en vez de dibujar nosotros un fondo, vamos a utilizar una imagen que ya esté creada dándole al
botón “Importar”:
Podemos utilizar los fondos que vienen por defecto en S4A o una imagen que tengamos en el ordenador.
En lugar de dibujar los objetos, podemos importar una imagen de la misma forma que estamos haciendo con el
escenario.
En este caso yo he elegido una imagen de las que vienen por defecto en S4A en la que aparecen unas vías de
tren. El problema es que el semáforo es demasiado grande. Por suerte, con los iconos que hay encima del
escenario podemos agrandar, reducir, borrar y duplicar objetos. Si pasamos el ratón por encima nos mostrará para
que sirve cada uno.
Reducimos el semáforo y lo colocamos donde queramos. Ahora seleccionamos de nuevo el único objeto que hay
en el listado de objetos del escenario y ejecutamos el programa.
Podéis descargar el programa completo desde aquí: Semáforo.
Una variante de este programa, usando el mismo circuito, sería hacer un efecto de ola en el que las luces subieran
dejando encendidos los LEDs previos hasta alcanzar el máximo y ahora descender apagando los LEDs superiores
hasta apagarlos todos. Os recomiendo intentar resolver el problema como desafío, antes de mirar solución.
En realidad la parte más difícil de aprender a programar es aprender a resolver los problemas de un modo que nos
permita darle instrucciones a un ordenador para que lo lleve a cabo.
Estos procedimientos secuenciales de cómo resolver un cierto tipo de problemas es lo que se conoce como
un algoritmo.
Según el problema que abordemos el algoritmo será más o menos complicado pero aprender a programar tiene
más que ver con desarrollar esta capacidad de resolver problemas lógicos en una secuencia de pasos que
podamos codificar en un ordenador.
Por cierto, cualquiera puede aprender a programar. No lo dudéis. Solo que como en todo, a unos les lleva más
tiempo que a otros desarrollar la habilidad necesaria. Al principio muchos me dicen que les duele la cabeza de
pensar en este tipo de cosas, pero os animo a continuar (poco a poco si es preciso) porque os encontrareis que
vale la pena.
Si se os resiste, podéis ver aquí la estructura programa para hacer el efecto ola.
Si queréis montar el circuito con más LEDs, deberías poner una resistencia por cada uno de ellos o por cada dos; o
podrías quemarla cuando estén encendidos todos los LEDs.
Lo mismo os digo si queréis que estén encendidos los tres LEDs a la vez durante mucho tiempo.
RESUMEN DE LA SESIÓN
OBJETIVOS
.
MATERIAL REQUERIDO.
Un diodo LED.
Un pulsador.
Con frecuencia en electrónica necesitamos saber si una luz está encendida o apagada, si alguien ha pulsado un
botón o si una puerta ha quedado abierta o está cerrada.
A este tipo de señales todo/nada, SI/NO, TRUE /FALSE, 0/1 se les llama digitales o Booleanas.
Muchos de los sensores y actuadores que vemos en el mundo real son digitales:
Como sensores digitales podemos mencionar botones y pulsadores, finales de carrera, desbordamiento de nivel,
sensores de llamas, humo o gases tóxicos. Los leemos mediante las entradas digitales. En S4A disponemos de los
pines digitales 2 y 3 que actúan como entrada digital.
Como actuadores digitales, tenemos luces, alarmas, sirenas o desbloqueo de puertas. Los gobernamos mediante
las salidas digitales. Ya sabemos de otras sesiones que en S4A son los pines digitales 10, 11 y 13.
En esta sesión vamos a leer un botón o pulsador externo (entrada digital) y vamos a encender o apagar un
LED (salida digital) en función de que el pulsador esté presionado o no.
Este circuito es un poco más complicado que los que hemos visto hasta ahora. El montaje del LED será el mismo
que en las sesiones anteriores. En este caso lo conectaremos a la salida digital 10.
Por primera vez vamos a utilizar el pin de 5V de nuestra placa Arduino. A diferencia de las salidas digitales, que
pueden dar HIGH o LOW, este pin siempre dará HIGH.
Conectaremos el pulsador S1 al pin de 5V, y cerraremos el circuito conectando la otra parte del pulsador a la
entrada digital 2 y a GND a través de una resistencia.
De esta forma cuando el pulsador se cierra obtenemos 5V, HIGH, en la entrada digital 2. Si está abierto obtenemos
0V, LOW. Y entonces, ¿para qué sirve la resistencia R1?
Si leemos el valor de una entrada digital que no tiene nada conectado veremos cómo en ocasiones los valores en
la entrada fluctúan. Para evitarlo podemos conectar una resistencia PULLDOWN o PULLUP. Una resistencia de
PULLDOWN lo que hace es garantizar que cuando el botón no está pulsado, se lea siempre LOW, es decir, fija la
tensión a 0V. Por el contrario, una resistencia de PULLUP garantiza que el valor leído es HIGH, por tanto 5V.
Esta resistencia es clave para que las lecturas del pulsador sean consistentes. El circuito, simplemente, no
funcionará bien si se omite.
Nosotros hemos realizado el montaje con la resistencia en PULLDOWN. Mientras no presionemos el pulsador,
permanecerá abierto, o sea que no dejará que circule la corriente a la otra parte. De esta manera lo que tenemos
es el pin 2 conectado a GND a través de la resistencia R1, de modo que leerá LOW.
Al cerrarlo lo que hacemos es cerrar el circuito del pin 2 a 5V, con lo que leerá HIGH.
Para leer el pulsador utilizaremos usar un nuevo bloque de “Control” “si … / si no”.
Si se cumple la condición que le pongamos dentro del espacio en forma de hexágono (el hueco recuadrado en
rojo), el programa ejecutará los bloques que estén dentro del “si …” hasta llegar a “si no”, y se saltará todo lo que
haya dentro de “si no”.
Si no se cumple, se saltará todos los bloques que estén dentro de “si …” y ejecutará los bloques que estén dentro
de “si no” hasta el final.
Lo primero que haremos será crear la condición. Para ello utilizaremos los bloques de la
categoría “Operadores”. Como en este caso lo que queremos es crear una condición que compruebe el valor de
una señal digital usaremos el bloque de “Operadores” “… = …”. Lo seleccionamos y lo arrastramos hasta el hueco
en forma de hexágono.
Para terminar de crear la condición tenemos que decidir qué es lo que queremos comparar. En este caso lo que
queremos saber es si la entrada digital 2 está leyendo HIGH o LOW. El bloque para leer entradas digitales está en
la categoría “Movimiento”.
Aunque en este bloque parece que lo que comparamos es si está presionado, eso dependerá del circuito. Sería
mejor que lo interpretáramos simplemente como “valor sensor digital …”; y ver qué valor realmente está recibiendo
esa entrada digital.
Recordemos que hemos montado el circuito con la resistencia conectada en PULLDOWN, de forma que si el
pulsador está pulsado la entrada leerá HIGH.
En este tipo de comparaciones LOW corresponde a false y HIGH a true.
Si hubiésemos conectado la resistencia en PULLUP, la entrada “sensor digital … presionado” leería HIGH o true
cuando con el pulsador sin presionar. Es importante entender cómo funciona en realidad, y así no tendremos miedo
a montar o interpretar ningún circuito electrónico.
Si hemos entendido esto último, deberíamos tener más o menos claro que lo que queremos conseguir con este
bloque es algo así:
Si el pin 2 está conectado a LOW (false), queremos que el LED esté apagado. Esto quiere decir que mientras no
presionemos el pulsador, el LED permanecerá apagado.
Si el pin 2 está conectado a HIGH (true), queremos que el LED se encienda. O sea que mientras presionemos el
pulsador, el LED permanecerá encendido.
Pasándolo a bloques nos quedaría la siguiente estructura:
Podéis descargar el programa completo desde aquí: Pulsador. Ya sólo nos queda dar a la bandera verde y probar
si funciona correctamente.
En la lista de valores del escenario podemos ver el estado de las entradas en cualquier momento, tanto analógicas
como digitales. En este caso estamos utilizando la entrada digital 2.
Para practicar, os recomiendo que montéis el circuito con la resistencia en PULLUP y modifiquéis el programa para
que se adapte al nuevo circuito.
RESUMEN DE LA SESIÓN
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED.
Un pulsador.
El esquema y el montaje son los mismos que los de los del programa del pulsador de la sesión 6. La diferencia es
que en esta ocasión utilizaremos el pulsador como un interruptor, de forma que una pulsación encienda el LED y
la siguiente la apague.
Vamos a construir el programa de forma que siempre que empecemos a ejecutar el programa el LED esté
apagado. Para ello tendremos que hacer que al iniciarse el programa se ejecute el bloque “digital 10 apagado” una
sola vez, y después ya se ejecute el resto de forma cíclica hasta que lo paremos.
Como queremos que se ejecute una única vez, lo pondremos debajo del bloque “al presionar” y antes del
bloque “por siempre”.
A este tipo de estructura le llamaremos condiciones iniciales, ya que sólo se ejecuta sólo una vez y al iniciarse el
programa.
UTILIZACIÓN DE VARIABLES
Para poder encender o apagar el LED dependiendo del estado en que se encuentre, lo primero que tenemos que
conseguir es saber en todo momento cuál es el estado de la salida digital 10. Para ello vamos a introducir el
concepto de variable.
Una variable nos permite guardar un valor para utilizarlo cuando lo necesitemos.
En este caso usaremos una variable para guardar el estado de la salida digital 10 y de esa forma saber si el LED
está encendido o apagado.
Para crear una variable nueva iremos a la categoría de bloques “Variables” y haremos click en “Nueva
variable”. Nos pedirá un nombre. Como la queremos para guardar el estado del LED, la llamaremos
simplemente “led”.
Al aceptar veremos que se nos crean nuevos bloques relacionados con la variable led que acabamos de crear, y en
el escenario se nos mostrará el valor que tiene almacenada la variable. Podemos arrastrarla para colocarla donde
queramos.
Como necesitamos saber en todo momento en qué estado se encuentra el LED, lo que haremos será fijar el valor a
false cuando la salida digital 10 esté a LOW (LED apagado), y a true cuando lo esté a HIGH (LED encendido).
Recordad que una salida digital es un valor booleano, sólo puede tomar dos valores, por eso nuestra variable
también será booleana y tomará sólo dos valores, true o false.
Ahora ya queremos que el resto de instrucciones se ejecuten de manera cíclica si cumple cierta condición. Para
ellos utilizaremos el el bloque de“Control” “por siempre si …”, que combina en un sólo bloque los bloques “por
siempre” y “si …”.
Para detectar cuándo se acciona el pulsador crearemos una condición igual a la que hicimos en la sesión anterior.
Recordad que la salida digital 2 lee HIGH(true) cuando apretamos el pulsador porque hemos realizado el montaje
con la resistencia en PULLDOWN.
De esta forma los bloques que estén dentro del bloque “por siempre si…” se ejecutarán una vez si se presiona el
pulsador.
Podéis probar a montar el circuito con la resistencia en PULLUP como explicamos en la sesión 6.
Hasta ahora nuestro programa conoce el estado del LED al iniciarse el programa y detecta cada vez que
presionemos el pulsador.
Lo que nos falta es que sea capaz de encender el LED si está apagado y de apagarlo si está encendido. Para ello
tendremos que usar el bloque de “Control” “si / si no” para comprobar el estado de la variable “led” que hemos
creado.
Hemos utilizado el bloque de “Variables” “led”. Este bloque tiene almacenado el último valor que ha cogido
la variable.
Hemos utilizado el operador “… = …” para saber si ha guardado HIGH o LOW (true o false), ya que esta variable
toma valores booleanos.
Ya sólo nos queda decirle lo que tiene que hacer en cada caso:
Si el LED está apagado, la variable “led” tendrá guardado false y cumplirá la condición, así que lo encenderemos.
Si no está apagado (o lo que es lo mismo, está encendido), lo apagaremos.
Tenemos que recordar que queremos guardar en la variable “led” el estado del LED conectado a la salida digital
10, así que cada vez que lo encendamos o apaguemos, guardaremos su valor en la variable.
Si en este punto probásemos el programa veremos que a veces funcionará bien y otras no, y que si mantenemos el
pulsador presionado el LED se encenderá y se apagará continuamente.
Esto se debe a que S4A se comunica con nuestro Arduino para enviar y recibir señales cada 75ms, o sea más de
10 veces por segundo; lo que significa que si tardamos más que ese tiempo en soltarlo, habrá leído varias veces el
estado del pulsador y cada vez que lo lea lo encenderá o lo apagará.
La solución para esto es muy sencilla. Simplemente le diremos que después de encender o apagar el LED espere
un tiempo antes de seguir ejecutando el programa, de manera que no volverá a leer el pulsador hasta que pase ese
tiempo. Con 0,3 segundos tenemos tiempo de sobra.
RESUMEN DE LA SESIÓN
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED
ESQUEMA ELECTRÓNICO
Para esta sesión vamos a utilizar el mismo circuito que para el blinking LED. Sólo necesitamos el LED porque
simularemos un pulsador virtual en la pantalla del PC.
De esta manera comprobaremos como al hacer click en el pulsador virtual, se enciendel LED físicamente, además
de en el escenario de S4A.
CONCEPTO DE OBJETO
Aunque hasta ahora no hemos hablado de ellos, ya hemos utilizado objetos en todas las sesiones anteriores. Lo
podemos ver más claramente en las sesiones 4 y 5, en las que mostrábamos los disfraces de los objetos en el
escenario.
En las otras sesiones no hemos necesitado crear más objetos porque sólo necesitábamos representar uno en el
escenario, un LED o un semáforo. Ahora necesitaremos crear un objeto nuevo que usaremos como pulsador.
Siempre que empezamos un programa nuevo se nos crea por defecto un objeto que incluye el disfraz en el que
hay dibujada una placa Arduino al que llama Arduino1. Podemos ver cuántos objetos diferentes hay en
el escenario de nuestro programa en el listado de objetos de la parte inferior derecha de la pantalla de S4A.
Lo primero que haremos será modificar los disfraces del objeto que viene creado por defecto igual que en la
sesión 4, con los dos disfraces “led_off”y “led_on”.
Después borraremos el disfraz “costume1” con la “x” que hay a la derecha del disfraz y cambiaremos el nombre del
objeto a “Led”.
Aunque no es estrictamente necesario cambiar el nombre del objeto ni borrar el disfraz que no vamos a usar, esto
nos ayudará a tener el programa más limpio y ordenado.
El orden y la limpieza son unas buenas costumbres que deberíamos mantener a lo largo de todas las sesiones.
Si más tarde empezamos a programar con código en vez de bloques, será aún más importante.
En el escenario habrá cambiado el objeto “Arduino1” por el objeto “Led” que hemos creado.
Vamos a hacer un objeto nuevo para simular un pulsador y utilizarlo como un interruptor, de la misma forma que
hicimos en la sesión 7 con uno físico.
Para ello en el listado de objetos daremos a al icono “Pintar un objeto nuevo”. Automáticamente nos abrirá el editor
gráfico y dibujaremos o importaremos un pulsador.
Cuando le demos a aceptar veremos que se nos habrá creado un nuevo objeto con el nombre de “Objeto1” y un
disfraz con el dibujo que hemos hecho con el nombre “disfraz1”.
Si al crearlo nos aparece en el escenario montado sobre el LED o en una posición que no nos gusta, podemos
hacer click en él y arrastrarlo a otra parte del escenario.
Cambiaremos el nombre del objeto a “Pulsador“ y el nombre del disfraz a “pulsador”, de la misma forma que hemos
hecho con el objeto Led.
PROGRAMANDO EL PULSADOR
En S4A cada objeto que hagamos puede tener su propio programa para guiar su comportamiento y comunicarse
con los otros objetos. Lo primero que haremos será seleccionar el objeto” Pulsador” en el listado de objetos e ir a la
pestaña “Programas”.
Lo que queremos es que al hacer click en el pulsador en el escenario, envíe una señal al resto de objetos.
Utilizaremos el bloque de “Control” “al presionar Pulsador” para empezar el programa, así cada vez que lo
pulsemos en el escenario, llevará a cabo las acciones que le hayamos programado.
Como queremos que al pulsarlo envíe una señal a los demás objetos utilizaremos el bloque “enviar a todos”.
En el menú desplegable seleccionaremos “nuevo”, y en el nombre del mensaje escribiremos “on” (podéis ponerle el
nombre que queráis).
Colocaremos el bloque en el programa debajo de “al presionar pulsador”.
PROGRAMA LED
Una vez hemos programado el objeto Pulsador seleccionamos el objeto Led en donde vamos a construir la parte
principal de nuestro proyecto.
El programa será muy parecido al de la sesión 7, pero se ejecutará cada vez que reciba la señal “on” del pulsador
que hemos creado. Este bloque sustituirá a la condición en la que comprobábamos si el pulsador estaba
presionado de la sesión 7.
Necesitaremos crear una variable “led” igual para almacenar el estado del LED, que si lo hemos conectado igual
que en la sesión 3, estará conectado al pin digital 13.
Crearemos una condición “si / no” de la misma manera que hicimos en la sesión 7.
En este caso incluiremos los bloques de “Apariencia” para cambiar los disfraces del objeto “Led”.
Esta vez no necesitamos pulsar la bandera verde, si no que cada vez que hagamos click en
nuestro pulsador virtual, el LED se encenderá o apagará tanto en el escenario como físicamente en la protoboard.
RESUMEN DE LA SESIÓN
SALIDAS ANALÓGICAS
Controlando la intensidad de brillo de un LED
OBJETIVOS
.
MATERIAL REQUERIDO.
Arduino Uno o compatible y con el firmware para S4A cargado.
Un PC con el entorno S4A correctamente instalado y configurado.
Una Protoboard.
Un diodo LED.
ANALÓGICO Y DIGITAL
Todas las señales que hemos manejado hasta ahora, tanto de entrada como de salida, han sido digitales. Como
ya sabemos, este tipo de señales solo pueden tomar dos valores, HIGH o LOW, 0 o 1.
Hasta ahora hemos utilizado este tipo de señales para encender o apagar un LED o leer si un pulsador está
presionado o no. De hecho, muchos de los elementos que existen son de este tipo, como una alarma o un sensor
de presencia.
Sin embargo existen muchas otras cosas que pueden tomar cualquier valor dentro de unos límites. Si lo que
queremos es, por ejemplo, leer la temperatura, controlar la intensidad del brillo de un LED o la velocidad de giro de
un motor, necesitaremos de las señales analógicas.
En esta sesión utilizaremos una salida analógica para controlar la intensidad del brillo de un LED.
LAS SALIDAS ANALÓGICAS
En realidad, las placas Arduino (excepto la Arduino Due) carecen de salidas analógicas puras, pero utilizan un truco
para conseguir que una salida digital se comporte como una analógica.
No vamos a entrar a explicarlo, pero si os interesa se llama Pulse Width Modulation, PWM.
Podéis buscarlo en la sesión equivalente de salidas analógicas del curso de Arduino de esta misma página.
Es importante saber esto para que ahora no se nos haga raro saber que las salidas analógicas de Arduino en S4A
corresponden a los pines digitales 5, 6 y 9.
Las salidas analógicas de Arduino UNO pueden tomar valores entre 0 y 255, y en función de ese valor envían una
señal cuyo valor estará entre 0V y 5V.
Si para algún proyecto necesitamos más salidas digitales que las tres que conocemos, podemos usar las salidas
analógicas, utilizando el valor 0 para LOW y el 255 para HIGH.
El circuito electrónico es el mismo que el del blinking LED de la sesión 3, pero en este caso conectaremos el LED a
una de las salidas analógicas. En este caso hemos elegido la 6.
Para asignar un valor a las salidas analógicas utilizaremos el bloque “analógico … valor …” de la
categoría “Movimientos”. Seleccionaremos la salida analógica 6.
Vemos que podemos asignarle el valor que queramos. Si probamos a meter valores, entre 0 y 255, veremos como
el LED se ilumina con mayor o menor intensidad en función del valor que le metamos.
Ahora vamos a hacer un programa que encienda y a apague el LED poco a poco, es decir, que haga tomar a la
salida analógica todos los valores desde 0 a 255 y después haga lo mismo desde 255 a 0.
Para poder ir variando el valor de la salida crearemos una variable a la que llamaremos “i”. La idea es que la salida
tome siempre el valor de esta variable e ir incrementándola de 1 en 1 hasta 255, para después ir disminuyéndola
también de 1 en 1 hasta 0.
Lo primero que vamos a hacer es fijar las condiciones iniciales, fijamos el valor de la variable “i” a 0 y asignamos el
valor de i la salida analógica 6.
Ahora tendremos que conseguir hacer una estructura que sume 1 a la variable y se lo asigne a la salida analógica.
Como queremos que llegue hasta 255, tendremos que hacer que se repita 255 veces.
Para repetir una acción un número determinado de veces usaremos un nuevo bloque
de “Control”, el bloque “repetir … ”.
Para que cada vez que se repita sume 1 a la variable “i”, usaremos el bloque de “Variables” “sumar … a …”y
seleccionaremos la variable “i” y le indicaremos que sume 1.
Es importante que haga la suma antes de asignar el valor a la salida, o de lo contrario repetiría el valor 0 y sólo
llegaría a 254.
Para hacer que se vaya apagando poco a poco haremos lo mismo pero en vez de sumarle 1, le sumaremos -1.
Si probamos a ejecutar el programa ahora, veremos que el LED se ilumina poco a poco hasta llegar al máximo y
luego va apagándose poco a poco una sola vez. Si queremos que haga esto continuamente sólo tenemos que
meter todos los bloques, excepto las condiciones iniciales, dentro del conocido bloque “por siempre”.
Recordad que podemos ver el valor que tiene la variable en todo momento, y por lo tanto la salida analógica 6, en
la tabla de resumen de valores del escenario.
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Sin embargo, imaginad que necesitamos que un LED varíe de color en función de la temperatura que haya en una
sala; que esté azul cuando haga frío, vaya cambiando hacia amarillo para una temperatura normal y llegue al rojo si
se sobrepasa un determinado valor.
Podríamos poner varios LEDS de diferentes colores, pero lo más sencillo sería recurrir a un diodo RGB. Este tipo
de diodos tienen en un mismo encapsulado un LED de cada uno de los colores básicos, rojo, verde y azul (Red,
Green, Blue), de ahí su nombre, y comparten un cátodo común (Ground).
La conexión de este tipo de LED se realiza mediante cuatro pines, uno por cada color y otro para GND.
En función del valor de tensión que reciba cada pin R, G, B, conseguiremos un color diferente.
A partir de estos tres colores básicos se puede conseguir cualquier otro color.
No intentéis hacer esto pintando en un folio, porque sólo funciona con la luz.
ESQUEMA ELECTRÓNICO
El esquema electrónico es muy semejante al del semáforo de la sesión 5, pero utilizando las salidas analógicas, y
en vez de los tres LEDs, el diodo RGB.
Para identificar cada uno de los pines lo mejor sería leerse las especificaciones del fabricante, aunque lo más
normal es:
Hemos utilizado cables de colores para identificar cada pin con facilidad.
Si utilizáis un RGB con montura Keyes, podéis conectarlo directamente a la protoboard o usar cables de macho a
hembra.
CONTROLANDO EL RGB
Lo primero que haremos será un programa muy simple en el que asignaremos a mano un valor a cada una de
las salidas analógicas conectadas al RGB para comprobar que está bien conectado.
Vamos a hacer que se ilumine rojo, después verde y después azul, manteniendo cada color 2 segundos. Para
conseguir cada unos de los colores pondremos su pin correspondiente a 255 y los demás a 0.
Si queremos conseguir un color determinado podemos consultar el programa Paint si utilizamos Windows o
cualquier programa semejante de Linux o Mac.
Al arrancar el programa, en la parte derecha del selector de colores tenemos la opción de editar colores:
Si en esta pantalla seleccionamos un color, veremos en la parte inferior derecha el valor que corresponde a cada
uno de los colores primarios.
Si metemos esos valores en nuestras salidas analógicas, conseguiremos que nuestro LED RGB se ilumine en un
tono rosa.
Vamos a aprovechar el montaje para presentar un nuevo bloque que sirve para generar valores aleatorios. Es el
bloque de tipo “Operadores” “numero al azar entre … y …”.
Colocamos este bloque en el lugar en que metíamos a mano los valores.
Como los valores que pueden tomar están entre 0 y 255, los pondremos como límites en lugar de 1 y 10.
Haremos que espere 1 segundo después de cada ejecución para fijarnos bien en el cambio de color.
RESUMEN DE LA SESIÓN
ENTRADAS ANALÓGICAS Y
POTENCIÓMETROS
Moviendo objetos en el escenario
OBJETIVOS
MATERIAL REQUERIDO.
Un diodo LED.
Un potenciómetro de 10KΩ.
LOS POTENCIÓMETROS
Los potenciómetros son resistencias que tienen un mecanismo para variar su valor. En este caso nuestro
potenciómetro puede tomar valores de 0 a 10kΩ.
Hay muchos tipos de potenciómetros, pero todos ellos tienen 3 pines en fila.
Los de los extremos se comportan como una resistencia con el valor máximo del potenciómetro.
El pin central nos permite tomar valores de resistencia en función del ajuste que le hagamos.
Al ser resistencias, no tienen polaridad, da igual cuál de sus pines de los extremos usemos como positivo y cuál
como negativo.
Para comprender el funcionamiento del potenciómetro vamos a montar un circuito compuesto por
el potenciómetro, un LED y una resistencia de la siguiente forma:
Si el potenciómetro está al valor máximo, la resistencia en la rama del LED será muy grande y no se iluminará.
Si la resistencia del potenciómetro está ajustada a 0Ω, el LED se iluminará al máximo. Si no tuviésemos conectada
la otra resistencia de limitación al LED, lo quemaríamos.
Para ajustes de valores intermedios en la resistencia del potenciómetro, el LED se iluminará con mayor o menor
fuerza.
En realidad como estamos usando una resistencia de valor muy alto, costará un poco que el LED empiece a
iluminarse.
Utilizando el Arduino simplemente para dar tensión, el montaje en la protoboard quedaría de la siguiente manera:
Si vamos ajustando el potenciómetro veremos cómo varía la intensidad del brillo del LED.
Vamos a realizar un montaje en el que leeremos el valor a la salida del potenciómetro con
la entrada analógica A0.
Variando la resistencia del potenciómetro lo que buscamos es modificar la tensión a la salida del pin central. Así
podremos modificar el valor de las señales que leeremos con las entradas analógicas de Arduino, que como ya
sabemos, leen tensión.
Lo que hará nuestra placa Arduino será convertir el valor de la tensión que lee, entre 0 y 5V, a un valor entre 0 y
1023.
Estos 1024 valores y los 256 de las salidas analógicas no son números al azar, tienen que ver con laconversión
de analógico a digital y el número de bits de los convertidores de las placas Arduino. En este curso no vamos a
entrar en detalle en este tema.
Cuidado con usar sensores o fuentes de alimentación que proporcionen más de 5V o podemos quemar el chip
principal de nuestro Arduino.
Aunque no construyamos ningún programa, si vamos ajustando el potenciómetro, veremos cómo va variando el
valor de la entrada analógica a la que hemos conectado el potenciómetro.
CONTROLAR OBJETOS EN EL ESCENARIO
Vamos a aprovechar el montaje que tenemos para mover un objeto en el escenario utilizando el potenciómetro. Lo
primero que haremos será crear un disfraz, dibujándolo, o importándolo.
Yo he importado una bruja volando en una escoba y le he puesto un fondo acorde, como hicimos en la sesión 5.
Hasta ahora, cuando hemos querido posicionar un objeto en el escenario lo hemos colocado manualmente
arrastrándolo por él. Como ahora se va a mover, nos podría interesar que cuando el programa empiece a
ejecutarse, el objeto comience en una posición determinada.
Para seleccionar las coordenadas para la posición de un objeto utilizaremos los bloques de “Movimientos” “fijar x a
…” y “fijar y a …”.
Como en este caso la posición inicial en X del objeto viene dada por el ajuste inicial del potenciómetro, al iniciar el
programa sólo fijaremos la posición en Y.
Lo que colocamos al darle las coordenadas es el centro del objeto. Podemos seleccionar o cambiar el centro de un
objeto en el editor gráfico de sus disfraces y ponerlo en un lugar en el que nos facilite posicionarlo.
Una vez seleccionadas las condiciones iniciales, colocaremos el bloque “por siempre”, y dentro de él, fijaremos la
posición en X al valor de la entrada analógica a la que está conectado el potenciómetro, en este caso la A0,
utilizando los bloques de “Movimientos” ”fijar x a …” y “valor del sensor …”.
Si en este momento ejecutamos el programa y giramos el potenciómetro veremos cómo se mueve nuestro objeto,
en mi caso como vuela la bruja. Pero todavía hay varios defectos que tendremos que corregir:
Como el valor mínimo del potenciómetro es 0V, la posición mínima en el eje X a la que podremos mover el objeto
será 0, o sea que sólo lo podemos mover por la mitad derecha o parte positiva del eje X de la pantalla.
La mayoría del giro del potenciómetro no tiene ningún efecto. Si os fijáis en los valores de la entrada analógica en
la tabla de resumen de valores, cuando lleguemos a 240 ya estaremos en el borde de la pantalla, y por encima de
eso no pasará nada.
Si al ajustr el potenciómetro el objeto se mueve en la dirección contraria a la que os resulta más natural, podéis
intercambiar las conexiones de 5V y GND de los pines del potenciómetro y la dirección de movimiento respecto al
ajuste se invertirá.
Para poder aprovechar todo el ancho del escenario, lo que vamos a hacer es restarle 240 al valor de la entrada
analógica A0. De esta forma cuando la resistencia del potenciómetro este al máximo, la tensión medida será 0V, y
al restarle 240, tendremos el valor -240, que coincide con el extremo izquierdo del escenario.
Para aprovechar todo el giro del potenciómetro para el movimiento lo que tenemos es que calcular la relación que
hay entre los valores que pueden tomar la entrada analógica, 1024, y el eje X del escenario, 480.
Lo que quiere decir esto es que la entrada analógica puede tomar 2,13 veces más valores que el eje X. Por lo
tanto, lo que tenemos que hacer es dividir la entrada analógica entre 2,13 y así quedará también con valores entre
0 y 480.
Para hacer estas operaciones dentro de nuestro programa utilizaremos los bloques de “Operadores” “ / “ y “… – …“.
Aunque en una ecuación siempre se ejecutan antes las multiplicaciones y divisiones, y después las sumas y restas;
en S4A se ejecutan primero las operaciones que estén dentro de un mismo bloque.
Si lo ejecutamos de nuevo y giramos el potenciómetro veremos que ahora funciona de una forma más adecuada.
Podemos elegir ocultar o mostrar la tabla resumen de valores para ver mejor el escenario haciendo click con el
botón derecho en el objeto en la lista de objetos o en la tabla de resumen de valores.
Si queremos visualizar únicamente el valor de de algunas de las entradas, podemos seleccionarlas y marcarlas en
el listado de bloques para que aparezcan en el escenario.
Podemos hacer más pequeño el escenario o verlo a pantalla completa utilizando los botones en la parte superior
izquierda del escenario.
Para seguir practicando, os recomiendo que hagáis lo mismo pero moviendo el objeto verticalmente. Si tenéis dos
potenciómetros, podéis probar a moverlo en las dos direcciones en un sólo programa.
RESUMEN DE LA SESIÓN
OBJETIVOS
MATERIAL REQUERIDO.
Una Protoboard.
Un potenciómetro de 10KΩ
UN POCO DE HISTORIA
Hace mucho, mucho tiempo (1972-1976), en una galaxia no muy lejana, los niños y los no tan niños se divertían
con la primera generación de consolas.
Eran aparatos muy sencillos de usar, bastaba con conectarlos a la tele y ponerse a jugar. Los controles eran
simplemente ruedas o clavijas distribuidas normalmente por la caja de la propia consola.
Tenían uno o varios juegos grabados en la memoria y no podías comprar más juegos, porque no tenían ningún
soporte para ello. Pero hubo un juego que sobresalió por encima de todos, el Pong, una especie de tenis muy
simplificado. No había un sistema de aquella primera generación que no incluyera un juego tipo Pong.
Cuando en la navidad de 1975 Atari comercializó su propia versión del Pong, se convirtió en un éxito inmediato.
Consistía básicamente en una carcasa con conexión a la televisión y dos ruedas como controles. Más tarde
salieron versiones que incluían hasta 16 variaciones de este juego (que eran prácticamente lo mismo) e infinidad
de consolas clónicas.
Lo que vamos a hacer en esta sesión es utilizar lo que hemos aprendido para hacer nuestra propia versión
de Pong con Arduino para un jugador y de paso aprender unas cuantas cosas por el camino. En la siguiente
sesión lo haremos para dos jugadores.
Teniendo en cuenta que en su momento costaba unos 100$ (que ahora equivaldrían a casi 400$, lo mismo que una
consola de última generación), supongo que si le hubieses dicho a alguien en aquella época que un niño podría
fabricar su propio Pong en casa como vamos a hacer nosotros, te hubiera mirado como a un marciano.
La idea es simular una especie de frontón, donde controlaremos una barra para hacer rebotar una pelota e impedir
que se nos escape. Como vamos a manejar la barra con un potenciómetro, el montaje será el mismo que en
la sesión 11.
Dibujamos una barra, la ajustamos al tamaño que queramos y la programamos para que se posicione y se mueva
de la misma manera que en la sesión 11.
Recordad cambiar el nombre del objeto y del disfraz a Barra, o algo semejante, para seguir manteniendo el orden y
la claridad en nuestros proyectos.
Con el mismo propósito os recomiendo borrar el disfraz donde está dibujada la placa Arduino.
Para hacer la pelota crearemos un nuevo objeto, como ya sabemos de otras sesiones, y le haremos un disfraz.
Para programar el movimiento de la pelota vamos a utilizar algunos bloques nuevos y una nueva manera de
enfocar nuestros programas.
DIVIDE Y VENCERÁS
Hasta ahora, siempre que hemos programado un objeto lo hemos hecho todo en una única secuencia de
instrucciones. Sin embargo, a medida que los programas se complican puede sernos útil dividirlo en varios
programas, de forma que cada uno de ellos nos solucione una parte concreta del problema.
Aunque no es exactamente lo que se entiende en la programación tradicional como función, durante este tutorial
de S4A vamos a referirnos a cada uno de estos pequeños programas como función.
Si os resulta más sencillo organizar el programa en funciones diferentes a las que planteamos aquí, no dudéis en
hacerlo como lo veáis más claro.
Dividir un problema grande en otros más pequeños y tratar de solucionarlos poco a poco, es una práctica muy
recomendable en cualquier aspecto de nuestras vidas.
Lo primero que vamos a hacer es posicionar la pelota de en la parte superior del escenario y en el centro del eje X.
Utilizaremos el bloque “ir a x: … y: … “.
En este mismo programa (función) vamos también a darle a la pelota la dirección inicial y la velocidad a la que se
moverá.
Para darle la dirección inicial vamos a utilizar el bloque de “Movimientos”” apuntar en dirección”. Si desplegamos
las opciones de ese bloque veremos a que dirección corresponden los valores.
También podemos indicar la dirección con valores entre 180 y 360 en vez de utilizar valores negativos.
Como queremos que vaya hacia abajo en una dirección aleatoria que no sea muy próxima a la horizontal, le
daremos un valor al azar entre 120 y 240.
La velocidad se la daremos con el bloque de “Movimiento” “mover … pasos”. Yo le voy a poner para que empiece
con 4. Tendremos que meterla en un bloque “por siempre” o sólo se movería 4 pasos una vez y se pararía.
En esta misma función haremos que la pelota rebote al tocar los bordes del escenario utilizando el bloque
de “Movimiento” “rebotar si está tocando un borde”.
En una nueva función haremos que la pelota rebote si toca la barra. Los bloques que se utilizan para que
interactúen los objetos en el escenario están en la categoría “Sensores”.
Comenzaremos la función con el bloque de control de la bandera verde y el bloque “por siempre si …”.
Como condición le pondremos el bloque de “Sensores” “¿tocando …?”, y en el menú desplegable seleccionaremos
Barra, o el nombre que hayamos puesto al objeto de la barra.
Haremos que si pelota toca la barra rebote como si fuera una pared, pero le añadiremos un poco de aleatoriedad
para evitar quedarnos atrapados en situaciones sin fin y añadirle un poco de dificultad al juego.
Para calcular el rebote utilizaremos el bloque “dirección”, que es una variable que guarda el valor de la dirección de
movimiento del objeto, en este caso la pelota.
Para que actúe como una pared, la dirección al rebotar tiene que ser 180º (vertical hacia abajo) menos la dirección
que llevaba antes.
Una vez haya cambiado de dirección, haremos que se mueva 4 pasos una única vez, para evitar que detecte
varios toques con la barra en vez de uno sólo.
Ya tenemos programado el funcionamiento de los objetos, pero para convertirlo en un videojuego hay que darle un
poco de emoción y sobre todo hacer que podamos perder.
La manera más sencilla de detectar cuando la pelota nos ha sobrepasado es pintar en el fondo del escenario una
ralla de cualquier color que no sea el de las barras ni la pelota, y hacer que si la pelota toca ese color se acabe el
juego.
Crearemos una nueva función para detectar si la pelota toca la línea, y si la toca, detener todos los programas.
Utilizaremos una estructura parecida a la que detecta si toca la barra, pero usando el bloque de “Sensores”
“¿tocando el color …?”.
Si hacemos click en el cuadrado con el color nos saldrá un icono de cuentagotas. Seleccionamos el color que
queremos en el escenario, en este caso el rojo de la línea que hemos pintado y el color del cuadro del bloque
cambiará.
Vamos a complicar un poco más tanto el programa como el videojuego en sí, haciendo que la velocidad de la
pelota vaya subiendo a medida que pasa el tiempo y que cuando perdamos se nos muestre el tiempo que hemos
conseguido aguantar.
En vez de darle una velocidad fija a la pelota, le asignaremos el valor de una variable “velocidad” a la que fijaremos
al inicio un valor de 4 (o el que queramos). Esto lo incluiremos en la función en la que fijábamos las condiciones
iniciales.
Ahora vamos a añadirle otra función que haga que suba la velocidad dos pasos cada diez segundos. Utilizaremos
el bloque de “Sensores” “cronómetro”, que es una variable que guarda el tiempo que ha pasado desde abrimos o
creamos un proyecto.
Con el bloque “reiniciar cronómetro” lo pondremos a 0 cada vez que iniciemos el programa.
Creamos una variable “límite” a la que le asignaremos el valor 10.
También podríamos incluir estos bloques en la función en la que fijamos las condiciones iniciales.
Haremos que si el valor del “cronómetro” es mayor que “límite” le sume dos a la variable “velocidad” y le sume 10
al valor del límite para que vuelva a subir la velocidad diez segundos después.
Ya sólo nos queda programar que cuando perdamos se nos muestre en pantalla cuánto tiempo hemos aguantado.
En la función en la que detenemos los programas, haremos que antes pare la pelota y nos muestre el valor del
cronómetro. Utilizaremos el bloque de “Apariencia” “decir por segundos“, le asignamos el valor del cronómetro y
hacemos que lo muestre durante 5 segundos.
Podéis organizar los programas como mejor os parezca, no tiene por qué ser de esta misma manera. Si os resulta
más sencillo, podéis construirlo en un único programa de esta forma.
Cuando vayáis a jugar, recordad que podéis ponerlo a pantalla completa, quitar la tabla de resumen de valores
para que no os moleste y mostrar las variables que queráis, como por ejemplo la velocidad de la bola y el
cronómetro, para ver qué tal va la partida.
RESUMEN DE LA SESIÓN
OBJETIVOS
MATERIAL REQUERIDO.
Una Protoboard.
PLANTEAMIENTO
Como ya comentamos, Atari Pong supuso una revolución en la historia de los videojuegos. Dos funciones
novedosas que incluía fueron:
Tenía sonido.
Llevaba la cuenta de la partida. En otras plataformas había que apuntar los puntos en un papel.
En esta sesión vamos a hacer un Pong para dos jugadores, y a incluir esas dos funcionalidades. Si estáis
utilizando estas sesiones en una clase de tecnología de algún colegio, podéis poneros por parejas para hacerla, y
de paso ver quién gana echando una partida.
El montaje será el mismo que en la sesión 12, pero añadiendo un segundo potenciómetro. Si no tenéis dos
potenciómetros vamos a explicar la manera de manejar una de las barras con el ratón del ordenador.
Vamos a reutilizar parte del programa de la sesión anterior, pero cambiando y añadiendo algunas cosas.
Empezaremos modificando la barra que ya tenemos y creando una segunda barra.
Para aprovechar que el escenario es más grande en el eje X, vamos a hacer el campo en sentido horizontal, por lo
que modificaremos el dibujo y el programa de la barra de la sesión anterior para hacer que esté en vertical y se
mueva en el eje Y.
Hasta ahora hemos creado objetos siempre de la misma manera. Pero si queremos crear un objeto que tenga
acceso a las entradas y salidas digitales y analógicas como la barrra, necesitaremos crear un objeto Arduino.
Los objetos Arduino proporcionan bloques para las funcionalidades básicas del microcontrolador, escrituras y
lecturas digitales y analógicas, y otras funcionalidades de alto nivel.
También encontraremos bloques para tratar con motores estándar y servomotores de rotación continua (los
utilizaremos en sus respectivas sesiones más adelante).
Para crear, dibujar o importar un objeto Arduino haremos click en los botones que hay en la parte superior
derecha del listado de objetos.
Si quisiéramos utilizar una segunda placa Arduino para controlar el objeto, seleccionaríamos “Nueva conexión”.
Como vamos a usar la misma placa, seleccionamos “Utilizar la conexión del objeto Barra”.
Como en este caso queremos hacer un objeto igual que la barra, podríamos simplemente darle con el botón
derecho del ratón al objeto de la barra y darle a duplicar.
Una vez creada renombraremos los objetos como Barra1 y Barra2, por aquello de la limpieza el orden.
Tendremos que modificar el programa de la segunda barra para posicionarla en el lado opuesto del escenario.
También dibujaremos dos líneas de colores diferentes detrás de las barras igual que en la sesión anterior.
Si no tenemos dos potenciómetros, podemos controlar una de las barras con el ratón, con el bloque de “Sensores”
“y del ratón”.
En S4A existe la posibilidad de exportar objetos para guardarlos y utilizarlos en otros proyectos. Supongamos que
hemos empezado un proyecto nuevo para esta sesión y queremos reutilizar la pelota de la sesión 12 para
modificarla y así ahorrarnos trabajo.
Si abrimos el programa del Pong para un jugador y en el listado de objetos hacemos click con el botón derecho en
la pelota, o en cualquier otro objeto, veremos que nos da la opción de exportar objeto.
Si ahora desde otro proyecto, en este caso el Pong para dos jugadores, damos a “Escoger un nuevo objeto
desde archivo” o a “Escoger un nuevo objeto Arduino desde un fichero” en función del tipo de objeto que sea,
y buscamos el objeto que hemos exportado, tendremos en el nuevo proyecto el objeto con todos los disfraces y
programas incluidos.
Lo primero que haremos será modificar la posición inicial de la pelota y la dirección inicial del movimiento.
Ahora tenemos que cambiar la función en la que hacemos que rebote la pelota al tocar la barra, para que rebote si
toca cualquiera de las dos. Utilizaremos el bloque de “Operadores” “… o …“.
También cambiaremos la forma en que cambia de dirección al rebotar, ya que ahora las barras están en vertical.
Haremos una función igual que la que detectaba si la pelota tocaba el color rojo, pero tocando el color que está
detrás de la otra barra, en este caso azul, y les quitaremos a ambas los bloques que mostraban el tiempo y
detenían los programas.
La función en la que subimos la velocidad de la bola cada 10 segundos, la dejaremos igual para darle un poco de
emoción al juego.
Con esto ya tenemos la parte principal del videojuego, pero ahora vamos a introducir las mejoras de las que
hablábamos.
Para poder llevar la puntuación, necesitamos crear dos variables, “puntosrojo” y “puntosazul” que inicializaremos a
0.
Hacemos que si toca la línea azul sume un punto a “puntosrojo” y si toca la roja a “puntosazul”, así iremos contando
los puntos.
También tenemos que hacer que una vez sumado el punto, la pelota vuelva al centro y empiece a moverse hacia la
mitad de campo del que ha perdido el punto, en dirección a la barra.
Ya sólo nos queda hacer que si uno de los jugadores llega a 3 puntos, acabe la partida y muestre quien es el
ganador.
Vamos al programa de la pelota y utilizamos el bloque “tocar sonido …”, seleccionando en el menú desplegable el
sonido que queramos.
Recordad que podéis ponerlo a pantalla completa y mostrar en el escenario los puntos que lleva cada uno
marcando en el listado de bloques las variables donde los guardamos.
Si hacemos click con el botón derecho en una variable en el escenario podemos elegir el formato para mostrarlas.
RESUMEN DE LA SESIÓN
Existen diferentes tipos de objetos en S4A, y sabemos cómo crearlos en función de lo que necesitemos.
Podemos reutilizar objetos en otros proyectos.
Sabemos cómo crear sonidos y utilizarlos en nuestro programa.
TRANSISTORES Y MOTORES DE CC
Circuito con transistor para controlar la velocidad de giro de un motor de CC
OBJETIVOS
MATERIAL REQUERIDO.
Un potenciómetro de 10KΩ.
Los pines digitales de Arduino permiten un máximo de 40mA, o lo que es lo mismo, 5V x 40mA = 0,2 W (Wattios)
de potencia.
El pin de 5V puede dar hasta 0,5A si tenemos el Arduino conectado por USB.
Hay que fijarse bien en no conectar componentes que sobrepasen las especificaciones de nuestro Arduino, o
podríamos acabar quemándolo.
En esta sesión vamos a utilizar nuestra placa Arduino para controlar un pequeño motor de corriente continua.
LOS TRANSISTORES
Un transistor es un dispositivo electrónico semiconductor que sirve para regular una señal de salida en función
de una señal de entrada. Si volvemos a la analogía con el flujo de agua, sería algo parecido a un grifo o una llave
de agua.
Todos tenemos clara la diferencia entre conductor y aislante. Un semiconductor puede ser cualquiera de las dos
cosas en función de lo que necesitemos, además de tener algunas otras propiedades muy útiles.
Los transistores trabajan básicamente de dos formas (aunque no son las únicas):
Los transistores tienen tres partes: Emisor, Colector y Base (E, C y B). Siguiendo la analogía del grifo
el emisor sería la salida de agua, el colectorla entrada y la base el mando. Lo vamos a ver más claro en la
siguiente figura.
Corte: si no hay señal en B, la válvula está cerrada y no hay flujo de agua entre C y E.
Activa: si hay señal en B, la válvula se abrirá la válvula en función de su valor y permitirá el paso de parte de la
corriente de agua de C a E.
Saturación: si la señal en B es suficiente, la válvula se abrirá completamente y permitirá que toda la corriente de
agua pase de C a E. Llegados a este punto, aunque le demos más señal en B no conseguiremos mayor corriente, e
incluso podríamos romper la válvula.
Si habéis entendido el ejemplo, sólo tenéis que cambiar corriente de agua por corriente eléctrica, y la válvula por
el transistor y comprenderéis su funcionamiento.
Decimos que funciona como amplificador porque con una pequeña corriente en la base podemos tener una
corriente mucho mayor entre el colector y el emisor.
Se pueden utilizar varios transistores para conseguir ganancias muy grandes.
Cada vez que escuchas música, hay uno o varios transistores amplificando una señal débil para que puedas
escucharla.
CIRCUITO CON TRANSISTOR Y MOTOR CC
En este montaje usaremos el transistor de uso general P2N2222, barato y fácil de encontrar. Permite hasta 0,5
Amperios y 40V.
Para saber qué pin es cada pata, ponemos el transistor con la cara plana hacia nosotros (ahí está rotulado el
modelo) y las patas hacia abajo. De izquierda a derecha son emisor, base y colector.
Primero haremos que trabaje en el transistor en corte y saturación, cambiando de una a otra cada 5 segundos.
Para controlar la velocidad de giro del motor mientras el transistor trabaja en la parte activa utilizaremos un
programa similar al que usamos en la sesión 9 de las salidas analógicas, pero haciendo que suba y baje el valor
un poco más despacio incluyendo dos bloques de “esperar 0,1 segundos”.
Si a simple vista no notáis la variación de velocidad podéis acercar el oído para escucharlo o cogerlo con la mano
para notar cómo cambia la vibración.
No vamos a poner el esquema de montaje en la protoboard, porque ya hemos visto como conectar todos los
componentes del circuito en esta sesión y en la sesión 9. Además ya va siendo hora (si es que no lo hacéis ya) de
que hagáis los montajes usando el esquema electrónico, que es mucho más claro, sobre todo a medida que se van
complicando los circuitos.
La programación es muy sencilla, simplemente asignamos a la salida analógica el valor de la entrada analógica a la
que está conectado el potenciómetro.
Dividimos el valor de la entrada analógica entre 4 para adecuarla a la salida y aprovechar todo el giro del
potenciómetro, de la misma manera que hacíamos en la sesión 11 con el escenario.
Recordad que las entradas analógicas pueden tomar 1024 valores y las salidas analógicas 256.
Podéis descargar los tres programas de la sesión aquí: Transistores y Motores.
RESUMEN DE LA SESIÓN
Conocemos el funcionamiento básico de un transistor, y ya podremos usarlos sin miedo en cualquier otro
proyecto.
Hemos utilizado un pequeño motor de corriente continua, pero ahora sabemos los principios necesarios para
controlar cargas que nuestro Arduino por sí sólo no tiene capacidad (potencia) para controlar.
Sabemos cómo usar una entrada analógica y adecuarla correctamente para controlar el valor de una salida
analógica.
RELÉS
Sistema de alimentación ininterrumpida
Home Relés
OBJETIVOS
MATERIAL REQUERIDO.
Un transistor 2N2222
Un pequeño Relé.
QUÉ ES UN RELÉ
Un relé es un interruptor controlado mediante una señal eléctrica. Sería algo parecido a los pulsadores que hemos
utilizado, pero sustituyendo nuestro dedo por una señal eléctrica.
De esta forma, mediante una señal eléctrica de poca intensidad podemos controlar un circuito de mucha mayor
potencia, aislando la parte de control.
Seguramente todo esto os suene un poco de cuando hablamos de los transistores, pero tienen finalidades
diferentes.
Hay límites en la corriente que puede aceptar un transistor, sin embargo se pueden diseñar relés para aguantar
cualquier carga.
El relé aísla completamente el circuito de control del de potencia, algo muy importante para tensiones altas.
Utilizaremos relés cuando tengamos cargas de mucha potencia.
Utilizaremos un transistor para cargas pequeñas y cuando la velocidad de conmutación sea importante.
Un transistor conmuta (pasa de corte a saturación o viceversa) millones de veces más rápido que un relé.
Aunque hay muchos tipos de relés, por regla general nuestro Arduino no tiene potencia suficiente para activar un
relé. Pero ya hemos visto cómo utilizar un transistor para ayudarnos con este problema.
Utilizaremos un transistor para amplificar la señal de la Base y así poder conmutar el relé.
Cuando la salida digital 10 está a HIGH, el transistor trabaja en saturación haciendo que la corriente en el emisor
excite la bobina del relé y mediante un electroimán el contacto cambia de posición (se oye un pequeño “clic” cada
vez que esto pasa).
Si la salida digital 10 pasa a LOW, el transistor pasa a corte y al no tener corriente en la bobina el conmutador
vuelve a su posición inicial.
Normalmente un relé consta de 5 pines. Dos pines de entrada por donde conectamos la bobina a la salida del
transistor y a tierra, y tres pines de salida.
La conexión entre los pines 2 y 4 es de tipo normalmente cerrado. Es decir, el circuito está cerrado mientras no
haya corriente en la bobina.
La conexión entre 2 y 3 es de tipo normalmente abierto. Está abierto cuando no hay corriente en la bobina.
CIRCUITO DE ALIMENTACIÓN ININTERRUMPIDA
Cuando se nos va la luz en casa el mayor problema suele ser que se nos haya fastidiado una partida en el PC o
consola, o que si dura mucho se nos eche a perder la comida del congelador.
Sin embargo, hay lugares en los que un corte de corriente puede traer consecuencias mucho peores (incluso peor
que si justo estabas el primero en una partida online), como puede ser un hospital.
Por eso algunas instalaciones están diseñadas de modo que si se hay un corte de corriente, se conecten de forma
automática a una batería o un generador auxiliar para poder seguir funcionando.
Nosotros vamos a utilizar nuestro Arduino para hacer un sistema de ese tipo.
En este caso sólo vamos a poner el circuito electrónico, ya que las conexiones pueden ser diferentes en cada
modelo de relé y el montaje en la protoboard sería diferente.
Podemos mirar el modelo en nuestro relé y buscarlo en internet para ver su descripción.
Los pines de control (los de la bobina) suelen estar próximos.
Si no encontráis información, para saber que pines son normalmente cerrado y normalmente abiertopodemos
hacer pruebas con LEDs.
Vamos a imaginarnos que la toma común del relé (la 2 en el dibujo) está conectada a una batería externa o un
generador en vez de a la toma de 5V, o si queréis podéis conectarla realmente a una batería o unas pilas.
La toma 4 del relé es la normalmente cerrada, cerrada cuando no hay corriente en la bobina.
La idea es que cuando pongamos a LOW las salidas digitales 10 y 13, simulando un corte de luz, el LED conectado
a la salida 13 siga encendido a través de la alimentación auxiliar al conmutar el relé.
Hemos colocado otro led de color verde para marcar cuándo se está utilizando la alimentación auxiliar.
El programa que vamos a usar va a ser el mismo que el Blinking LED pero usando dos salidas, de manera que
cada vez que se pongan a LOW, conmute el relé y conecte la alimentación auxiliar.
Cuando hay tensión en la salidas digitales 10 y 13, vemos que está encendido el LED rojo y apagado el verde.
El relé está conmutado a la toma 3, normalmente abierta, por lo que no se ilumina el LED de que marca que se
está usando la alimentación auxiliar.
Si se fuese la corriente, las salidas 10 y 13 pasan a LOW y vemos cómo el LED rojo sigue encendido y el verde que
está conectado a la salida normalmente cerrada del relé se enciende, alimentado por la toma de 5V, que en
nuestro caso está simulando una batería o generador auxiliar.
Si queréis podéis conectar un LED también a la salida normalmente abierta del relé, la 3, y ver cómo va
encendiéndose uno u otro LED en función de la posición del relé.
RESUMEN DE LA SESIÓN
Los relés son muy interesantes a la hora de controlar cargas de mucha potencia.
Sabemos diferenciar entre contactos normalmente abiertos y normalmente cerrados.
Cómo funciona un sistema básico de alimentación ininterrumpida.
SENSORES DE TEMPERATURA
Control de temperatura con un sensor y un ventilador
OBJETIVOS
MATERIAL REQUERIDO.
Un sensor de temperatura es un chip que nos devuelve un valor de tensión en función de la temperatura a la que
esté. En esta sesión vamos a presentar los sensores LM35DZ y TMP36, dos de los sensores más baratos y fáciles
de encontrar.
Para saber cómo funcionan estos chips, o cualquier componente que vayamos a usar, deberíamos buscar en
internet sus especificaciones, añadiendo al nombre del chip data sheet. Esta información suele estar en inglés,
y puede resultar difícil de entender.
A la hora de hacer la programación, la manera de calcular la temperatura en función del voltaje que nos dé el
sensor será diferente en función del sensor que estemos utilizando.
En el caso del LM35DZ, el fabricante nos dice que para calcular la temperatura debemos hacer la siguiente
operación:
En el caso del TMP36, como empieza de -50ºC, habrá que restarlo a la fórmula anterior:
En mi caso voy a usar el LM35DZ; si vais a usar el TMP36 bastaría con sustituir los bloques dónde hacemos los
cálculos.
Recordad que S4A no ejecuta antes las multiplicaciones y divisiones y después las sumas y restas como haríamos
para resolver correctamente una ecuación.
Se ejecutan los bloques de dentro hacia fuera, por eso hay que hacer la resta en el bloque más externo, para que
se realice al final y respete la norma.
Para leer la temperatura fijamos el valor de una variable al resultado de la operación anterior:
Si queréis ver cómo cambia la temperatura, probad a agarrar el sensor entre los dedos para subirla y soplad para
bajarla.
Vamos a hacer un circuito para controlar la temperatura en una habitación, utilizando el sensor de temperatura y
el motor de continua con el ventilador que aprendimos a utilizar en la sesión 14.
Escoged un límite un poco mayor que el que haya ahora mismo en la habitación y calentad y enfriad el sensor
cómo hemos explicado.
Al pasar del límite la temperatura, la salida digital 13 se pone a HIGH y el transistor pasa a saturación, haciendo
que arranque el motor.
Si la temperatura es menor que el límite, la salida digital 13 está a LOW y el transistor trabaja en corte, de forma
que el motor está apagado.
RESUMEN DE LA SESIÓN
Sabemos manejar dos tipos de sensores de temperatura, y todos los demás son muy parecidos.
Hemos adecuado la salida del sensor en Voltios para transformarla en ºC, utilizando la información del fabricante.
Hemos utilizador el sensor y un motor de continua con un ventilador para controlar la temperatura de una
habitación.
SENSOR DE SONIDO
Montando un sistema de iluminación activado por sonido
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED.
El ajuste de sensibilidad del micrófono lo hacemos mediante un potenciómetro que tendremos que girar con un
destornillador plano.
En esta sesión vamos a usar la salida digital D0 como señal para encender un LED, de forma que cuando demos
una palmada, un silbido o hagamos algún ruido un poco alto, se encienda o se apague un LED.
Sólo necesitamos conectar el pin D0 y los de alimentación, tal como se ve en el diagrama electrónico y el montaje
en la protoboard:
Si hemos conectado bien el sensor, se debería iluminar el LED de alimentación. El de salida digital accionada
puede o no estar encendido.
Esta es seguramente la parte más complicada de esta sesión. Para ajustar el límite de disparo lo que hacemos es
girar el potenciómetro con un destornillador. Tenemos que dejarlo de tal forma que el LED que marca si está
accionada la salida digital esté apagado, pero lo más próximo posible al límite en el que se enciende.
Si lo ajustamos mal y el LED se está encendido, no detectaremos ningún cambio y no podremos reaccionar a
ningún estímulo sonoro.
Si lo ajustamos de forma que esté apagado pero demasiado lejos del límite en el que se enciende, habrá que
llamar al increíble Hulk para que dé una palmada por nosotros.
PROGRAMANDO EL SENSOR
El programa para controlarlo es muy sencillo y es el mismo que hemos utilizado varias veces para controlar un
interruptor. La diferencia es que en vez de utilizar un pulsador, si el sensor detecta un sonido por encima del límite
enviará una señal que recogeremos en la entrada digital 2.
Si no sois capaces de encender el LED de una palmada, probad a pegar un silbido, un soplido o a hablar cerca del
micrófono.
RESUMEN DE LA SESIÓN
OBJETIVOS
.
MATERIAL REQUERIDO.
Arduino Uno o compatible y con el firmware para S4A cargado.
Una Protoboard.
Esta categoría de bloques se utiliza cuando queremos pintar algo en el escenario a partir el movimiento de un
objeto. Podemos utilizarlo, por ejemplo, para marcar el recorrido que ha seguido un objeto, o para hacer gráficos y
diagramas a partir de los valores que nos envíe un sensor.
Para aclarar un poco como funciona, vamos a hacer un ejercicio muy sencillo en el que colocaremos un objeto en
el centro del escenario varias veces y lo moveremos de forma aleatoria, de manera que vaya dejando un rastro y
haga una marca en el punto en el que termine cada movimiento.
Lo primero que vamos a hacer será crear un disfraz para el objeto y borrar el que viene por defecto. Yo he
importado una pelota de fútbol.
Nada más empezar borramos lo que haya dibujado previamente en el escenario utilizando el bloque de “Lápiz”
“borrar” y fijamos el grosor del trazo con el bloque “fijar tamaño del lápiz a …”.
Utilizamos el bloque “repetir …” porque queremos que el objeto haga un número determinado de movimientos
antes de parar el programa. Posicionamos el objeto en el centro del escenario, utilizamos el bloque “bajar
lápiz” para que empiece a dibujar y fijamos el color del lápiz a un número aleatorio entre 0 y 200 con el
bloque “fijar color del lápiz a …”.
El bloque “bajar lápiz” es el equivalente a presionar un lápiz en un papel. Hasta que no lo levantemos, todo
movimiento del objeto dejará un rastro en el escenario de la forma en que lo indiquemos.
Fijamos el color a un número aleatorio para que cada repetición línea pinte la línea de un color diferente.
Los colores del lápiz en S4A van desde 0 a 200, por eso hemos cogido esos límites para el número aleatorio.
A continuación hacemos que el objeto se mueva a una posición nueva utilizando el bloque de “Movimiento”
“deslizar en … segundos a x: … y: …”,levantamos el lápiz con el bloque “subir lápiz” y utilizamos el
bloque “sellar” para que deje una marca con la forma del objeto.
Recordad que las medias del escenario son 480×360, siendo el centro (0,0), de ahí los límites de los valores
aleatorios.
Subimos el lápiz para que al volver a poner el objeto en el centro del escenario no pinte nada más.
El bloque “sellar” deja una impresión del objeto en el punto del escenario en el que se encuentre.
Al terminar de ejecutarse el programa tendremos algo parecido a esto en el escenario.
Vamos a utilizar lo que hemos aprendido en esta sesión y en la sesión 17 para dibujar un gráfico con el volumen
de un sonido. Mediremos la señal que envía el sensor KY-038 por el pin A0 y la dibujaremos en el escenario.
El pin A0 nos devolverá un valor entre 0 y 1023 en función del volumen del sonido.
El esquema electrónico y el montaje en la protoboard son muy sencillos.
Empezaremos dibujando un objeto para dibujar a partir de él. Como no queremos que se note, podemos, por
ejemplo, hacer un punto lo más pequeño posible y del color del que dibujaremos el gráfico.
Si en este momento ejecutamos el programa veremos cómo se pinta una línea de izquierda a derecha.
Para saber a qué nivel de sensibilidad tenemos ajustado el sensor, podemos guardar en una variable el valor
recogido en la entrada analógica A0 y visualizarlo en el escenario como hemos aprendido.
A mayor sensibilidad mayor será el cambio en la señal que envía el sensor por A0 en función del sonido.
Yo lo he ajustado en el mismo punto que en la sesión anterior, en el punto en el que justo se apaga el LED que nos
muestra si está activado el pin D0.
Para dibujar el volumen en cada iteración, tenemos que fijar la posición en y del objeto a la posición anterior (que
fijamos a 0 en cada repetición para que pinte siempre a respecto al punto medio del eje Y) sumándole el valor de
A0 que hemos guardado en la variable “volumen”. A ese valor le tenemos que restar un valor cercano al que hemos
ajustado la sensibilidad, para que no nos pinte una raya muy gruesa cuando no hay sonido.
Sólo nos queda hacer que cada vez que llegue al final del escenario, vuelva a empezar a dibujar desde la
izquierda. Para ello levamos el lápiz hasta la posición inicial y borramos el escenario para que empiece a dibujar de
nuevo con el escenario en blanco.
Recordad que hay que subir el lápiz para llevarlo a la posición de inicio sin que pinte y volver a bajarlo para que
empiece a pintar de nuevo.
Si ahora ejecutamos el programa veremos cómo al hablar, silbar, soplar o hacer cualquier sonido en el micrófono,
en el escenario se pinta la variación en el volumen.
Si queréis practicar un poco más podéis coger la sesión 16 del sensor de temperatura y, por ejemplo, registrar la
temperatura cada cierto tiempo utilizando lo que hemos aprendido y variando un poquito el programa.
RESUMEN DE LA SESIÓN
Podemos utilizar los bloques “Lápiz” para hacer dibujos en el escenario a partir del movimiento de un objeto.
Sabemos cómo funciona la salida analógica del sensor de sonido KY-038.
Hemos hecho un gráfico a partir de los valores recogidos por una entrada analógica, podríamos hacer lo mismo
con entradas o salidas analógicas o digitales.
VIDEOJUEGOS S4A:
CAZADEMONIOS
Utilizar el joystick para disparar a los demonios que aparecen en el escenario
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Un Joystick.
Vamos a utilizar el montaje de la sesión 19 para hacer un videojuego en el que usaremos el joystick para apuntar
y disparar los demonios que aparezcan en el escenario. Contaremos cuántos demonios vamos cazando y los
mostraremos al terminar la partida. Y es que aunque os parezca mentira, hace no mucho tiempo, había muchos
videojuegos que no eran mucho más que esto.
Vamos a empezar creando los objetos que vamos a necesitar e incorporando sus disfraces y sonidos.
Lo primero que vamos a hacer es dibujar un disfraz para el objeto principal que contendrá la programación para el
movimiento del joystick. Como será nuestra mira, le haremos un disfraz acorde.
También importaremos un sonido para que suene cada vez que disparemos. Yo he importado uno
llamado “Laser1” de los que vienen por defecto.
Recordad que si habéis hecho muy grande o muy pequeño el disfraz, podéis ajustarle el tamaño con los botones de
encima del escenario.
Crearemos un nuevo objeto Demonio, y le haremos dos disfraces. Uno para el demonio (yo lo he importado de los
que vienen por defecto en S4A) y dibujaremos o importaremos un disfraz que simula una explosión para cuando les
disparemos.
Le pondremos también un sonido que usaremos cada vez que aparezca uno.
Ahora crearemos dos fondos para el escenario. Uno será el escenario que usaremos normalmente. Yo he elegido
un desierto.
El otro fondo será el mismo pero escribiremos en él “Demonios Cazados”, para utilizarlo para poner el resultado
con el número de demonios que hayamos cazado cuando termine el juego.
PROGRAMACIÓN DE LA MIRA
Vamos a empezar programando el objeto “Mira”. Incorporamos la parte de la programación del movimiento del
joystick, a la que quitaremos la parte final en la que sellábamos el disfraz del objeto. Además vamos a utilizar el
bloque de “Apariencia” “enviar al frente” en las condiciones iniciales.
Este bloque lo que hace es que este objeto siempre se vea por encima de los demás si están en la misma posición.
Lo utilizaremos para que la mira siempre se vea cuando estemos apuntando a los demonios a los que daremos
caza.
Creamos una función nueva en la que haremos que si la mira está tocando un demonio y pulsamos el joystick,
envíe una señal a los demás objetos. Utilizaremos un bloque de tipo “Sensores” “¿tocando …?” , en el que
seleccionaremos el objeto “Demonio”.
Incorporamos el bloque para que suene el láser cada vez que disparemos, tanto como si damos con el disparo en
un demonio como si no.
Añadimos un contador que sume uno con cada demonio al que alcancemos, de la misma forma que hemos hecho
ya otras veces.
Le ponemos un bloque de espera, para que no detecte varias pulsaciones seguidas del joystick.
También necesitamos una función para contar el tiempo que va pasando y poder poner un límite de tiempo al
juego. Ya conocemos la estructura y los bloques de otras sesiones.
Incluimos el bloque “enviar a todos Final” para avisar a los demás objetos de que ha terminado el juego.
Antes de detener los programas esperamos 5 segundos para que nos dé tiempo a mostrar el número de demonios
cazados.
Para terminar incluiremos dos nuevos bloques de “Apariencia”:
Usaremos el bloque “esconder” cuando se termine el juego para que no se vea la mirilla cuando haya terminado.
Para que la siguiente vez que lo ejecutemos se muestre de nuevo la mira, utilizaremos el bloque “mostrar”cuando
se inicie el programa.
En este objeto lo que queremos programar es que vayan apareciendo demonios en una posición y tamaño
aleatorios a medida que les vayamos disparando. Empezaremos haciendo que al comenzar a ejecutarse el
programa aparezca un demonio en el escenario.
Hemos usado un nuevo bloque de “Apariencia” “fijar tamaño a …”, que sirve para que el disfraz del objeto que se
muestre en el escenario sea un porcentaje mayor o menor que el disfraz original. Le damos un valor aleatorio entre
el 30% y el 100%, para que vaya variando.
También le damos una posición aleatoria en el escenario (que no sea demasiado cerca de los bordes), le ponemos
el disfraz “Demonio” y le incorporamos el sonido.
En otra función hacemos que si llega un la señal “disparo”, que significa que hemos dado a un demonio, cambie al
disfraz de “Explosión” durante medio segundo y aparezca un nuevo demonio en otra posición y con otro tamaño.
En la última función hacemos que si llega la señal “Final” de que se ha acabado el tiempo, el demonio se posicione
en el centro del escenario y muestre el número de demonios que hemos cazado. Trataremos de que no se monte
con el texto que hemos puesto en el fondo “Resultado” del escenario.
Para acabar vamos a programar el escenario por primera vez. Simplemente haremos que al ejecutar el programa
tenga el fondo “Desierto”, y al terminarse el tiempo el fondo “Resultado”.
Os recomiendo trastear un poco con este programa y tratar de hacerle algunos cambios, como por ejemplo, hacer
que se muevan los demonios, que aparezcan varios a la vez o que si no les disparamos en un tiempo concreto
sean ellos los que acaben con nosotros. Así iremos mejorando nuestra capacidad de crear nuevos algoritmos y
plasmarlos en nuestros programas.
RESUMEN DE LA SESIÓN
LOS SERVOMOTORES
Controlando la posición de un servo
OBJETIVOS
o Conocer los servomotores o servos.
o Ver en qué se diferencian de un motor normal.
o Aprender a manejarlos con un potenciómetro y con un joystick.
MATERIAL REQUERIDO.
Un Joystick.
Un potenciómetro de 10KΩ.
QUÉ ES UN SERVOMOTOR
Los motores de corriente continua que hemos manejado hasta ahora giran continuamente a una velocidad
determinada, que depende de una señal de control.
Un servomotor, o simplemente servo, no gira de forma continua, sino que lo que hacemos es controlar
su posición.
Con esta capacidad de moverse un ángulo concreto y mantenerse ahí podemos crear toda clase de movimientos
de una forma controlada; por ejemplo en brazos robóticos, coches de radiocontrol o timones de barcos y aviones.
Normalmente el ángulo de giro de un servo no es de 360º, sino de 180º (aunque también los hay) y son de
corriente continua.
Tienen 3 hilos de conexión, 5V (rojo), GND (negro o marrón) y Control (amarillo o blanco). La señal de control se la
daremos conectándolo a una de las salidas analógicas de nuestra placa Arduino.
SERVO Y POTENCIÓMETRO
En este apartado vamos a controlar el movimiento del servo utilizando un potenciómetro, de la misma forma que
lo hemos utilizado en otras sesiones.
Normalmente el servo viene con diferentes hélices que podemos acoplarle en función del objeto con el que vaya a
interactuar o de lo que queramos conseguir. Lo primero que tenemos que hacer es atornillar cualquiera de las
hélices que tengamos en el eje de giro para poder observar bien el giro.
S4A tiene tres pines reservados para ayudarnos a manejar servos. Son los pines 4, 7 y 8. Teniendo eso en cuenta,
el esquema eléctrico y el montaje en la protoboard son muy sencillos:
Si variamos el ángulo veremos como el servo se mueve hasta alcanzar la nueva posición (recordad que el valor
tiene que estar entre 0 y 180º).
Como lo que queremos en que el ángulo varíe en función de la posición del potenciómetro tenemos que modificar
un poco el programa:
Aquí tendremos el mismo problema que ya nos ha surgido más veces. Como la entrada analógica tiene un rango
de 0 a 1023 y el ángulo de 0 a 180º, la mayoría del movimiento del potenciómetro no tendrá ningún efecto.
Para aprovechar todo el giro del potenciómetro vamos a adaptar los valores de la entrada analógica a los grados
que puede girar el servo de la siguiente forma:
De esta forma cuando en la entrada conectada al potenciómetro tengamos 0 el ángulo será 0º y cuando esté en el
máximo 1023 será 180º, y podremos aprovechar todo el rango de movimiento del potenciómetro.
SERVO Y JOYSTICK
Lo que vamos a hacer con el joystick es sumar o restar grados al ángulo de la posición del servo en vez de
calcular directamente el ángulo. En cristiano, al mover el joystick el servo girará en una u otra dirección y
mantendrá esa posición cuando lo soltemos.
El esquema eléctrico y el montaje en la protoboard son muy sencillos, simplemente cambiaremos el potenciómetro
por el josytick (ya hemos visto como conectarlo en las sesiones 19 y 20). Yo voy a utilizar el eje X del joystick.
Lo primero que vamos a hacer es crear una variable “ángulo” y fijar la posición inicial del servo a, por ejemplo, 90º.
De la misma forma que hicimos en la sesión 19, crearemos dos estructuras condicionales para saber si el joystick
se ha movido hacia un lado o hacia el otro, y sumaremos o restaremos al ángulo anterior un número de
grados (mayor cuanto más rápido queramos que se mueva).
Si queréis seguir jugando con el servo, podéis tratar de hacer que el movimiento del joystick sea analógico como
hemos hecho en las sesiones anteriores, o que al apretar el botón del joystick el servo se mueva a una posición
determinada.
RESUMEN DE LA SESIÓN
En esta sesión hemos aprendido varias cosas importantes:
FOTORRESISTENCIAS O LDR
Montardo un sistema de alumbrado automático
OBJETIVOS
MATERIAL REQUERIDO.
Una Protoboard.
Cables de Protoboard.
Un diodo LED
LAS FOTORRESISTENCIAS
Las fotorresistencias o LDR (del inglés Light Depending Resistor o resistencia dependiente de la luz) son un tipo
de resistencias cuyo valor depende de la luz a la que estén recibiendo. Es muy pequeña cuando recibe una luz
muy intensa (unos pocos Ωs), y aumenta su valor a medida que la luz que recibe va descendiendo.
Normalmente se los usa de dos maneras, para un sistema de luces automático que se encienda cuando hay poca
luz ambiente o para detectar un movimiento cercano si algo se interpone entre el foco de luz y la fotorresistencia.
Las fotorresistencias tienen sólo dos patas, igual que las resistencias normales, así que para medir una variación
de voltaje (como hemos hecho con los potenciómetros) tendremos que utilizar un pequeño truco que nos servirá
para otras muchas cosas.
Ya hemos hablado antes de la ley de Ohm, V = I x R, pero no hemos hablado de las formas en las que se pueden
combinar las resistencias. Hay varias formas de conectar las resistencias entre sí, pero a nosotros la que nos
interesa es la conexión en serie.
La intensidad que circula por ambas resistencias es la misma aunque tengan valores diferentes.
Si medimos el voltaje e el punto C, dependerá del valor que tengan las resistencias. Si son iguales será
exactamente la mitad que en A.
En este caso si sustituimos las dos resistencias por una resistencia equivalente su valor sería:
Como sabemos que V= 5V, podemos hallar la intensidad que circula por el circuito:
De esta forma podemos sustituir las dos resistencias por este circuito:
La resistencia equivalente es la resistencia que utilizaríamos para sustituir todas las resistencias por una sola.
DIVISOR DE TENSIÓN
Vamos a utilizar lo que hemos aprendido para medir cambios en el valor de la fotorresistencia.
Para ello montaremos un circuito que se conoce como divisor de tensión, montando en serie una resistencia
normal y la fotorresistencia.
Si hemos llegado hasta aquí sin perdernos, nos daremos cuenta de que el voltaje que midamos en C dependerá
del valor de las resistencias R1 y R2. Y si R1 y R2 son iguales, la tensión en C será exactamente la mitad de la
tensión en A.
Como R2 es una resistencia de valor fijo, el voltaje en C variará cuando cambie el valor de la fotorresistencia, y de
esa manera podremos medir los cambios en la luz que recibe.
Como hemos comentado alguna vez, nuestro Arduino trabaja con voltajes de hasta 5V, por lo que no es buena idea
conectarle otros componentes que trabajen con mayores voltajes.
Podemos usar el divisor de tensión cuando queramos leer con nuestro Arduino señales que sean mayores que
5V. Si las conectáramos directamente a nuestro Arduino quemaríamos el chip.
Vamos a construir un circuito que encienda un LED cuando la luz baje de un cierto nivel. Con un circuito semejante
se podría, por ejemplo, controlar la iluminación de una calle, un parque o un jardín por la noche.
En nuestro programa simplemente compararemos la medida actual con ese valor, y si es mayor, o sea si desciende
la intensidad de la luz que incide en la fotorresistencia, (por ejemplo si tapamos el sensor con la mano) se active
la salida digital 10 y se encienda el LED.
Yo he puesto el límite en 800 para encenderse. Pero podéis elegir el que mejor se adapte al nivel que queráis para
poder probarlo. Simplemente poned un límite más alto que lo que mida normalmente el sensor y tapadlo con la
mano para que se encienda el LED.
RESUMEN DE LA SESIÓN
MATERIAL REQUERIDO.
Un sensor de agua.
En muchas ocasiones vamos a querer tener controlado el volumen de agua que tengamos en alguna parte. Con
este tipo de sensor podemos saber si está seco, salpicado, sumergido en parte o sumergido del todo.
Pueden ser útiles en para detectar si se está condensando agua en algún sitio, para conocer el nivel de agua en un
depósito (aunque este modelo tiene muy poco recorrido) o para saber si está lloviendo.
Estos sensores de agua son sencillísimos de conectar y de programar, y además baratos.
Tienen tres pines de conexión, dos para 5V y GND, y otro que conectaremos a una entrada analógica de
nuestro Arduino.
MONTAJE Y PROGRAMACIÓN
El montaje es muy facilito, y el orden de los pines del sensor viene marcado en el mismo:
Ponedle unos cables más bien largos si vais a sumergirlo e algún sitio, para tenerlo alejado del Arduino.
Cuidado con no sumergir los pines de conexión ni los cables, o hará un cortocircuito.
La programación también es muy facilita, simplemente encenderemos el LED de la propia placa Arduino si el nivel
de agua supera un determinado nivel.
Si sumergís el sensor en un vaso de agua (con mucho cuidado), podréis ver en la tabla resumen de valores el valor
del sensor, y como se enciende el LED cuando sobrepasa el valor que le hemos indicado.
Siempre os recomendamos seguir probando cosillas, pero en este caso no me parece sensato tener agua cerca de
nuestro Arduino, ya que la electrónica y el agua no hacen buenas migas. Así que no os recomiendo experimentar
cosas muy complicadas con este sensor.
RESUMEN DE LA SESIÓN
OBJETIVOS
MATERIAL REQUERIDO
Un buzzer piezoeléctrico.
LOS BUZZERS
Los buzzers son unos componentes electrónicos compuestos por un cristal (como puede ser el cuarzo) que vibra
cuando reciben una señal eléctrica.
Dependiendo del valor de esa señal vibrará con una determinada frecuencia, y si esa frecuencia está dentro de las
que podemos oír, escucharemos como esa vibración produce un sonido.
Esta habilidad nos puede ser muy útil en nuestros proyectos, por ejemplo para montar una alarma de forma muy
sencilla. Así que vamos a ponernos a ello.
Si conectamos las patas al revés simplemente no sonará. Con darle la vuelta ya está arreglado.
Las resistencias no tienen polaridad, por eso podemos conectarlas en los dos sentidos.
Lo primero vamos a probar que esté bien conectado. Vamos a utilizar un programilla muy simple para que suene de
forma intermitente.
Y ahora podemos combinar un zumbador y cualquiera de los sensores que hemos utilizado durante estas sesiones
y programar una alarma que nos avise cuando el nivel de agua supere un determinado nivel, cuando suba o baje
demasiado la temperatura… o cualquier cosa que se os ocurra.
Yo voy a utilizar el sensor de temperatura, de forma que si la temperatura sobrepasa un determinado límite, el
buzzer empiece a sonar de la forma que hemos dicho.
Si no recordáis cómo se conecta o cómo funciona el sensor de temperatura podéis ir a la sesión 16 que está
dedicada a este sensor.
Vamos a hacer que la alarma suene de forma intermitente, y más rápido cada vez a medida que se supere más el
límite que hayamos puesto.
Es una buena costumbre crear variables y asignarles un valor en vez de meter directamente a mano ese valor en el
programa, sobre todo si lo vamos a usar varias veces. De esa forma si queremos modificar ese valor en todo el
programa solo tendremos que cambiar la instrucción en la que asignemos el valor a la variable, en lugar de tener
que cambiarlo cada vez que se usa en el programa.
Por eso vamos a crear dos variables que se llamen “límite” y “diferencia”.
La programación para que suene el buzzer sería muy parecida a la que utilizamos en esa sesión del sensor de
temperatura.
Ahora solo nos falta modificarlo para que suene cada vez con intermitencias más rápidas a medida que la
temperatura vaya subiendo por encima del límite. Para ello lo que hacemos es que los tiempos de espera sean
inversamente proporcionales a la diferencia de la temperatura y el límite.
Inversamente proporcional significa que, a medida que crezca la variable que estamos midiendo (diferencia de
temperatura) el valor de la que queremos controlar (el tiempo) disminuya.
RESUMEN DE LA SESIÓN
OBJETIVOS
MATERIAL REQUERIDO
Arduino Uno o compatible y con el firmware para S4A cargado.
Un potenciómetro de 10KΩ.
Un buzzer piezoeléctrico.
UN VISTAZO ATRÁS
En esta sesión no vamos a introducir ningún componente nuevo ni a explicar nada que no sepamos ya. Lo que
vamos a hacer es coger muchos de los componentes que hemos ido usando en las sesiones anteriores e
integrarlos en un único montaje con el que vamos a simular una habitación con domotizada.
Seguro que sabéis lo que es esto de la domótica, pero si alguno anda despistado, consiste en integrar la
tecnología en la construcción de una vivienda, de modo que se automatizan muchos de los sistemas (luces,
calefacción, aire acondicionado…) Vamos, que se trata de que estemos bien a gustito esforzándonos lo menos
posible. Así que tendremos que tener cuidado de no acabar como los humanos de la película Wall-e.
La temperatura: utilizando un sensor, una calefacción (que simularemos con un LED), y un ventilador.
La luminosidad: utilizaremos una fotorresistencia y encenderemos o apagaremos un LED en función de lo que
mida.
Un bebedero: vamos a suponer que tenemos una mascota y utilizaremos un sensor de humedad de forma que si
se vacía el bebedero un zumbador nos avise de que tenemos que rellenarlo.
Una persiana eléctrica: que controlaremos con un potenciómetro.
Además lo representaremos todo en el escenario de S4A.
Lo ideal sería poder hacer esta práctica mirando lo mínimo posible las explicaciones, y estoy seguro de que sois
más que capaces. Pero por si tenéis alguna dudilla, vamos a explicarlo pero muy por encima. Y si no, siempre
podéis echar un ojo a las sesiones anteriores en las que hemos explicado estos componentes lo mejor que hemos
sabido.
ESQUEMA ELECTRÓNICO
En este caso vamos a poner únicamente el esquema electrónico, porque el montaje es un poco lioso. Lo que si os
vamos a recomendar es que uséis cables de colores para mantener un cierto control y orden (como siempre), y que
lo montéis poco a poco y con cuidado. Y tratad de tener un poquito separados y ordenados los diferentes
componentes, de forma que si al ejecutar los programas algo no funcione, podamos revisar las conexiones lo más
fácilmente posible.
Dicho esto el esquema sería el siguiente:
Recordad que si tenéis duda en alguna conexión podéis ir a la sesión respectiva, que estará explicado con mayor
profundidad.
Al verlo así asusta un poco, pero si lo montáis poquito a poco y sois un poco organizados, confiamos en que no
tendréis mayores problemas.
PROGRAMACIÓN
Como hemos dicho que no vamos a entrar en profundidad, simplemente vamos a ir poniendo cada objeto (todos
ellos objetos Arduino) con sus disfraces y la programación que lleva asociada cada uno. Podríamos utilizar un
único objeto Arduino, en el que programásemos todo y crear los demás como objetos normales y utilizarlos sólo
para cambiar los disfraces en el escenario. Pero creemos que es más sencillo programar cada objeto por
separado, de forma que así lo haremos.
Como fondo para el escenario yo he elegido un dibujo de una habitación de las que vienen por defecto en S4A,
donde tenéis varias para elegir. Incluso podéis usar una foto de la vuestra.
Para la calefacción usaremos un par de disfraces, encendida y apagada, y una programación muy sencilla en la
que leeremos el valor del sensor de temperatura y encenderemos un LED que simule la calefacción si baja
demasiado la temperatura.
Y como siempre, esperamos que sigáis practicando y mejorando nuestros ejemplos, así que podéis incluir algún
componente de los que nos hemos dejado. Por ejemplo, podéis poner el sensor de sonido para encender las luces,
poner pulsadores para poder desactivar cada automatismo (o todos), unas luces de emergencia o incluso seguro
que se os ocurre alguna utilidad para el joystick.
RESUMEN DE LA SESIÓN
DISPLAY DE 7 SEGMENTOS
Cuenta atrás para el lanzamiento de un cohete
OBJETIVOS
MATERIAL REQUERIDO.
Una Protoboard.
Cables de protoboard
Una resistencia.
Si es la primera vez que escuchamos este nombre puede que suene a algo muy complicado, pero seguramente
todos los días os crucéis con muchos de ellos. Los podemos ver por ejemplo, en los marcadores de los
polideportivos, e los microondas o en los relojes digitales que hay por las ciudades. Y es que un display de 7
segmentos no es más que eso, 7 LED en forma de barra que nos sirven para representar todos los números de un
dígito. Además suelen incluir también un punto, y a veces 2.
La conexión de este tipo de componente electrónico puede ser diferente según quien lo haya fabricado, así que nos
centraremos en el que incluye el Kit de Inicio que podéis conseguir en esta página. A cada uno de los 7 segmentos
se les adjudica una letra para poder identificarlos, desde la “A”hasta la “G”, empezando por la barra de más arriba
y siguiendo en el sentido de las agujas del reloj.
Si tenéis otro modelo, el principio de funcionamiento será el mismo , y sólo tendréis que buscar información acerca
de cómo se conecta en la página del fabricante.
Lo importante es que sepáis qué pin del display corresponde a cada segmento, y cuál se conecta a GND.
CONEXIÓN Y PRUEBA DEL DISPLAY
El display que viene en el Kit de Inicio de Prometec tiene 10 pines, 5 en la parte superior y 5 en la inferior.
Colocando el punto abajo a la derecha los pines se nombran empezando por el de abajo a la izquierda y en
dirección contraria a las agujas del reloj.
En esta figura podemos ver la distribución de los pines y a qué segmento corresponde cada uno, además del punto
y la conexión a GND (a través de una resistencia para limitar la intensidad, como hacemos siempre con los LED).
Es importante tener la distribución en mente cuando vayamos a conectarlo y hacerlo de la forma más ordenada
posible para que la programación sea más sencilla. Tenemos que saber en todo momento que salida ilumina cada
segmento, de manera que si, por ejemplo, queremos mostrar un 1, pongamos HIGH los pines conectados
a “B” y “C”, dejando los demás a LOW.
Por esto, el esquema eléctrico que mostraremos a continuación no es obligatorio, pero sí es la forma que a
nosotros nos ha parecido más sencilla. Si decidís conectarlos en otro orden tendrías que cambiar también la
programación. No vamos a poner el montaje en la protoboard porque va a ser un lío más que una ayuda, y además
no tenemos ninguna duda de que a estas alturas tenéis más que dominados los esquemas eléctricos.
Como en S4A sólo podemos utilizar 4 salidas digitales, y necesitamos 7 para este display, vamos a utilizar las
salidas analógicas como si fueran digitales.
Simplemente utilizaremos el valor máximo 255 como HIGH y 0 como LOW.
Y ahora para probar si lo hemos conectado correctamente, vamos a hacer un programilla muy sencillo que vaya
enciendo uno por uno y por orden los LEDs del 7 segmentos, desde la “A” hasta la “G”.
Si hemos conectado todo correctamente, se tendrían que ir iluminando y apagando los LEDs en orden. Si se
enciende alguno que no esperabais, tendréis que comprobar de nuevo las conexiones. Podéis descargar el
programa aquí: Prueba 7 segmentos.
Ahora que ya tenemos todo bien conectado, vamos a utilizar el display 7 segmentos para simular una cuenta
atrás para el lanzamiento de un cohete. Y lo primero que vamos a hacer es dibujar un fondo en el escenario y crear
un par de disfraces, uno para el cohete en reposo y otro para cuando encienda los motores.
Os recomendamos poner el centro del disfraz en la parte de abajo del cohete, para que sea más sencillo
posicionarlo después cuando lo programemos.
Recordad que esto se hace desde el editor en el que dibujamos el disfraz.
A la hora de programar, lo primero que haremos será posicionar el objeto y seleccionar el disfraz correcto. Y una
vez hecho eso comenzaremos la cuenta atrás utilizando el bloque de control “enviar a todos 9”, que después
usaremos para que al recibirlo mostremos un 9 en el display durante un segundo.
Y una vez hecho esto ya podemos empezar a programar la cuenta atrás. Será tan sencillo como al recibir el
mensaje respectivo de cada número, encender las salidas que sean necesarias para representar el número en el
display. Es importante tener en mente la distribución de los segmentos y cómo los hemos conectado a nuestro
Arduino, o de lo contrario nos costará mucho representar los números correctamente.
Una vez que tengamos claro qué salidas debemos encender y cuáles apagar haremos que se muestre durante un
segundo y enviaremos el mensaje para mostrar el siguiente número:
Ahora nos queda añadir el lanzamiento del cohete, que será tan sencillo como añadir dos instrucciones una vez
que hayamos llegado a “0”. Cambiaremos el disfraz a encendido y haremos que el cohete se mueva en vertical
hasta el final de la pantalla, utilizando la instrucción “deslizar en … segs a x: … y: …”.
Podéis descargar el programa completo aquí: Cuenta atrás. Y como casi siempre, os recomendamos seguir
jugando con estos displays, por ejemplo, podrías añadirle un pulsador y crear un dado digital, de forma que cada
vez que lo pulséis muestre un número aleatorio del 1 al 6.
RESUMEN DE LA SESIÓN
EL BLUETOOTH EN S4A
Como utilizar S4A sin cables
OBJETIVOS
MATERIAL REQUERIDO.
INTRODUCCIÓN
Si recordáis, en la introducción a S4A que hicimos cuando comenzamos el curso, dijimos que una de las
limitaciones que tiene esta herramienta es que hay que tener siempre conectado el Arduino al PC para que S4A
pueda comunicarse con él y ejecutar el programa que hayamos creado. Y desde entonces no hemos vuelto a
hablar de ello, dando por hecho que sólo podíamos resignarnos y tenerlo conectado continuamente con un cable.
Para los proyectos que hemos realizado hasta ahora, esto del cable tampoco era un inconveniente muy grande,
menos aún en las sesiones en las que hemos utilizado el escenario del S4A. Pero si se nos pasa por la cabeza la
idea de hacer, por ejemplo, un robot tipo Rover (como esos que mandamos a la Luna), tener un cable molestando
por ahí puede ser un engorro.
Bueno, pues no mentíamos cuando decíamos que la placa necesita estar conectado al PC, pero lo del cable tiene
solución: el Bluetooth. Como seguro que sabéis, el Bluetooth es una tecnología que nos permite comunicar
dispositivos a distancia sin necesidad de cables, presente en los smartphones, tablets, en lo coches y en infinidad
de dispositivos electrónicos.
Y como no podría ser de otra manera, existen unos módulos que se conectan a nuestro Arduino y que nos servirán
para otorgarle la capacidad de comunicarse vía Bluetooth con otros dispositivos que también soporten esta
tecnología.
Así que para conseguir nuestro propósito necesitamoss un PC con Bluetooth y un módulo Bluetooth para nuestro
Arduino.
Si nos fijamos en los pines 0 y 1 de Arduino veremos que al lado hay escrito Rx y Tx. ¿Qué significa esto? Pues
que estos pines sirven también para realizar la comunicación serie de la misma forma que el cable que hemos
utilizado hasta ahora. El pin 0 (Rx) se encarga de recibir datos y el pin 1 (Tx) de transmitir datos.
Así que si conectamos el módulo Bluetooth a esos dos pines podrá transmitir los datos que lleguen desde otros
dispositivos Bluetooth a nuestro Arduino, pudiendo prescindir de cables. En nuestro caso buscamos recibir los
datos que le lleguen desde un PC con Bluetooth y que esté ejecutando S4A.
Hay varios módulos Bluetooth para Arduino, y los más utilizados son el HC-05 y el HC-06. Recomendamos utilizar
el HC-06 porque es el más sencillo de conectar y de usar, y será el que utilicemos nosotros para realizar esta
sesión.
El HC-06 tiene 4 pines, dos para la alimentación como ya es costumbre, y dos para comunicarse con nuestro
Arduino, rotulados como Rx y Tx. A la hora de conectarlo a nuestro Arduino tenemos que conectar el Tx del módulo
al Rx del Arduino, y el Tx del módulo al Rx del Arduino, de forma que lo que envíe el módulo Bluetooth lo reciba el
Arduino y viceversa. Pero de momento no conectéis nada, ya explicaremos por qué.
Pero antes de poder utilizarlo de esta forma con el S4A, vamos a tener que cambiar la configuración que tiene
predeterminada en el HC-06.
Para configurar el módulo vamos a tener que volver a utilizar el IDE de Arduino, el entorno de programación que
se utiliza normalmente para programar los Arduinos, y que utilizamos en la primera sesión del curso de S4A para
cargar el programa que nos permite usar S4A con nuestros Arduino. Si por alguna razón no tenéis descargado el
IDE, aquí tenéis el enlace que explica cómo hacerlo.
Ahora tenéis que descargar este archivo, que contiene el programa que configurará el Bluetooth: configurar_hc-
06_s4a. Lo que hace el programa es cambiar el nombre y la contraseña del Bluetooth para que pongáis la que
vosotros queráis, y configurar la velocidad de comunicación para que sea la misma que utiliza el S4A y
puedan “entenderse”.
Descomprimir el archivo y ejecutad el programa. En el programa podéis cambiar “PROMETEC” y “5678” por
el nombre y la contraseña que queráis que tenga vuestro dispositivo:
String nombre = "PROMETEC"; //Cambiar PROMETEC por el nombre deseado
Una vez hecho esto tenemos que cargar el programa en Arduino. Para ello no tenéis más que pulsar en el icono
con forma de flecha, y esperar a que en la parte de abajo os aparezca la palabra “Subido”.
Y una vez hecho esto tendréis que desconectar el cable del ordenador y conectar el módulo Bluetooth HC-06 de la
forma que hemos indicado anteriormente y que podéis ver en la siguiente imagen:
Y ahora sí, ya podéis volver a conectar el cable del ordenador. Cuando veáis que se enciende el LED del Arduino
que está conectado al pin 13 significará que ya ha terminado de configurarlo.
Una vez configurado habrá que volver a desconectar el Bluetooth del Arduino y cargar el Firmware de S4A en el
Arduino para poder volver a trabajar con S4A. Si no os acordáis cómo se hacía o no tenéis el archivo con el
Firmware guardado, echad un ojo a esta sesión en la que explicamos cómo hacerlo.
Si os preguntáis a que viene tanto conectar y desconectar la explicación es que mientras tengamos conectados los
pines 0 y 1 del Arduino, la conexión serie mediante el cable no funciona y no nos permite cargarle programas.
Por eso desconectamos el módulo para cargar el programa, y una vez cargado podemos conectar el módulo
Bluetooth y volver conectar el cable del ordenador para que se ejecute el programa y configure el HC-06.
Y ya por fin podéis quitar el cable del PC, volver a conectar el HC-06 y conectar el Arduino a la fuente de
alimentación.
Para conectar el PC en el que ejecutamos S4A y el HC-06 accedemos a la configuración del Bluetooth de nuestro
PC y ahí debería aparecernos el módulo con el nombre que le hayamos puesto. Lo seleccionamos, escribimos la
contraseña que hemos elegido y esperamos a que se emparejen.
Entonces abrimos el entorno S4A y si todo ha ido bien, tras un momento de incertidumbre, veremos cómo S4A
detecta la placa. Y ya para terminar vamos a hacer un programilla para hacer parpadear el LED de la propia placa
Arduino conectado internamente al pin 13 para asegurarnos de que todo esté funcionando correctamente. Veréis
que S4A va un poquito más lento a la hora de seleccionar y colocar los bloques, pero nada importante.
Hasta ahora hemos utilizado la alimentación que le da el propio cable que conectamos al USB del ordenador y que
sirve también para la comunicación.
Pero como precisamente lo que queremos es no depender de ese cable necesitamos una fuente de alimentación
externa.
Puede ser una fuente de alimentación que se conecta a un enchufe de la casa (como si fuese un cargador de
móvil), una caja de alimentación para pilas o una batería, y tiene que tener toma para la alimentación externa del
Arduino.
Pues si veis que efectivamente el LED parpadea, enhorabuena, porque significa que todo ha ido bien y que
tenemos todo bien configurado. Podéis volver a realizar cualquiera de las sesiones que hemos visto hasta ahora y
deberían funcionar todas correctamente. A partir de ahora utilizaremos este módulo para cosas mucho más
divertidas, empezando por intentar hacer un coche que podamos manejar a distancia.
RESUMEN DE LA SESIÓN
En esta sesión hemos aprendido varias cosas importantes:
OBJETIVOS
MATERIAL REQUERIDO.
Un Joystick.
Dos servos con sus horns, esas pequeñas piezas de plástico que
INTRODUCCIÓN Y MONTAJE
Sí seguís este curso con regularidad, esta sesión no va a tener mucho misterios para vosotros, porque no vamos a
explicar nada que no sepamos. Y si no lo habéis hecho (o las tenéis un poco olvidadas) os recomendamos que
echéis un ojo a estas sesiones, en las que hablábamos de los joysticks, los servos y, por supuesto, de cómo
montar el soporte del brazo robótico de dos ejes:
Joystick.
Servos.
Montaje estructura brazo robótico.
Si ya habéis montado la estructura sabréis que para poder mover el brazo robótico vamos a utilizar dos servos. Uno
se encargará del movimiento en el eje X (horizontal) y el otro en el eje Y (vertical). Y para controlar ese movimiento
utilizaremos un joytick, que nos viene al pelo, porque precisamente nos permite controlar dos ejes.
El esquema de conexión sería el siguiente:
PROGRAMA DE CONTROL
El programa para controlarlo es muy sencillito. Simplemente crearemos dos variables en las que guardaremos la
posición del servo, “angulo X” y “angulo Y”, que inicialmente posicionaremos en 90º, la posición media de los
servos.
Y para moverlos sumaremos o restaremos un número de grados a la posición del servo cuando el joystick se
encuentre desplazado de la posición central en alguno de los ejes, teniendo en cuenta si es el eje X o el Y (no
quiero ser pesado, pero si necesitáis más explicaciones recordad que podéis echar un ojo a las sesiones que
hemos comentado antes).
Para cambiar la velocidad de movimiento de los servos sólo tendríamos que cambiar la cantidad que sumamos y
restamos a los ángulos. Aquí tenéis el programa completo: brazo-robot-s4a.
RESUMEN DE LA SESIÓN
OBJETIVOS
MATERIAL REQUERIDO.
INTRODUCCIÓN
Ya hemos visto en sesiones anteriores cómo podemos manejar motores de corriente continua (CC) en S4A,
utilizando directamente los pines de salida analógica de Arduino.
Pero nuestro honorable Arduino está limitado por la intensidad que puede proporcionar al motor, y en seguida va a
ser insuficiente cuando queramos usarlo para controlar motores de mayor potencia.
Hay muchísimos controladores diferentes, pero nosotros nos hemos decidido por el L298N por su facilidad de uso y
su reducido precio, y porque nos permite elegir los pines del Arduino que queremos usar para controlar los
motores. El L298N puede trabajar con tensiones hasta 35V y una intensidad de hasta 2A, muy superiores a las de
la placa Arduino.
Algunos controladores de motores (y muchos otros componentes) se montan directamente encima del Arduino, y
los denominamos shields.
Estos shields se reservan directamente ciertos pines para su uso y disfrute, así que no suelen ser recomendables
para usar con S4A, ya que raramente nos coinciden correctamente la función de los pines en S4A y en el
controlador.
Este módulo tiene además otra característica muy importante, y es que nos permite controlar la dirección de giro
de los motores, es decir podremos hacer que giren en ambos sentidos (esto suena fenomenal para hacer un
coche).
Además nos permite obtener del módulo una tensión de 5V, perfecta para alimentar nuestro Arduino. Eso sí, este
regulador sólo funciona si alimentamos el módulo con una tensión máxima de 12V.
Esto, unido a que ya hemos aprendido a utilizar el Bluetooth, nos será muy útil cuando construyamos ese coche
que se nos está empezando a pasar por la cabeza o algún robot, para utilizar una única fuente de alimentación
para todo.
CONEXIÓN Y FUNCIONAMIENTO
La entrada de tensión Vin admite tensiones entre 3V y 35V, y justo a su derecha en la imagen tenemos el pin que
debemos conectar a GND.
Para controlar la velocidad de giro de los motores tenemos que quitar los jumpers y usar los pines ENA y ENB. Los
conectaremos a dos salidasanalógicas de forma que le enviemos un valor entre 0 y 255 que controle la velocidad
de giro. Si tenemos los jumpers colocados, los motores girarán a máxima velocidad.
PROGRAMACIÓN
Sabiendo todo esto, ya estamos en posición de empezar a programar. Así que abrimos S4A y al lío. Primero vamos
a hacer las funciones que moverán los motores en los diferentes sentidos y velocidades; empezando por mover los
dos motores hacia delante y a máxima velocidad.
Vamos a hacerlas de tal manera que al recibir un mensaje desde el programa principal, cambie los valores de las
salidas para mover los motorescomo queramos. Es importante ser ordenado y colocar los bloques con cuidado
para asegurarnos que controlamos bien las entradas IN1 a IN4 del módulo controlador.
Y para las demás direcciones de giro haríamos lo mismo, variando además el valor que mandamos
a ENA y ENB para cambiar la velocidad. Además haremos una función que pare los dos motores, poniendo todo a
LOW.
Y e la parte principal del programa iremos llamando a cada función, haciendo que cada una dure lo que queramos
usando bloques “esperar“:
Podéis descargar el programa completo aquí: l298n. Si al ejecutarlo resulta que los motores se mueven en
direcciones que no son las esperadas, podéis intercambiar las conexiones del motor en los bornes del L298N.
RESUMEN DE LA SESIÓN
o Hemos presentado el módulo L298N que nos permite controlar motores de una cierta potencia de una manera muy
sencilla.
o Sabemos cómo conectarlo a nuestro Arduino y programarlo usando S4A.
o Hemos creado un programa para mover los motores en ambas direcciones y a diferentes velocidades.
o
INTRODUCCIÓN: COCHE
TELEDIRIGIDO CON S4A
Explicando el contenido del curso
Con esta sesión damos inicio a una serie de tutoriales que culminarán con la construcción de nuestro propio coche
teledirigido programado con S4A, y lo que pretendemos con ella es simplemente dejar claro qué es lo que
queremos hacer y qué vamos a necesitar para poder seguirlo con garantías.
El objetivo es construir un coche teledirigido que controlaremos utilizando el teclado de nuestro ordenador, sin
ningún cable de por medio, por supuesto. Para ello a parte de la estructura del coche vamos a utilizar un Arduino
UNO, un controlador de motores y un Bluetooth, además de otros componentes como cables o tornillos.
Pero no os preocupéis por el material, porque para evitar el lío comprar los componentes por separado hemos
preparado un Kit de Coche Teledirigido, que incluye todos los componentes conforman el coche y que vamos a
necesitar para seguir el curso.
En cuanto al contenido, el curso se va a componer de otras 4 sesiones, y en cada una de ellas abordaremos un
tema diferente:
Pero si no lo habéis hecho no hay motivo para preocuparse, ya que vamos a explicar todo lo que sea necesario
para que nadie se pierda por el camino y que se puedan seguir las sesiones sea cual sea el nivel de conocimiento
de quien lo quiera seguir. Y es que como siempre decimos por aquí, sólo va a ser necesario un mínimo de interés y
de ganas.
Incluso si hay alguien que ha llegado hasta aquí y ni si quiera le suena esto del S4A, puede echarle un ojo a
la Introducción que hicimos cuando comenzamos el curso para hacerse una idea.
OBJETIVOS
MATERIAL REQUERIDO.
Aunque el set de piezas del coche viene con unas instrucciones de montaje, vamos a intentar desarrollarlo un
poquito más para intentar clarificarlo lo más posible. Es muy sencillo y seguro que no tenéis ningún problema.
Lo primero que haremos será conectar los cables rojos y negros a los dos motores amarillos. Podríamos también
hacerlo después de montar los motores en el chasis del coche, pero al menos a nosotros, nos resulta más sencillo
hacerlo antes de colocarlos en el chasis.
Los cables se conectan en los dos bornes metálicos que tienen los motores. La mejor manera es soldarlos, pero si
no tenéis soldador podéis pelar un poquito más el cable y después de atarlo lo mejor posible a los bornes ponerle
un poquito de cinta aislante para que no se suelten, pero asegurándonos de que el cable no deje de hacer contacto
con el borne metálico en ningún momento.
No hace falta preocuparse por el orden en el que conectamos los cables a los bornes, porque luego podemos
cambiar el sentido de giro de los motores tanto en la conexión al controlador de motores como en el programa que
haremos para controlarlos.
Sí es más importante que los cables salgan hacia el lado del motor, porque luego al conectarlos irán hacia ese
lado.
Para sujetar los motores al chasis vamos a necesitar las siguientes piezas:
Colocamos una de las piezas de plástico en uno de los dos agujeros rectangulares que hay en la zona central del
chasis, y otra en la parte exterior que tiene una hendidura paralela a la que hemos colocado en el interior, con el
motor en medio de ellas
Atravesamos con los tornillos los agujeros de las piezas de plástico haciéndolos coincidir con los del motor. Os
recomendamos:
Dejar los cables hacia el interior, y la parte donde están las soldaduras hacia el lado del chasis que no tiene esa
especie de parachoques.
Las tuercas las colocaremos en el lado interior, porque hacia el exterior rozarían con las ruedas.
Colocar primero el tornillo y la tuerca más cercana al chasis antes de meter el otro tornillo, para que nos sea más
sencillo poner la tuerca que queda bastante pegada al chasis de plástico.
Debería quedaros de esta forma:
A continuación vamos a montar lo que se llama rueda loca. Es una rueda sin tracción que puede girar libremente.
Para este paso vamos a necesitar los 4 hexágonos dorados, 8 de los tornillos más cortos y la parte del chasis que
ya tenemos montada.
Empezamos atornillando los hexágonos dorados al chasis con cuatro de los tornillos, de forma que los hexágonos
queden hacia el lado de los motores.
Ahora colocamos la rueda loca en los hexágonos y la atornillamos con cuatro tornillos.
La base de la rueda no es cuadrada, sino rectangular así que sólo encaja en un sentido.
A la hora de colocar los tornillos, es mejor no apretarlos del todo hasta que estén los cuatro bien puestos, para que
nos sea más sencillo hacer coincidir los tornillos con los hexágonos a través de la base de la rueda.
Simplemente tenemos que colocar las ruedas en la parte exterior de los motores, haciendo coincidir la forma del
agujero de las ruedas con las de la parte blanca rotativa del motor.
5º Montar el interruptor:
Vamos a utilizar un interruptor para poder encender y apagar el coche de la forma más sencilla posible. Sólo
tenemos que colocarlo en el agujero que hay en el centro del coche, forzándolo un poquito a que entre y dejando el
interruptor hacia la parte de arriba.
Para el soporte necesitamos dos tornillos un poquito más largos, para que puedan atravesar el chasis. Los
colocaremos en los dos agujeros alargados que hay entre el interruptor y la rueda loca. Sólo tenemos que meterlos
por los agujeros del propio soporte y poner las tuercas para sujetarlo al chasis.
Y con esto ya hemos terminado el montaje del chasis que nos servirá de soporte para ir colocando los
componentes electrónicos que usemos en la construcción del coche.
RESUMEN DE LA SESIÓN
Hemos montado el chasis del coche que nos servirá como base para el coche por control remoto que vamos a
construir.
OBJETIVOS
o Explicar cómo funciona el controlador de motores
o Montar el Arduino y el L298N en el chasis.
o Realizar las conexiones eléctricas.
MATERIAL REQUERIDO.
40.00€ + IVA
ROBOT EDUCATIVO
Añadir al carrito
Si habéis seguido el curso de S4A sabréis que podemos manejar motores de corriente continua (CC) en S4A,
utilizando directamente los pines de salida analógica de Arduino y un transistor.
Pero nuestro honorable Arduino está limitado por la intensidad que puede proporcionar al motor, y va a ser
insuficiente cuando queramos usarlo para controlar motores de mayor potencia.
Hay muchísimos controladores diferentes, pero nosotros nos hemos decidido por el L298N por su facilidad de uso y
su reducido precio, y porque nos permite elegir los pines del Arduino que queremos usar para controlar los
motores. El L298N puede trabajar con tensiones hasta 35V y una intensidad de hasta 2A por canal por canal, con
lo que puede manejar hasta 4A en total y unos 25W.
Algunos controladores de motores (y muchos otros componentes) se montan directamente encima del Arduino, y
los denominamos shields.
Estos shields se reservan directamente ciertos pines para su uso y disfrute, así que no suelen ser recomendables
para usar con S4A, ya que raramente nos coinciden correctamente la función de los pines en S4A y en el
controlador.
Este módulo tiene además otra característica muy importante, y es que nos permite controlar la dirección de giro
de los motores, es decir podremos hacer que giren en ambos sentidos, algo totalmente necesario para nuestro
coche.
Además nos permite obtener del módulo una tensión de 5V, perfecta para alimentar nuestro Arduino sin tener que
utilizar otra fuente adicional. Eso sí, este regulador sólo funciona si alimentamos el módulo con una tensión máxima
de 12V. En nuestro caso son 4 pilas de 1.5V,o sea, 6V.
Si el jumper del regulador está cerrado activaremos el regulador de tensión del L298N, y en V lógicotendremos
una salida de 5V, que podremos usar para lo que queramos, por ejemplo para alimentar una placa Arduino.
Si el quitamos el jumper desactivaremos el regulador, necesitaremos alimentar la parte lógica del módulo, así que
tendremos que meter una tensión de 5V por la conexión V lógico para que el módulo funcione.
¡Cuidado! Si introducimos corriente por V lógico con el jumper de regulación puesto podríamos dañar el módulo.
Además el regulador sólo funciona con tensiones hasta 12V en Vin, por encima de este valor tendremos que
quitar el jumper y alimentar la parte lógica del módulo desde otra fuente.
Los pines IN1 e IN2 nos sirven para controlar el sentido de giro del motor A, y los pines IN3 e IN4 el del motor B.
Funcionan de forma que si IN1 está a HIGH e IN2 a LOW, el motor A gira en un sentido, y si está IN1 a LOW e IN2
a HIGH lo hace en el otro. Y lo mismo con los pines IN3 e IN4 y el motor B.
Para controlar la velocidad de giro de los motores tenemos que quitar los jumpers y usar los pines ENA y ENB. Los
conectaremos a dos salidasanalógicas de forma que le enviemos un valor entre 0 y 255 que controle la velocidad
de giro. Si tenemos los jumpers colocados, los motores girarán a máxima velocidad.
Con el chasis montado vamos a colocar el Arduino y el controlador de motores L298N. No tenéis por qué hacerlo
igual que nosotros, pero nosotros vamos a recomendaros el lugar y el orden para montarlo que nos ha parecido
mejor y más sencillo.
Con eso en mente os recomendamos montar primero el L298N, para poder conectarle los cables de los motores sin
que nos moleste el Arduino. Lo colocaremos en esta posición mediante 2 tornillos (de los dos tipos que nos
quedan, los más largos):
Y a continuación conectaremos los cables de los motores a los bornes de alimentación de los motores. No os
preocupéis demasiado por la posición en la que conectéis el cable negro y el blanco. De ello dependerá hacia
donde gire el motor, pero si gira en el sentido que no esperamos hay varias maneras de corregirlo, y así lo haremos
más adelante.
Una vez conectados vamos a colocar el Arduino justo encima del controlador utilizando 3 tornillos (de los largos
también):
CONEXIONES ELÉCTRICAS
Una vez hemos montado el Arduino y el L298N, y sabemos cómo funciona este último, ya estamos en disposición
de realizar las conexiones eléctricas pertinentes. El esquema eléctrico sería el siguiente:
Siguiendo con nuestras recomendaciones, creemos que lo más sencillo es conectar primero los cables de
alimentación y GND del soporte para pilas al L298N, pasando antes por el interruptor que colocamos para poder
encenderlo y apagarlo fácilmente.
El cable negro lo conectaremos directamente al GND del L298N, y será el cable rojo el que pasaremos por
el interruptor. Para ello lo cortaremos y lo soldaremos a una de las patas metálicas del interruptor (da igual a
cuál), y la parte sobrante de cable la conectaremos a la otra parte del interruptor, y de ahí a la alimentación del
módulo L298N.
Como se suele decir, mejor que sobre que no que falte, así que no apuréis mucho al cortar los cables no vaya a ser
que se os queden demasiado cortos.
El resto de cables los conectaremos como hemos visto en el esquema eléctrico, tratando de utilizar cables de
colores diferentes y de la forma más ordenada posible, para asumir el menor riesgo a equivocarnos posible.
Una vez conectados todos los cables podemos colocarle una goma o una brida para tenerlos unidos que esté un
poquito más ordenado. Además podemos meterle ya las pilas, que os recomendamos que sean unas buenas pilas
alcalinas.
Si pulsamos el interruptor deberían encenderse los LEDs de alimentación tanto del Arduino como del L298N.
RESUMEN DE LA SESIÓN
OBJETIVOS
MATERIAL REQUERIDO.
Set de piezas del coche
En la sesión anterior ya conectamos y explicamos cómo funciona el controlador, pero vamos a recordarlo un poco
por encima antes de ponernos a programar.
Para controlar la velocidad de giro de los motores se utilizan los pines ENA y ENB, que hemos conectado a las
salidas analógicas 6 y 5 de Arduino respectivamente.
Podemos darles un valor de 0 a 255, aunque os recomendamos que no le pongáis un valor demasiado alto ni
demasiado bajo.
Si le damos un valor demasiado bajo, no será suficiente para mover los motores.
Si por el contrario le damos uno demasiado alto no vamos a tener suficiente potencia para mover las ruedas y
hacer funcionar el Bluetooth que pondremos en la siguiente sesión.
Los componentes que sirven para comunicarse a distancia, como el Bluetooth, consumen mucha potencia.
Para controlar el sentido de giro de los motores se utilizan los pines IN1 e IN2, para el motor A y los
pines IN3 e IN4 para el motor B, y funcionan de la siguiente forma.
Sabemos que con los pines IN1 a IN4 controlamos el sentido de giro de los motores, pero el problema que se nos
presenta es que no tenemos forma de saber hacia qué dirección va a girar, así que lo haremos mediante ensayo y
error. Para ello conectaremos el Arduino al PC y arrancaremos S4A.
Haremos un pequeño programa en el que al pulsar la tecla de la flecha del teclado hacia arriba las ruedas se
muevan, y que al hacerlo el coche se mueva hacia delante, teniendo en cuenta que consideramos la parte
delantera la que tiene forma de parachoques.
Vamos a suponer que el coche se va a mover hacia delante cuando tengamos IN1 (pin 13 de Arduino)
a LOW, IN2 (pin 12) a HIGH, IN3 (pin 11) a LOW e IN4 (pin 10) a HIGH. Además le indicaremos la velocidad a lo
que lo tiene que hacer con los pines ENA y ENB.
Y haremos que lo haga cuando pulsemos la tecla con la flecha hacia arriba de nuestro teclado.
Para comprobarlo encendemos el interruptor del coche y pulsamos la tecla hacia delante. Pueden pasar 4 cosas:
Que el coche se mueva hacia delante. ¡Perfecto! Hemos tenido suerte y no vamos a tener que cambiar nada.
Que el coche se mueva hacia detrás. Los dos se mueven al revés de lo que hemos supuesto.
Que el coche gire hacia la derecha. El motor B gira al revés de lo que hemos supuesto.
Que el coche gire a la izquierda. El motor A gira al revés de lo que hemos supuesto.
Bueno, pues si sois de la primera opción, felicidades, y sino no pasa nada porque esto tiene fácil arreglo, y de
hecho, podemos arreglarlo de varias formas.
Podemos intercambiar las dos conexiones del motor que esté girando al revés de lo que buscamos, o de los dos
motores si los dos lo hacen al revés. OUT1 y OUT2 para el motor A, y OUT3 y OUT4 para el motor B.
Si os resulta complicado acceder a esos cables, también podéis intercambiar los pines que controlan el sentido de
giro de los motores. Es decir, IN1 e IN2 para el motor A, e IN3 e IN4para el motor B.
Y si no queréis andar cambiando los cables podemos cambiar el programa. Sólo tendríamos que cambiar el estado
de los pines que dan el sentido de giro del motor que queramos invertir. Si, por ejemplo, quisiéramos cambiar el
sentido de giro del motor A, haríamos lo siguiente:
Si lo corregís de cualquiera de las dos primeras formas, el resto del programa podéis seguirlo igual que el que
vayamos haciendo nosotros. Si lo hacéis de la última forma, tendréis que tenerlo en cuenta también para el resto
del programa y cambiarlo también para los demás movimientos.
Una vez que tenemos programado el movimiento hacia delante y tenemos claro cómo giran nuestros motores, el
resto lo tenemos fácil. Primero vamos a hacer que se mueva hacia atrás, para lo que sólo necesitaremos invertir los
pines 10 al 13 que controlan el sentido de giro.
Si lo que queremos es girar a la derecha, el motor A debería ir hacia delante y el B hacia atrás, y lo contrario para
girar a la izquierda.
Y por último haremos que los motores se paren al pulsar la tecla “espacio”. Podéis descargar el programa
completo aquí: coche-s4a.
RESUMEN DE LA SESIÓN
Siguiente
OBJETIVOS
MATERIAL REQUERIDO.
Hasta ahora hemos tenido que mantener conectado el coche al PC continuamente con un cable, y esto parece
poco compatible con el concepto de coche teledirigido que cualquiera pueda tener en la cabeza. Y para solucionar
eso vamos a utilizar el Bluetooth, un concepto que seguro que os suena a todos, sobre todo gracias a los
smartphones y PCs.
Y como no podría ser de otra manera, existen unos módulos que se conectan a nuestro Arduino y que nos
servirán para otorgarle la capacidad de comunicarse vía Bluetooth con otros dispositivos que también soporten esta
tecnología.
Si nos fijamos en los pines 0 y 1 de Arduino veremos que al lado hay escrito Rx y Tx. ¿Qué significa esto? Pues
que estos pines sirven también para realizar la comunicación serie de la misma forma que el cable que hemos
utilizado hasta ahora. El pin 0 (Rx) se encarga de recibir datos y el pin 1 (Tx) de transmitir datos.
Así que si conectamos el módulo Bluetooth a esos dos pines podrá transmitir los datos que lleguen desde otros
dispositivos Bluetooth a nuestro Arduino, pudiendo prescindir de cables. En nuestro caso buscamos recibir los
datos que le lleguen desde un PC con Bluetooth y que estará ejecutando S4A, desde controlaremos el coche.
Hay varios módulos Bluetooth para Arduino, y los más utilizados son el HC-05 y el HC-06. Recomendamos utilizar
el HC-06 porque es el más sencillo de conectar y de usar, y será el que utilicemos en el coche..
El HC-06 tiene 4 pines, dos para la alimentación como ya es costumbre, y dos para comunicarse con nuestro
Arduino, rotulados como Rx y Tx. A la hora de conectarlo a nuestro Arduino tenemos que conectar el Tx del módulo
al Rx del Arduino, y el Tx del módulo al Rx del Arduino, de forma que lo que envíe el módulo Bluetooth lo reciba
el Arduino y viceversa. Pero de momento no conectéis nada, ya explicaremos por qué.
Pero antes de poder utilizarlo de esta forma con el S4A, vamos a tener que cambiar la configuración que tiene
predeterminada en el HC-06. Así que de momento no conectéis nada, ya explicaremos por qué.6.
Para configurar el módulo vamos a tener que utilizar el IDE de Arduino, el entorno de programación que se utiliza
normalmente para programar los Arduinos, y que utilizamos en la primera sesión del curso de S4A para cargar el
programa que nos permite usar S4A con nuestros Arduino. Si por alguna razón no tenéis descargado el
IDE, aquí tenéis el enlace que explica cómo hacerlo.
Ahora tenéis que descargar este archivo, que contiene el programa que configurará el Bluetooth: configurar_hc-
06_s4a. Lo que hace el programa es cambiar el nombre y la contraseña del Bluetooth para que pongáis la que
vosotros queráis, y configurar la velocidad de comunicación para que sea la misma que utiliza el S4A y
puedan “entenderse”.
Descomprimir el archivo y ejecutad el programa. En el programa podéis cambiar “PROMETEC” y “5678” por
el nombre y la contraseña que queráis que tenga vuestro dispositivo:
String nombre = "PROMETEC"; //Cambiar PROMETEC por el nombre deseado
Una vez hecho esto tenemos que cargar el programa en Arduino. Para ello no tenéis más que conectar el Arduino
al PC, pulsar en el icono con forma de flecha, y esperar a que en la parte de abajo os aparezca la palabra “Subido”.
Y una vez hecho esto tendréis que desconectar el cable del ordenador y conectar el módulo Bluetooth HC-06 de la
forma que hemos indicado anteriormente y que podéis ver en la siguiente imagen:
Os recomendamos unir los cables a los demás y sujetar el Bluetooth al chasis con un goma o una brida.
Y ahora sí, ya podéis volver a conectar el cable del ordenador. Cuando veáis que se enciende el LED del Arduino
que está conectado al pin 13 significará que ya ha terminado de configurarlo.
Una vez configurado habrá que volver a desconectar el Bluetooth del Arduino y cargar el Firmware de S4A en el
Arduino para poder volver a trabajar con S4A. Si no os acordáis cómo se hacía o no tenéis el archivo con el
Firmware guardado, echad un ojo a esta sesión en la que explicamos cómo hacerlo.
Si os preguntáis a que viene tanto conectar y desconectar la explicación es que mientras tengamos conectados los
pines 0 y 1 del Arduino, la conexión serie mediante el cable no funciona y no nos permite cargarle programas.
Por eso desconectamos el módulo para cargar el programa, y una vez cargado podemos conectar el módulo
Bluetooth y volver conectar el cable del ordenador para que se ejecute el programa y configure el HC-06.
Y ya por fin podéis quitar el cable del PC, volver a conectar el HC-06 y pulsar el interruptor para encender el coche.
Para conectar el PC en el que ejecutamos S4A y el HC-06 accedemos a la configuración del Bluetooth de nuestro
PC y ahí debería aparecernos el módulo con el nombre que le hayamos puesto. Lo seleccionamos, escribimos la
contraseña que hemos elegido y esperamos a que se emparejen.
Entonces abrimos el entorno S4A y si todo ha ido bien, tras un momento de incertidumbre, veremos cómo S4A
detecta la placa. Por fin, abrimos el programa que tenemos de la sesión anterior para controlar el coche y listo, a
jugar con él.
RESUMEN DE LA SESIÓN