Programando S4a1
Programando S4a1
OBJETIVOS
El objetivo de este curso es ayudar a acercarse al mundo de la programacin a cualquiera
que quiera comenzar, especialmente a los ms pequeos, de una forma atractiva y divertida,
mediante el uso del entorno grfico de programacin S4A (Scratch for Arduino).
Por otro lado, dotar a los colegios y docentes en general, de unas unidades didcticas que
puedan seguir para impartir un curso de Tecnologa para primaria o ESO, a sabiendas de
que el objetivo no es tanto Arduino, sino dar unas primeras nociones de programacin y
electrnica bsica a sus alumnos.
Por eso el curso est ordenado de modo que se pueda empezar sin ningn conocimiento
previo y vaya avanzando presentando conceptos y competencias bsicas que permitan
avanzar con suelo firme hasta un punto en que puedas acometer tus propios proyectos con
garantas de xito.
Scratch est diseado para ser sencillo de usar y con los mas peques en mente (Entre 8 y
15 aos) de modo que puedan iniciarse a la programacin de un modo divertido y que
resulte atrayente, pero muchos padres sin conocimientos previos de programacin
probablemente se sorprendan al ver que tambin ellos son capaces de hacer programas
medianamente complejos y entendiendo lo que hacen y no simplemente copiando.
QU ES ARDUINO?
Es barata.
Es multiplataforma: el software de Arduino se puede ejecutar desde sistemas operativos
Windows, Linux y Macintosh OSX.
Es fcil de usar y de programar.
El software y el hardware son de cdigo abierto y ampliable.
Tiene una comunidad de usuarios inmensa.
Es compatible con muchsimos perifricos de todo tipo.
Tiene infinidad de aplicaciones.
A lo largo de este curso utilizaremos el entorno grfico Scratch 4 Arduino (S4A), basado en
el popular Scrath desarrollado por el MIT, que proporciona una herramienta de
programacin sencilla para la placa Arduino.
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 garantas.
Aunque en el kit se incluyen cosas que no usaremos en este curso, si segus adelante
tendris todo lo que necesitis para seguir con el curso de programacin en el IDE de
Arduino, en el que aprenderemos a programar con cdigo (derivado del C++) , y
utilizaremos nuevos y ms complejos componentes electrnicos.
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 completis nuestros humildes cursos estaris en buenas condiciones para
montar vuestros propios proyectos, o si sois entidades de formacin reglada, dar a vuestros
alumnos unas nociones muy interesantes de programacin y electrnica, que estamos
seguros sern de inters en su formacin intelectual. Os invitamos a ello.
INSTALACIN DEL ENTORNO
GRFICO S4A
Preparando Arduino y Scratch
OBJETIVOS
Para poder trabajar con Arduino necesitamos descargar e instalar el entorno grfico de
programacin o IDE por sus siglas en ingles, y para ello disponis de una sesin
dedicada aqu.
Siguiendo sus instrucciones conseguiris instalar el entorno Arduino y configurar vuestra
modelo Arduino (Porque los hay de muchos tipos creedme, y solo funcionar
si seleccionis correctamente vuestro modelo)
Para que Scratch for Arduino pueda comunicarse con la placa, necesitamos volcarle un
pequeo programa necesario para que se entiendan. Por eso tras instalar el IDE, vamos a
cargar el firmware en la placa Arduino para que S4A pueda comunicarse con l.
Haced click con el botn derecho aqu y seleccionad:
Una vez que lo hayamos subido, no hay que volver a hacerlo mientras trabajemos con S4A,
a no ser que carguemos otro programa en la placa desde el IDE.
DESCARGA E INSTALACIN DEL ENTORNO GRFICO S4A
o Windows
o Mac
o Linux (Debian)
o Linux (Fedora) (version 1.5)
o Raspbian (Debian para RaspberryPi).
Una vez finalizada la descarga, descomprimimos el archivo y ejecutamos el fichero
descargado. El asistente de instalacin nos guiar a lo largo de la misma. Una vez terminada
la instalacin, el icono de S4A aparecer en nuestra rea de trabajo.
Cuando la haya encontrado veremos que las cantidades mostradas en el cuadro de resumen
de valores irn variando rpidamente.
En caso de que no la encuentre automticamente, pulsamos en el cuadro de resumen de
valores con el botn derecho y nos aparecer un men desplegable donde podemos buscar
la placa automticamente o seleccionar manualmente el puerto al que est conectado.
INSTALACIN EN RASPBERRY PI (RASPBIAN)
Si queremos realizar la instalacin de S4A en una Raspberry Pi, nos tenemos que asegurar
de que est conectada a internet y abrir el explorador el navegador Midori. Entonces
accedemos a http://s4a.cat y cuando estemos en la seccin de descargas seleccionamos
Raspbian (Debian for RaspberryPi) y elegimos Save.
La Raspberry PI 2, corre con alegra el entorno S4A y es una opcin excelente, en lugar de
un PC con sistema completo tipo Windows o Mac, en los entornos en los que el presupuesto
es algo a considerar.
Cuando se haya descargado abrimos una ventana del terminal haciendo click en el icono de
LXTerminal en el escritorio.
Al abrir el terminal estaremos en el directorio /home/pi/. Si queremos comprobarlo podemos
teclear pwd y tras pulsar la tecla Intro nos devolver el directorio en el que estamos.
Si a continuacin escribimos ls nos mostrar todos los ficheros y carpetas que hay en
/home/pi/. Entre ellos deberamos encontrar el archivo que hemos descargado
S4A15_RP.deb.
Si no lo encontramos en este directorio, es posible que se haya descargado en
/home/pi/Downloads/. Para comprobarlo tecleamos cd Downloads para acceder a ese
directorio y a continuacin ls.
Una vez lo hayamos localizada tecleamos
sudo dkpg i S4A15_RP.deb
Hay que respetar las letras maysculas, ya que el terminal distingue entre maysculas y
minsculas (Esto es una mana de Linux y hay que acostumbrarse).
Mientras se instala veremos que en el terminal se van escribiendo diferentes textos hasta
que vuelve a aparecer pi@raspberrypi ~$. Entonces ya podemos cerrar el terminal.
Si ahora abrimos el men de inicio y vamos a Programming, S4A aparecer entre las
aplicaciones. Pulsamos en el icono e iniciamos Scratch 4 Arduino.
OTRAS CONSIDERACIONES
Como hemos comentado, una las ventajas de Arduino es que su IDE es multiplataforma.
Esto hace que podamos correrlo en micro ordenadores de bajo coste como Raspberry
Pi u Orange Pi.
Estos nuevos ordenadores en una placa unica o SBC (Single Board Computers por sis
siglas en Ingls) que inici la Raspberry PI, han causado una autentica revolucin en el
mundo de los aficionados y como ordenadores de bajo coste.
Normalmente usan un procesador de telfono mvil pero con una potencia creciente ao a
ao y pronto rivalizaran con los procesadores de Intel o AMD a una fraccin de su coste.
La Raspberry PI inici el camino, pero ya existen rivales muy a tener en cuanta como las
Orange PI o Banana PI que son mas o menos compatibles con la Raspi y otras como las
PCduino, CubieBoard y BeagleBone que corren directamente Linux.
Adems, en algunas distribuciones de GNU/Linux vienen instalados por defecto tanto el IDE
de Arduino como el S4A.
Como comentamos en la introduccin, para ejecutar el programa nuestro Arduino tiene que
estar conectado a un PC, as que si queremos construir un proyecto que necesite libertad
para moverse podemos usar alguno de esos mini-ordenadores e integrarlo en la maqueta
con una batera.
Por eso recomendamos este tipo de micro ordenadores SBC, como una opcin a tener en
cuenta dado su bajo precio y versatilidad.
NUESTRO PRIMER
PROGRAMA SCRATCH
Primeros pasos programando
OBJETIVOS
MATERIAL REQUERIDO.
PRIMEROS PASOS
No tiene ningn sentido tratar de explicar para qu sirven cada una de las opciones y bloques
que encontramos en el entorno S4A, porque probablemente se os olvidaran la mayora 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.
1. Tipos de bloques.
2. Listado de bloques de una determinada categora.
3. Contenido de un objeto: programas, disfraces y sonidos.
4. Escenario.
5. Listado de objetos.
El ejercicio tpico para empezar a programar suele ser el blinking LED (LED intermitente),
porque es fcil 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 rapidsimos y con capacidades muy lejos del alcance de Arduino y otros pequeos
procesadores de bajo costo. Pero en cambio, estos son capaces de interactuar con el mundo
exterior fcilmente 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 computacin fisica y abre unas posibilidades inmensas,
como las impresoras 3D, los Drones y automatismos de todo tipo.
Y aun mas interesante, estn al alcance de cualquiera con inters 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 informacin digital del mundo exterior. En S4A corresponden
a los pines 2 y 3. (En rojo)
Salidas digitales: para enviar una seal digital al mundo exterior. En S4A corresponden a
los pines 10, 11 y 13. (En amarillo).
Las seales digitales son aquellas que slo 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 termino intermedio (Filsofos abstenerse)
Puedes aprobar si o no. Cuando alguien te explica que no ha aprobado pero en realidad es
como si si, suele acabar en recuperacin.
Esta dualidad tan sencilla es la base de funcionamiento de toda la computacin actual
aunque aun os parezaca increible.
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 ningn montaje y nos podremos centrar
en explicar los bloques que compondrn 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 categoras de bloques que hay.
En este caso seleccionaremos la categora 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 cmo y cundo interpretar
los dems bloques.
Todos son de color amarillo.
Si os fijis en los bloques veris que tienen una forma determinado a modo de pieza de un
puzle.
Slo 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 dems estn por debajo de ste. Pulsamos con el botn izquierdo
del ratn 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 hexgono rojo.
Como queremos que el programa se ejecute un nmero indefinido de veces, vamos a coger
ahora el bloque de control por siempre. Si nos fijamos en la forma de este bloque veremos
que la parte de arriba encaja con la parte de abajo del bloque con el que hemos empezado.
Adems 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 enviarn las seales a la salida digital
para encender y apagar el LED. Este tipo de bloques estn en la categora 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.
Como queremos que est encendido dos segundos, vamos a la
categora Control, seleccionamos el bloque esperar 1 segundos, y lo ponemos a
continuacin de digital 13 encendido.
Con esto lo que hacemos es que el programa se quede en la situacin en la que est durante
1 segundo (o el tiempo que nosotros le indiquemos).
Ya hemos terminado nuestro primer programa. Slo nos queja ejecutarlo y ver si funciona
correctamente.
Para ello damos a la bandera verde, o tambin podemos hacer click con el botn izquierdo
encima de cualquiera de los bloques de instrucciones. Veremos que todos los bloques de
nuestro programa y la bandera verde del escenario se iluminan y el LED de nuestra placa
Arduino comienza a parpadear cada dos segundos.
Podis descargaros el programa desde aqu: Blinking_Led.
Por ltimo, y si queremos guardar nuestro programa iremos a la pestaa Archivo, y le
daremos a Guardar Como. En ese men tenemos tambin las opciones
de Abrir para abrir un proyecto que hayamos guardado anteriormente y Guardar para
guardar el archivo encima del que tenemos abierto.
Tambin es interesante saber que en la pestaa Editar tenemos la opcin
de Deshacer, por si nos hemos equivocado y queremos volver atrs.
RESUMEN DE LA SESIN
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED
Cuando dejamos fluir agua de un sitio alto a otro ms bajo, el agua corre libremente mientras
no se lo impidamos, y siempre de arriba abajo.
Decimos que las diferentes alturas suponen una diferencia de potencial entre ambos puntos
que puede ser transformada en trabajo til.
Cuando existe una diferencia de tensin elctrica (O diferencia de potencial) entre dos
puntos con conexin, la electricidad fluye del positivo (O de ms carga) hacia el negativo o
menos, y tambin podemos obtener trabajo til de este principio.
Aunque la fsica detrs de estos dos ejemplos es diferente, el concepto es bastante parecido
y por ello hablamos de:
V = I x R
I = V / 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 algn susto, en el mejor caso.
Vemos a la izquierda el smbolo del diodo LED que es emisor de luz y por eso tiene esas
flechitas salientes para indicarlo (LED viene del ingls Light Emitting Diode, o diodo emisor
de luz).
La resistencia se representa por ese segundo smbolo 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 smbolo , Tierra (Aunque no es lo mismo), Ground, Negativo, ctodo.
Por ltimo a la derecha el smbolo de +5V indica el extremo de tensin positiva o positivo y
a veces se representa como Vcc. Las lneas rectas y negras indican conexin elctrica
mediante cables conductores.
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 sigas esta norma en la prctica
porque ayuda a identificar posibles problemas y evita errores.
La protoboard une los puntos horizontales de la lnea azul entre si y los horizontales de
encima de la lnea roja entre s, (se les llama rales), pero no conecta el ral rojo positivo con
el ral negro negativo.
En algunas protoboards estos rales llegan slo hasta la mitad de ella. La otra mitad es otro
ral diferente. En ese caso las lneas roja y azul estn divididas en dos en la mitad de la
lnea.
A su vez existen dos zonas de lneas verticales en la protoboard. Estas lneas verticales
estn unidas entre s internamente, para facilitar la conexin de los componentes, pero no
se unen las lneas paralelas, ni tampoco a la otra mitad separada por el canal central.
En la imagen las diferentes lneas de colores representan algunos ejemplos de cmo estn
unidos internamente los puntos de conexin. Todos los puntos debajo de una lnea de un
mismo color son un nico punto en cuanto a conexin elctrica.
Las claves para montar el circuito con xito, son:
RESUMEN DE LA SESIN
En esta sesin hemos aprendido varias cosas importantes:
Hemos visto algunos conceptos bsicos de electrnica: la ley de Ohm, que relaciona la
tensin la resistencia.
Hemos identificado dos componentes bsicos en electrnica, resistencias y los diodos.
Aprendimos a descifrar los primeros esquemas electrnicos.
Hemos montado nuestro primer circuito con estos componentes.
EJECUCIN DE UN
PROGRAMA EN PANTALLA
VISUALIZACIN DE LA EJECUCIN DE UN PROGRAMA
OBJETIVOS
MATERIAL REQUERIDO.
Lo que queremos conseguir es que en esa pantalla aparezca un dibujo o una foto que
represente un LED encendido cuando se encienda el LED, y uno apagado cuando est
apagado. Para conseguirlo usaremos los Disfraces.
Lo primero que haremos ser ir a la pestaa Disfraces. Ah podemos ver que el nico que
hay es un dibujo de una placa Arduino que viene por defecto. Para dibujar un disfraz nuevo
haremos click en el botn Pintar.
Llegaremos a una pantalla muy semejante al programa Paint de Windows. Con ella vamos
a dibujar un crculo rojo que representar nuestro diodo LED encendido:
Pulsamos el botn que tiene forma de crculo y seleccionamos el crculo vaco que aparece
debajo.
Pulsamos en el botn del cubo, seleccionamos el color rojo y rellenamos el crculo.
Damos a aceptar.
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 botn Copiar que hay en la figura led_on que hemos creado. Se nos crear
una nueva figura idntica.
Le damos a Editar en la nueva figura que hemos creado y rellenamos el crculo de gris.
Cambiamos el nombre de la figura por led_off..
Si en vez de dibujarlos prefers usar una imagen que tengis guardado en el ordenador o
alguna de las que vienen predefinidas en S4A, bien sea un dibujo o una foto, podis utilizar
el botn de Importar en vez de Pintar.
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. Tambin valdra
colocarlo justo encima.
Recordad que las instrucciones se llevan a cabo de forma secuencial, una inmediatamente
detrs de otra, mientras no le indiquemos lo contrario.
Seleccionaremos led_on en el bloque de cambiar disfraz a despus de encenderlo, y
led_off despus de apagarlo.
Esta vez para que el programa espere vamos a usar el bloque de Apariencia pensar
mmm por 2 segundos. Tambin podemos cambiar el tiempo que queremos que espere y
el mensaje que queremos que se vea mientras espera.
Ya slo 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.
Podis descargaros el programa completo desde aqu: Led en pantalla.
RESUMEN DE LA SESIN
A dibujar disfraces.
Incluir los disfraces en nuestro programa.
Visualizar en la pantalla de nuestro PC el estado de nuestro programa.
CIRCUITO CON TRES LEDS:
SEMFORO
Algoritmos en scratch
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
En la sesin anterior vimos cmo conectar correctamente un LED. Ahora vamos a complicar
un poco el circuito conectando tres diodos LED que se encendern y apagarn para construir
nuestro propio semforo.
Si hemos entendido el circuito con un slo LED es fcil entender tambin este circuito. El
esquema electrnico sera el siguiente:
Hemos conectado cada uno de los diodos LED a diferentes salidas digitales para poder
gobernarlos de forma independiente.
Slo necesitamos una resistencia porque est en serie con los tres diodos. La corriente que
circule por cualquiera de ellos lo har tambin 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 sera el siguiente:
En general, se considera buena costumbre (la recomendamos), montar los circuitos que
veamos a partir del esquema electrnico del mismo, ms que a partir del diagrama de
conexiones de la protoboard.
La razn es que con el esquema, la comprensin del circuito es completa y se evita la
tentacin de copiar la prctica sin necesidad de entenderla.
Adems, el diagrama electrnico del circuito es su completa descripcin y suele resultar ms
sencillo comprender la funcin del mismo. En cambio a medida que los circuitos se hacen
ms complejos, comprender su funcin desde un esquema de protoboard puede
complicarse mucho, y peor an, llevar a una interpretacin errnea.
Un semforo funciona de forma que se encienden primero el rojo, luego el verde, y por ltimo
el amarillo. Despus volvera a empezar por el rojo.
Para programar nuestro semforo no necesitamos ningn 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 prctica
anterior, ya que queremos que el semforo funcione continuamente mientras est pulsada
la bandera verde.
Lo primero que queremos hacer es que se encienda el LED rojo durante 3 segundos y
despus 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 despus de apagar.
Hacemos los mismo para el LED verde (pin digital 10) y para el amarillo (pin digital 11), con
la excepcin de que el amarillo solo queremos que este encendido 1 segundo.
Si damos a la bandera verde para ejecutar el programa, veremos cmo funciona nuestro
propio semforo en la placa Arduino.
Al ejecutar el programa veremos cmo funciona nuestro programa del semforo, 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 semforo de forma que le d un poco ms
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 pestaa de Disfraces de los objetos.
En este caso en vez de dibujar nosotros un fondo, vamos a utilizar una imagen que ya est
creada dndole al botn 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 vas de tren. El problema es que el semforo es demasiado grande. Por
suerte, con los iconos que hay encima del escenario podemos agrandar, reducir, borrar y
duplicar objetos. Si pasamos el ratn por encima nos mostrar para que sirve cada uno.
Reducimos el semforo 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.
Una variante de este programa, usando el mismo circuito, sera hacer un efecto de ola en el
que las luces subieran dejando encendidos los LEDs previos hasta alcanzar el mximo y
ahora descender apagando los LEDs superiores hasta apagarlos todos. Os recomiendo
intentar resolver el problema como desafo, antes de mirar solucin.
RESUMEN DE LA SESIN
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED.
Un pulsador.
Con frecuencia en electrnica necesitamos saber si una luz est encendida o apagada, si
alguien ha pulsado un botn o si una puerta ha quedado abierta o est cerrada.
A este tipo de seales 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:
Este circuito es un poco ms 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 travs 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 cmo en
ocasiones los valores en la entrada fluctan. Para evitarlo podemos conectar una
resistencia PULLDOWN o PULLUP. Una resistencia de PULLDOWN lo que hace es
garantizar que cuando el botn no est pulsado, se lea siempre LOW, es decir, fija la tensin
a 0V. Por el contrario, una resistencia de PULLUP garantiza que el valor ledo 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 travs 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.
El montaje en la protoboard sera el siguiente:
En este esquema hemos seguido la prctica habitual de usar cables negros para conectar
a Ground y cables rojos para conectar a HIGH (5V).
Hemos utilizado cable naranja para la entrada digital y cable verde para la salida, con la
intencin diferenciarlas fcilmente.
El pulsador S1 tiene cuatro pines (el elemento que est sobre la resistencia). Esto es porque
cada entrada del interruptor tiene dos pines conectados. En nuestro circuito simplemente
hemos ignorado los pines secundarios, pero podis utilizarlos igualmente para la conexin.
APRENDIENDO A LEER EL PULSADOR
Si se cumple la condicin que le pongamos dentro del espacio en forma de hexgono (el
hueco recuadrado en rojo), el programa ejecutar los bloques que estn 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 estn dentro de si y ejecutar los
bloques que estn dentro de si no hasta el final.
Lo primero que haremos ser crear la condicin. Para ello utilizaremos los bloques de la
categora Operadores. Como en este caso lo que queremos es crear una condicin que
compruebe el valor de una seal digital usaremos el bloque de Operadores = . Lo
seleccionamos y lo arrastramos hasta el hueco en forma de hexgono.
Para terminar de crear la condicin 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 categora Movimiento.
Aunque en este bloque parece que lo que comparamos es si est presionado, eso
depender del circuito. Sera mejor que lo interpretramos simplemente como valor sensor
digital ; y ver qu valor realmente est recibiendo esa entrada digital.
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.
Pasndolo a bloques nos quedara la siguiente estructura:
Podis descargar el programa completo desde aqu: Pulsador. Ya slo 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 analgicas como digitales. En este caso estamos utilizando la entrada
digital 2.
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED.
Un pulsador.
Dos resistencias de 330 Ohmios.
El esquema y el montaje son los mismos que los de los del programa del pulsador de la
sesin 6. La diferencia es que en esta ocasin utilizaremos el pulsador como un interruptor,
de forma que una pulsacin 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 despus ya se ejecute el resto de
forma cclica 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 slo se ejecuta slo
una vez y al iniciarse el programa.
UTILIZACIN 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 cul 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 categora 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.
Recordad que una salida digital es un valor booleano, slo puede tomar dos valores, por
eso nuestra variable tambin ser booleana y tomar slo dos valores, true o false.
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 slo 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 condicin, 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 conec-
tado a la salida digital 10, as que cada vez que lo encendamos o apaguemos, guardaremos
su valor en la variable.
Si en este punto probsemos 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
rcontinuamente.
Esto se debe a que S4A enva las se comunica con nuestro para enviar y recibir seales
cada 75ms, o sea ms de 10 veces por segundo; lo que significa que si tardamos ms que
ese tiempo en soltarlo, habr ledo varias veces el estado del pulsador y cada vez que lo lea
lo encender o lo apagar.
La solucin para esto es muy sencilla. Simplemente le diremos que despus 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.
OBJETIVOS
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED
Para esta sesin vamos a utilizar el mismo circuito que para el blinking LED. Slo
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 fsicamente, adems 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 ms claramente en las sesiones 4 y 5, en las que
mostrbamos los disfraces de los objetos en el escenario.
En las otras sesiones no hemos necesitado crear ms objetos porque slo necesitbamos
representar uno en el escenario, un LED o un semforo. 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
cuntos 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 sesin 4, con los dos disfraces led_off y led_on.
Despus 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 ms limpio y ordenado.
El orden y la limpieza son unas buenas costumbres que deberamos mantener a lo largo de
todas las sesiones.
Si ms tarde empezamos a programar con cdigo en vez de bloques, ser an ms impor-
tante.
En el escenario habr cambiado el objeto Arduino1 por el objeto Led que hemos creado.
COMO CREAR EL PULSADOR VIRTUAL
Vamos a hacer un objeto nuevo para simular un pulsador y utilizarlo como un interruptor,
de la misma forma que hicimos en la sesin 7 con uno fsico.
Para ello en el listado de objetos daremos a al icono Pintar un objeto nuevo.
Automticamente nos abrir el editor grfico 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 posicin 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 pestaa Programas.
Lo que queremos es que al hacer click en el pulsador en el escenario, enve una seal 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 enve una seal a los dems objetos utilizaremos el
bloque enviar a todos.
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 sesin 7, pero se ejecutar cada vez que reciba la
seal on del pulsador que hemos creado. Este bloque sustituir a la condicin en la que
comprobbamos si el pulsador estaba presionado de la sesin 7.
Necesitaremos crear una variable led igual para almacenar el estado del LED, que si lo
hemos conectado igual que en la sesin 3, estar conectado al pin digital 13.
Crearemos una condicin si / no de la misma manera que hicimos en la sesin 7.
En este caso incluiremos los bloques de Apariencia para cambiar los disfraces del ob-
jeto 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
fsicamente en la protoboard.
Podis descargar el programa completo desde aqu: Pulsador Virtual.
RESUMEN DE LA SESIN
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED.
ANALGICO Y DIGITAL
Todas las seales que hemos manejado hasta ahora, tanto de entrada como de salida, han
sido digitales. Como ya sabemos, este tipo de seales solo pueden tomar dos valores,
HIGH o LOW, 0 o 1.
Hasta ahora hemos utilizado este tipo de seales 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
lmites. 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 seales
analgicas.
En esta sesin utilizaremos una salida analgica para controlar la intensidad del brillo de
un LED.
En realidad, las placas Arduino (excepto la Arduino Due) carecen de salidas analgicas
puras, pero utilizan un truco para conseguir que una salida digital se comporte como una
analgica.
No vamos a entrar a explicarlo, pero si os interesa se llama Pulse Width Modulation, PWM.
Podis buscarlo en la sesin equivalente de salidas analgicas del curso de Arduino de esta
misma pgina.
Es importante saber esto para que ahora no se nos haga raro saber que las salidas
analgicas de Arduino en S4A corresponden a los pines digitales 5, 6 y 9.
Las salidas analgicas de Arduino UNO pueden tomar valores entre 0 y 255, y en funcin
de ese valor envan una seal cuyo valor estar entre 0V y 5V.
Si para algn proyecto necesitamos ms salidas digitales que las tres que conocemos, po-
demos usar las salidas analgicas, utilizando el valor 0 para LOW y el 255 para HIGH.
El circuito electrnico es el mismo que el del blinking LED de la sesin 3, pero en este caso
conectaremos el LED a una de las salidas analgicas. En este caso hemos elegido la 6.
Para asignar un valor a las salidas analgicas utilizaremos el bloque analgico valor
de la categora Movimientos. Seleccionaremos la salida analgica 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 funcin 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 analgica todos los valores desde 0 a 255 y despus 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 incrementndola de 1 en
1 hasta 255, para despus ir disminuyndola tambin 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 analgica 6.
Ahora tendremos que conseguir hacer una estructura que sume 1 a la variable y se lo asigne
a la salida analgica. Como queremos que llegue hasta 255, tendremos que hacer que se
repita 255 veces.
Para repetir una accin un nmero 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 repe-
tira el valor 0 y slo llegara 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 mximo y luego va apagndose poco a poco una sola vez. Si queremos que
haga esto continuamente slo 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 analgica 6, en la tabla de resumen de valores del escenario.
RESUMEN DE LA SESIN
OBJETIVOS
o Profundizar en el uso de los pines analgicaos.
o Conocer el funcionamiento de los LEDs RGB.
o Aprender a generar valores aleatorios.
MATERIAL REQUERIDO.
Una Protoboard.
Hasta ahora los diodos LED que hemos usado tenan un color determinado. Habitualmente
los ms fciles de encontrar en electrnica son los de color rojo, pero podemos encontrarlos
de muchos ms colores.
Sin embargo, imaginad que necesitamos que un LED vare de color en funcin de la
temperatura que haya en una sala; que est azul cuando haga fro, vaya cambiando hacia
amarillo para una temperatura normal y llegue al rojo si se sobrepasa un determinado valor.
Podramos poner varios LEDS de diferentes colores, pero lo ms sencillo sera recurrir a
un diodo RGB. Este tipo de diodos tienen en un mismo encapsulado un LED de cada uno
de los colores bsicos, rojo, verde y azul (Red, Green, Blue), de ah su nombre, y comparten
un ctodo comn (Ground).
La conexin de este tipo de LED se realiza mediante cuatro pines, uno por cada color y otro
para GND.
En funcin del valor de tensin que reciba cada pin R, G, B, conseguiremos un color dife-
rente.
A partir de estos tres colores bsicos se puede conseguir cualquier otro color.
No intentis hacer esto pintando en un folio, porque slo funciona con la luz.
ESQUEMA ELECTRNICO
Si tenis un diodo RGB con montura Keyes, como el que viene en el kit de esta pgina, no
tendris problemas ya que cada pin viene convenientemente identificado.
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 analgicas conectadas al RGB para comprobar que est
bien conectado.
Vamos a hacer que se ilumine rojo, despus verde y despus azul, manteniendo cada color
2 segundos. Para conseguir cada unos de los colores pondremos su pin correspondiente a
255 y los dems 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 opcin 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 analgicas, conseguiremos que nuestro LED
RGB se ilumine en un tono rosa.
GENERANDO COLORES ALEATORIOS
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
.
RESUMEN DE LA SESIN
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED.
Un potencimetro de 10K.
Una resistencia de 330 Ohmios.
LOS POTENCIMETROS
Los potencimetros son resistencias que tienen un mecanismo para variar su valor. En
este caso nuestro potencimetro puede tomar valores de 0 a 10k.
Hay muchos tipos de potencimetros, pero todos ellos tienen 3 pines en fila.
Los de los extremos se comportan como una resistencia con el valor mximo del potenci-
metro.
El pin central nos permite tomar valores de resistencia en funcin del ajuste que le hagamos.
Al ser resistencias, no tienen polaridad, da igual cul de sus pines de los extremos usemos
como positivo y cul como negativo.
Para comprender el funcionamiento del potencimetro vamos a montar un circuito
compuesto por el potencimetro, un LED y una resistencia de la siguiente forma:
Si el potencimetro est al valor mximo, la resistencia en la rama del LED ser muy grande
y no se iluminar.
Si la resistencia del potencimetro est ajustada a 0, el LED se iluminar al mximo. Si no
tuvisemos conectada la otra resistencia de limitacin al LED, lo quemaramos.
Para ajustes de valores intermedios en la resistencia del potencimetro, 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 tensin, el montaje en la protoboard quedara
de la siguiente manera:
Si vamos ajustando el potencimetro veremos cmo vara la intensidad del brillo del LED.
Vamos a realizar un montaje en el que leeremos el valor a la salida del potencimetro con
la entrada analgica A0.
Vamos a utilizar bloques de Movimientos que no hemos usado hasta ahora, relacionados
precisamente con la posicin, la direccin y la velocidad de los objetos en el escenario. Son
los que estn al final de la lista de bloques de movimiento y vienen separados de los dems
por una pequea raya.
Para seleccionar las coordenadas para la posicin de un objeto utilizaremos los bloques
de Movimientos fijar x a y fijar y a .
Como en este caso la posicin inicial en X del objeto viene dada por el ajuste inicial del
potencimetro, al iniciar el programa slo fijaremos la posicin 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 grfico 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 posicin en X al valor de la entrada analgica a la que est
conectado el potencimetro, 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 potencimetro veremos cmo se
mueve nuestro objeto, en mi caso como vuela la bruja. Pero todava hay varios defectos que
tendremos que corregir:
Como el valor mnimo del potencimetro es 0V, la posicin mnima en el eje X a la que
podremos mover el objeto ser 0, o sea que slo lo podemos mover por la mitad derecha o
parte positiva del eje X de la pantalla.
La mayora del giro del potencimetro no tiene ningn efecto. Si os fijis en los valores de la
entrada analgica 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 potencimetro el objeto se mueve en la direccin contraria a la que os resulta
ms natural, podis intercambiar las conexiones de 5V y GND de los pines del potencimetro
y la direccin 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 analgica A0. De esta forma cuando la resistencia del potencimetro este
al mximo, la tensin 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 potencimetro para el movimiento lo que tenemos es que
calcular la relacin que hay entre los valores que pueden tomar la entrada analgica, 1024,
y el eje X del escenario, 480.
Lo que quiere decir esto es que la entrada analgica puede tomar 2,13 veces ms valores
que el eje X. Por lo tanto, lo que tenemos que hacer es dividir la entrada analgica entre
2,13 y as quedar tambin con valores entre 0 y 480.
Para hacer estas operaciones dentro de nuestro programa utilizaremos los bloques
de Operadores / y .
Aunque en una ecuacin siempre se ejecutan antes las multiplicaciones y divisiones, y des-
pus las sumas y restas; en S4A se ejecutan primero las operaciones que estn dentro
de un mismo bloque.
Podemos elegir ocultar o mostrar la tabla resumen de valores para ver mejor el escenario
haciendo click con el botn derecho en el objeto en la lista de objetos o en la tabla de resu-
men de valores.
Si queremos visualizar nicamente el valor de de algunas de las entradas, podemos selec-
cionarlas y marcarlas en el listado de bloques para que aparezcan en el escenario.
Podemos hacer ms pequeo el escenario o verlo a pantalla completa utilizando los boto-
nes en la parte superior izquierda del escenario.
Para seguir practicando, os recomiendo que hagis lo mismo pero moviendo el objeto
verticalmente. Si tenis dos potencimetros, podis probar a moverlo en las dos direcciones
en un slo programa.
Os dejo los programas por si se os resiste y necesitis una pequea ayuda.
RESUMEN DE LA SESIN
OBJETIVOS
MATERIAL REQUERIDO.
Una Protoboard.
Un potencimetro de 10K
Hace mucho, mucho tiempo (1972-1976), en una galaxia no muy lejana, los nios y los no
tan nios se divertan con la primera generacin 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.
Tenan uno o varios juegos grabados en la memoria y no podas comprar ms juegos,
porque no tenan ningn soporte para ello. Pero hubo un juego que sobresali por encima
de todos, el Pong, una especie de tenis muy simplificado. No haba un sistema de aquella
primera generacin que no incluyera un juego tipo Pong.
Cuando en la navidad de 1975 Atari comercializ su propia versin del Pong, se convirti en
un xito inmediato. Consista bsicamente en una carcasa con conexin a la televisin y dos
ruedas como controles. Ms tarde salieron versiones que incluan hasta 16 variaciones de
este juego (que eran prcticamente lo mismo) e infinidad de consolas clnicas.
Lo que vamos a hacer en esta sesin es utilizar lo que hemos aprendido para hacer nuestra
propia versin de Pong con Arduino para un jugador y de paso aprender unas cuantas
cosas por el camino. En la siguiente sesin lo haremos para dos jugadores.
Teniendo en cuenta que en su momento costaba unos 100$ (que ahora equivaldran a casi
400$, lo mismo que una consola de ltima generacin), supongo que si le hubieses dicho a
alguien en aquella poca que un nio podra fabricar su propio Pong en casa como vamos
a hacer nosotros, te hubiera mirado como a un marciano.
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 propsito os recomiendo borrar el disfraz donde est dibujada la placa Ar-
duino.
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 VENCERS
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.
En este mismo programa (funcin) vamos tambin a darle a la pelota la direccin inicial y
la velocidad a la que se mover.
Para darle la direccin inicial vamos a utilizar el bloque de Movimientos apuntar en
direccin. Si desplegamos las opciones de ese bloque veremos a que direccin
corresponden los valores.
Tambin podemos indicar la direccin con valores entre 180 y 360 en vez de utilizar valores
negativos.
Como queremos que vaya hacia abajo en una direccin aleatoria que no sea muy prxima
a la horizontal, le daremos un valor al azar entre 120 y 240.
En esta misma funcin 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 funcin haremos que la pelota rebote si toca la barra. Los bloques que se
utilizan para que interacten los objetos en el escenario estn en la categora Sensores.
Comenzaremos la funcin con el bloque de control de la bandera verde y el bloque por
siempre si .
Como condicin 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 aadiremos un
poco de aleatoriedad para evitar quedarnos atrapados en situaciones sin fin y aadirle un
poco de dificultad al juego.
Para calcular el rebote utilizaremos el bloque direccin, que es una variable que guarda el
valor de la direccin de movimiento del objeto, en este caso la pelota.
Para que acte como una pared, la direccin al rebotar tiene que ser 180 (vertical hacia
abajo) menos la direccin que llevaba antes.
Una vez haya cambiado de direccin, haremos que se mueva 4 pasos una nica vez, para
evitar que detecte varios toques con la barra en vez de uno slo.
Con el bloque reiniciar cronmetro lo pondremos a 0 cada vez que iniciemos el programa.
Creamos una variable lmite a la que le asignaremos el valor 10.
Tambin podramos incluir estos bloques en la funcin en la que fijamos las condiciones
iniciales.
Haremos que si el valor del cronmetro es mayor que lmite le sume dos a la
variable velocidad y le sume 10 al valor del lmite para que vuelva a subir la velocidad diez
segundos despus.
Ya slo nos queda programar que cuando perdamos se nos muestre en pantalla cunto
tiempo hemos aguantado.
En la funcin en la que detenemos los programas, haremos que antes pare la pelota y nos
muestre el valor del cronmetro. Utilizaremos el bloque de Apariencia decir por
segundos, le asignamos el valor del cronmetro y hacemos que lo muestre durante 5
segundos.
De esta forma la programacin del objeto Bola nos quedara as.
Podis organizar los programas como mejor os parezca, no tiene por qu ser de esta misma
manera. Si os resulta ms sencillo, podis construirlo en un nico programa de esta forma.
Cuando vayis a jugar, recordad que podis ponerlo a pantalla completa, quitar la tabla de
resumen de valores para que no os moleste y mostrar las variables que queris, como por
ejemplo la velocidad de la bola y el cronmetro, para ver qu tal va la partida.
RESUMEN DE LA SESIN
OBJETIVOS
MATERIAL REQUERIDO.
Una Protoboard.
PLANTEAMIENTO
Como ya comentamos, Atari Pong supuso una revolucin en la historia de los videojuegos.
Dos funciones novedosas que inclua fueron:
Tena sonido.
Llevaba la cuenta de la partida. En otras plataformas haba que apuntar los puntos en un
papel.
En esta sesin vamos a hacer un Pong para dos jugadores, y a incluir esas dos
funcionalidades. Si estis utilizando estas sesiones en una clase de tecnologa de algn
colegio, podis poneros por parejas para hacerla, y de paso ver quin gana echando una
partida.
El montaje ser el mismo que en la sesin 12, pero aadiendo un segundo potencimetro.
Si no tenis dos potencimetros vamos a explicar la manera de manejar una de las barras
con el ratn del ordenador.
Vamos a reutilizar parte del programa de la sesin anterior, pero cambiando y aadiendo
algunas cosas. Empezaremos modificando la barra que ya tenemos y creando una segunda
barra.
Para aprovechar que el escenario es ms 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 sesin
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 analgicas como la barrra,
necesitaremos crear un objeto Arduino.
Los objetos Arduino proporcionan bloques para las funcionalidades bsicas del microcon-
trolador, escrituras y lecturas digitales y analgicas, y otras funcionalidades de alto nivel.
Tambin encontraremos bloques para tratar con motores estndar y servomotores de rota-
cin continua (los utilizaremos en sus respectivas sesiones ms 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 elegimos crearlo nos saldr un cuadro de dilogo como este:
Si quisiramos utilizar una segunda placa Arduino para controlar el objeto, seleccionara-
mos Nueva conexin.
Como vamos a usar la misma placa, seleccionamos Utilizar la conexin del objeto Barra.
Como en este caso queremos hacer un objeto igual que la barra, podramos simplemente
darle con el botn derecho del ratn 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. Tambin dibujaremos dos lneas de colores diferentes detrs de las
barras igual que en la sesin anterior.
Si no tenemos dos potencimetros, podemos controlar una de las barras con el ratn, con
el bloque de Sensores y del ratn.
EXPORTAR E IMPORTAR OBJETOS
Lo primero que haremos ser modificar la posicin inicial de la pelota y la direccin inicial
del movimiento.
Haremos una funcin igual que la que detectaba si la pelota tocaba el color rojo, pero
tocando el color que est detrs de la otra barra, en este caso azul, y les quitaremos a ambas
los bloques que mostraban el tiempo y detenan los programas.
Tambin 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 direccin a la
barra.
Ya slo nos queda hacer que si uno de los jugadores llega a 3 puntos, acabe la partida y
muestre quien es el ganador.
En S4A los sonidos se crean y se aaden al programa de forma muy similar a los disfraces.
Seleccionamos el objeto al que queremos aadirle sonido, en este caso la bola, y damos a
la pestaa Sonidos. Funcionan de forma parecida a los disfraces.
Podemos grabarlos o utilizar sonidos que tengamos guardados. Yo voy a utilizar tres sonidos
de los que vienen por defecto al instalar S4A, uno para el rebote con la barra, otro para
cuando se haga un punto y otro cuando alguien gane la partida.
Los bloques relacionados con los sonidos estn en la categora Sonido.
Recordad que podis 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 botn derecho en una variable en el escenario podemos elegir el
formato para mostrarlas.
RESUMEN DE LA SESIN
Existen diferentes tipos de objetos en S4A, y sabemos cmo crearlos en funcin de lo que
necesitemos.
Podemos reutilizar objetos en otros proyectos.
Sabemos cmo 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.
Hasta ahora hemos utilizado las salidas de nuestro Arduino para influir en el mundo exterior
gobernando nicamente diodos LED. Hemos podido hacerlo porque tiene capacidad
suficiente (potencia) para encenderlos.
Pero existen muchos otros componentes para los que la capacidad de nuestro Arduino es
insuficiente: motores de CC, accionar rels
Para solucionar este problema tenemos los transistores.
LOS TRANSISTORES
Un transistor es un dispositivo electrnico semiconductor que sirve para regular una seal
de salida en funcin de una seal de entrada. Si volvemos a la analoga con el flujo de agua,
sera 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 funcin de lo que necesitemos, adems de tener algunas
otras propiedades muy tiles.
Los transistores trabajan bsicamente de dos formas (aunque no son las nicas):
Corte: si no hay seal en B, la vlvula est cerrada y no hay flujo de agua entre C y E.
Activa: si hay seal en B, la vlvula se abrir la vlvula en funcin de su valor y permitir el
paso de parte de la corriente de agua de C a E.
Saturacin: si la seal en B es suficiente, la vlvula se abrir completamente y permitir
que toda la corriente de agua pase de C a E. Llegados a este punto, aunque le demos ms
seal en B no conseguiremos mayor corriente, e incluso podramos romper la vlvula.
Si habis entendido el ejemplo, slo tenis que cambiar corriente de agua por corriente
elctrica, y la vlvula por el transistor y comprenderis su funcionamiento.
Decimos que funciona como amplificador porque con una pequea 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 msica, hay uno o varios transistores amplificando una seal dbil
para que puedas escucharla.
En este montaje usaremos el transistor de uso general P2N2222, barato y fcil de encontrar.
Permite hasta 0,5 Amperios y 40V.
El esquema elctrico sera el siguiente:
Q1 es el transistor y M1 el motor de CC. La flecha en Q1 indica la direccin de la corriente.
Conectamos la base al pin 9 de nuestro Arduino.
El colector lo conectamos a la toma de 5V de la placa, pero podramos conectarlo a tomas
de 12V, 24V etc en funcin de la potencia del elemento que queramos controlar y usar un
transistor acorde.
Conectamos el positivo del motor al emisor, y el negativo a tierra.
La flecha del emisor indica la direccin de la corriente y que es un transistor NPN, si la flecha
tuviera la direccin contraria sera un transistor PNP, pero mejor lo dejamos de momento
Como podis ver, hemos colocado un diodo LED en paralelo al motor. Lo hemos hecho para
proteger al transistor (que es un poco ms caro que el diodo, aunque no mucho). No vamos
a entrar en detalles del por qu en este curso, suficiente con que os suene si tenis que
realizar ms montajes como este.
Una de las ventajas de usar un transistor es que se asla la parte de control del circuito
conectada a la base de la parte de la carga entre emisor y colector, haciendo muy difcil que
quememos nuestro Arduino.
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.
En la protoboard el circuito quedara de la siguiente forma:
Si a simple vista no notis la variacin de velocidad podis acercar el odo para escucharlo
o cogerlo con la mano para notar cmo cambia la vibracin.
Os recomiendo volver a realizar esta sesin pero utilizando un potencimetro para usar el
valor de una entrada analgica para variar la velocidad del motor. El montaje sera muy
sencillo combinando el de esta sesin y el de la sesin 11 de Entradas Analgicas.
El esquema electrnico es el siguiente:
No vamos a poner el esquema de montaje en la protoboard, porque ya hemos visto como
conectar todos los componentes del circuito en esta sesin y en la sesin 9. Adems ya va
siendo hora (si es que no lo hacis ya) de que hagis los montajes usando el esquema
electrnico, que es mucho ms claro, sobre todo a medida que se van complicando los
circuitos.
La programacin es muy sencilla, simplemente asignamos a la salida analgica el valor de
la entrada analgica a la que est conectado el potencimetro.
RESUMEN DE LA SESIN
RELS
Sistema de alimentacin ininterrumpida
OBJETIVOS
MATERIAL REQUERIDO.
Un pequeo Rel.
Independiente o con montura keyes
QU ES UN REL
Un rel es un interruptor controlado mediante una seal elctrica. Sera algo parecido a los
pulsadores que hemos utilizado, pero sustituyendo nuestro dedo por una seal elctrica.
De esta forma, mediante una seal elctrica 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 lmites en la corriente que puede aceptar un transistor, sin embargo se pueden dise-
ar rels para aguantar cualquier carga.
El rel asla completamente el circuito de control del de potencia, algo muy importante para
tensiones altas.
Utilizaremos rels cuando tengamos cargas de mucha potencia.
Utilizaremos un transistor para cargas pequeas y cuando la velocidad de conmutacin sea
importante.
Un transistor conmuta (pasa de corte a saturacin o viceversa) millones de veces ms r-
pido que un rel.
Aunque hay muchos tipos de rels, por regla general nuestro Arduino no tiene potencia
suficiente para activar un rel. Pero ya hemos visto cmo utilizar un transistor para
ayudarnos con este problema.
La conexin 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 conexin entre 2 y 3 es de tipo normalmente abierto. Est abierto cuando no hay co-
rriente en la bobina.
Podemos mirar el modelo en nuestro rel y buscarlo en internet para ver su descripcin.
Los pines de control (los de la bobina) suelen estar prximos.
Si no encontris informacin, para saber que pines son normalmente cerrado y normal-
mente abierto podemos hacer pruebas con LEDs.
Vamos a imaginarnos que la toma comn del rel (la 2 en el dibujo) est conectada a una
batera externa o un generador en vez de a la toma de 5V, o si queris podis conectarla
realmente a una batera 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 travs de la alimentacin auxiliar
al conmutar el rel.
Hemos colocado otro led de color verde para marcar cundo se est utilizando
la alimentacin 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
alimentacin auxiliar.
Cuando hay tensin 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 alimentacin auxiliar.
Si se fuese la corriente, las salidas 10 y 13 pasan a LOW y vemos cmo 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 batera o
generador auxiliar.
Si queris podis conectar un LED tambin a la salida normalmente abierta del rel, la 3, y
ver cmo va encendindose uno u otro LED en funcin de la posicin del rel.
Podis descargar el programa completo aqu: Rel Sai.
RESUMEN DE LA SESIN
Los rels son muy interesantes a la hora de controlar cargas de mucha potencia.
Sabemos diferenciar entre contactos normalmente abiertos y normalmente cerrados.
Cmo funciona un sistema bsico de alimentacin ininterrumpida.
SENSORES DE TEMPERATURA
Control de temperatura con un sensor y un ventilador
OBJETIVOS
MATERIAL REQUERIDO.
Mide la temperatura en C.
El TMP36 funciona entre -50 y 125C.
El LM35DZ funciona entre 0 y 100C.
Cuidado con confundirlos con un transistor, ya que el encapsulado es muy similar. Hay que
leer las letras que tienen grabadas para ver si es el sensor que buscamos (y suelen ser muy
pequeas).
Con la cara plana mirando hacia nosotros, la pata izquierda es 5V, la del centro la salida y
la de la derecha GND.
Cuidado si conectis la tensin al revs. Podis daros cuenta a tiempo antes de romperlo,
pero esperad un poco a que se enfre con el Arduino desconectado porque se calienta mu-
cho, suficiente para haceros una quemadura.
En el caso del TMP36, como empieza de -50C, habr que restarlo a la frmula anterior:
En mi caso voy a usar el LM35DZ; si vais a usar el TMP36 bastara con sustituir los bloques
dnde hacemos los clculos.
Recordad que S4A no ejecuta antes las multiplicaciones y divisiones y despus las sumas
y restas como haramos para resolver correctamente una ecuacin.
Se ejecutan los bloques de dentro hacia fuera, por eso hay que hacer la resta en el bloque
ms 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 operacin
anterior:
Si queris ver cmo cambia la temperatura, probad a agarrar el sensor entre los dedos para
subirla y soplad para bajarla.
Al pasar del lmite la temperatura, la salida digital 13 se pone a HIGH y el transistor pasa
a saturacin, haciendo que arranque el motor.
Si la temperatura es menor que el lmite, la salida digital 13 est a LOW y el transistor trabaja
en corte, de forma que el motor est apagado.
Podis descargar el programa completo aqu: Control de temperatura.
RESUMEN DE LA SESIN
Sabemos manejar dos tipos de sensores de temperatura, y todos los dems son muy pa-
recidos.
Hemos adecuado la salida del sensor en Voltios para transformarla en C, utilizando la in-
formacin del fabricante.
Hemos utilizador el sensor y un motor de continua con un ventilador para controlar la tem-
peratura de una habitacin.
SENSOR DE SONIDO
Montando un sistema de iluminacin activado por sonido
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Un diodo LED.
En esta sesin vamos a usar la salida digital D0 como seal para encender un LED, de
forma que cuando demos una palmada, un silbido o hagamos algn ruido un poco alto, se
encienda o se apague un LED.
Slo necesitamos conectar el pin D0 y los de alimentacin, tal como se ve en el diagrama
electrnico y el montaje en la protoboard:
Si hemos conectado bien el sensor, se debera iluminar el LED de alimentacin. El de salida
digital accionada puede o no estar encendido.
AJUSTANDO EL LMITE DE DISPARO
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 lmite enviar una seal que recogeremos en la entrada
digital 2.
RESUMEN DE LA SESIN
En esta sesin hemos aprendido varias cosas importantes:
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
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 ftbol.
Nada ms empezar borramos lo que haya dibujado previamente en el escenario utilizando
el bloque de Lpiz borrar y fijamos el grosor del trazo con el bloque fijar tamao del
lpiz a .
Recordad que las medias del escenario son 480360, siendo el centro (0,0), de ah los lmi-
tes de los valores aleatorios.
Subimos el lpiz para que al volver a poner el objeto en el centro del escenario no pinte nada
ms.
El bloque sellar deja una impresin del objeto en el punto del escenario en el que se en-
cuentre.
Al terminar de ejecutarse el programa tendremos algo parecido a esto en el escenario.
Podis descargar el programa aqu: Dibujo baln.
Vamos a utilizar lo que hemos aprendido en esta sesin y en la sesin 17 para dibujar un
grfico con el volumen de un sonido. Mediremos la seal que enva 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 funcin del volumen del sonido.
El esquema electrnico 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 ms pequeo posible y del color del que
dibujaremos el grfico.
Fijamos las condiciones iniciales:
Si en este momento ejecutamos el programa veremos cmo se pinta una lnea 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 analgica A0 y visualizarlo en el escenario como
hemos aprendido.
A mayor sensibilidad mayor ser el cambio en la seal que enva el sensor por A0 en funcin
del sonido.
Yo lo he ajustado en el mismo punto que en la sesin 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 iteracin, tenemos que fijar la posicin en y del objeto a la
posicin anterior (que fijamos a 0 en cada repeticin para que pinte siempre a respecto al
punto medio del eje Y) sumndole 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.
Slo nos queda hacer que cada vez que llegue al final del escenario, vuelva a empezar a
dibujar desde la izquierda. Para ello levamos el lpiz hasta la posicin inicial y borramos el
escenario para que empiece a dibujar de nuevo con el escenario en blanco.
Recordad que hay que subir el lpiz para llevarlo a la posicin de inicio sin que pinte y volver
a bajarlo para que empiece a pintar de nuevo.
Si ahora ejecutamos el programa veremos cmo al hablar, silbar, soplar o hacer cualquier
sonido en el micrfono, en el escenario se pinta la variacin en el volumen.
Yo le he acercado un altavoz pequeo con una cancin y el resultado ha sido este:
Podis descargar el programa completo aqu: Dibujar Sonido.
Si queris practicar un poco ms podis coger la sesin 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 SESIN
Podemos utilizar los bloques Lpiz para hacer dibujos en el escenario a partir del movi-
miento de un objeto.
Sabemos cmo funciona la salida analgica del sensor de sonido KY-038.
Hemos hecho un grfico a partir de los valores recogidos por una entrada analgica, po-
dramos hacer lo mismo con entradas o salidas analgicas o digitales.
LOS JOYSTICKS
Utilizar el joystick para mover objetos en el escenario
OBJETIVOS
.
o Presentar el joystick.
o Aprender a conectarlo correctamente.
o Utilizar el joystick para mover objetos en el escenario.
MATERIAL REQUERIDO.
Una Protoboard.
Un Joystick.
Un joystick est compuesto por un par de potencimetros (uno para el eje X y otro para el
Y) que transforma el movimiento en X e Y en una seal elctrica proporcional a su posicin,
y que si dejamos de hacer fuerza en l vuelve a suposicin central. Adems suelen incluir
un botn al presionarlos.
Tiene 5 pines: X, Y, 5V, GND y el botn (que se suele llamar SW, que viene de switch).
El montaje es muy sencillo teniendo en cuenta que ya hemos montado cada parte del joystick
por separado en otras sesiones, pero tenis que tener un poco de cuidado al conectar la
salida SW del botn.
Si conectis la salida SW directamente a una entrada digital de Arduino para leer su estado
no os funcionar correctamente.
En realidad el pin SW y el de GND se comportan al conectarlos como si fueses los pines de
un pulsador, como el que vimos en la sesin 6. Por lo tanto, tendremos que conectarle una
resistencia en PULL UP o PULL DOWN, o veremos como el valor que leamos no dejar de
fluctuar.
El diagrama elctrico con la resistencia en PULL UP sera el siguiente:
JOYSTICK ANALGICO
Una de las caractersticas del joystick es que podemos controlar la intensidad con que lo
movemos hacia cualquiera de las direcciones. Para conseguir aprovecharnos de ello vamos
a tener que modificar un poco la programacin.
Vamos a empezar ajustando la velocidad del movimiento en el eje X. Para que la velocidad
a la que se mueva vaya de 0 a 10, tanto a la derecha como a la izquierda, haremos lo
siguiente:
Restamos a la lectura actual el valor de la lectura con el joystick en reposo; en mi caso 500.
De esa forma la velocidad ser 0 cuando est en reposo.
Para que la velocidad mxima sea ms o menos 10, dividiremos el resultado de la operacin
anterior entre 50. De esta forma cuando en el eje X el valor sea mximo, o sea, 102-500=523;
la velocidad ser 523/50= 10,46.
Cuando el valor sea mnimo, 0-500=-500. Al dividirlo entre 50 -500/50=-10.
Si queris que la velocidad mxima sea mayor slo tenis que cambiar 50 por un nmero
ms pequeo, y ms grande para que sea menor.
Hacemos lo mismo con el eje Y, teniendo en cuenta que en reposo tenemos el valor 513, y
que queremos invertir el movimiento como en el apartado anterior. Le podis aadir tambin
la capacidad de hacer un sello del objeto.
RESUMEN DE LA SESIN
OBJETIVOS
.
MATERIAL REQUERIDO.
Una Protoboard.
Un Joystick.
Recordad que si habis hecho muy grande o muy pequeo el disfraz, podis ajustarle el
tamao 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 explosin para cuando les disparemos.
Le pondremos tambin 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 nmero de demonios que hayamos cazado cuando termine el
juego.
PROGRAMACIN DE LA MIRA
Incorporamos el bloque para que suene el lser cada vez que disparemos, tanto como si
damos con el disparo en un demonio como si no.
Aadimos 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.
Tambin necesitamos una funcin para contar el tiempo que va pasando y poder poner un
lmite 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 dems objetos de que ha termi-
nado el juego.
Antes de detener los programas esperamos 5 segundos para que nos d tiempo a mostrar
el nmero 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.
Hemos usado un nuevo bloque de Apariencia fijar tamao 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.
Tambin le damos una posicin aleatoria en el escenario (que no sea demasiado cerca de
los bordes), le ponemos el disfraz Demonio y le incorporamos el sonido.
En otra funcin hacemos que si llega un la seal disparo, que significa que hemos dado a
un demonio, cambie al disfraz de Explosin durante medio segundo y aparezca un nuevo
demonio en otra posicin y con otro tamao.
En la ltima funcin hacemos que si llega la seal Final de que se ha acabado el tiempo,
el demonio se posicione en el centro del escenario y muestre el nmero 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 SESIN
En esta sesin hemos aprendido varias cosas importantes:
OBJETIVOS
MATERIAL REQUERIDO.
Un Joystick.
Un potencimetro de 10K.
Un servo con sus horns, esas pequeas piezas de p
QU ES UN SERVOMOTOR
Los motores de corriente continua que hemos manejado hasta ahora giran continuamente a
una velocidad determinada, que depende de una seal de control.
Un servomotor, o simplemente servo, no gira de forma continua, sino que lo que hacemos
es controlar su posicin.
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 robticos, 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 tambin
los hay) y son de corriente continua.
Tienen 3 hilos de conexin, 5V (rojo), GND (negro o marrn) y Control (amarillo o blanco).
La seal de control se la daremos conectndolo a una de las salidas analgicas de nuestra
placa Arduino.
SERVO Y POTENCIMETRO
Aqu tendremos el mismo problema que ya nos ha surgido ms veces. Como la entrada
analgica tiene un rango de 0 a 1023 y el ngulo de 0 a 180, la mayora del movimiento del
potencimetro no tendr ningn efecto.
Para aprovechar todo el giro del potencimetro vamos a adaptar los valores de la entrada
analgica a los grados que puede girar el servo de la siguiente forma:
SERVO Y JOYSTICK
Lo que vamos a hacer con el joystick es sumar o restar grados al ngulo de la posicin del
servo en vez de calcular directamente el ngulo. En cristiano, al mover el joystick el servo
girar en una u otra direccin y mantendr esa posicin cuando lo soltemos.
El esquema elctrico y el montaje en la protoboard son muy sencillos, simplemente
cambiaremos el potencimetro 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 posicin inicial
del servo a, por ejemplo, 90.
De la misma forma que hicimos en la sesin 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 nmero de grados (mayor cuanto ms rpido queramos
que se mueva).
RESUMEN DE LA SESIN
OBJETIVOS
MATERIAL REQUERIDO.
Una Protoboard.
Cables de Protoboard.
Un diodo LED
Dos resistencia de 330 Ohmios.
LAS FOTORRESISTENCIAS
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 conexin en serie.
La diferencia de potencial (voltaje) entre Ay B en el caso de Arduino es normalmente
5V (A=5V y B=GND=0V).
Suguiendo con la analoga del agua, el flujo de corriente (intensidad) sera el mismo en todo
el recorrido y dependera de la resistencia total que se encontrase en el camino.
La intensidad que circula por ambas resistencias es la misma aunque tengan valores dife-
rentes.
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
sera:
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 utilizaramos para sustituir todas las resis-
tencias por una sola.
DIVISOR DE TENSIN
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 tensin cuando queramos leer con nuestro Arduino seales
que sean mayores que 5V. Si las conectramos directamente a nuestro Arduino quemara-
mos el chip.
Vamos a construir un circuito que encienda un LED cuando la luz baje de un cierto nivel.
Con un circuito semejante se podra, por ejemplo, controlar la iluminacin de una calle, un
parque o un jardn por la noche.
El esquema electrnico y el montaje en la protoboard son bastante sencillitos:
A la hora de programar, primero fijaros en la tabla de resumen de valores para saber la
lectura que tenemos en A0, que depender de la luz de la habitacin en la que estemos.
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 lmite en 800 para encenderse. Pero podis elegir el que mejor se adapte al
nivel que queris para poder probarlo. Simplemente poned un lmite ms alto que lo que
mida normalmente el sensor y tapadlo con la mano para que se encienda el LED.
Podis descargar el programa completo aqu: Fotorresistencia.
Y como casi siempre, os recomiendo seguir jugando con este montaje y hacer, por ejemplo,
un programa que cuando pase algn objeto por delante, encienda el LED durante el tiempo
que decidis, como si fuese una luz automtica.
RESUMEN DE LA SESIN
En esta sesin hemos aprendido varias cosas importantes:
Conocemos la diferencia entre montaje en serie y paralelo.
Hemos montado un divisor de tensin.
Sabemos cmo utilizar una fotoresistencia para medir los cambios de luz.
Hemos construido un sistema de iluminacin automtico.
SENSOR DE AGUA
Medidor de nivel de agua
OBJETIVOS
.Presentar los sensores de agua.
o Aprender a conectarlos y programarlos.
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 algn sitio, para conocer
el nivel de agua en un depsito (aunque este modelo tiene muy poco recorrido) o para saber
si est lloviendo.
Estos sensores de agua son sencillsimos de conectar y de programar, y adems baratos.
Tienen tres pines de conexin, dos para 5V y GND, y otro que conectaremos a una entrada
analgica de nuestro Arduino.
MONTAJE Y PROGRAMACIN
El montaje es muy facilito, y el orden de los pines del sensor viene marcado en el mismo:
Ponedle unos cables ms bien largos si vais a sumergirlo e algn sitio, para tenerlo alejado
del Arduino.
Cuidado con no sumergir los pines de conexin ni los cables, o har un cortocircuito.
La programacin tambin es muy facilita, simplemente encenderemos el LED de la propia
placa Arduino si el nivel de agua supera un determinado nivel.
Si sumergs el sensor en un vaso de agua (con mucho cuidado), podris 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 electrnica y el agua no hacen
buenas migas. As que no os recomiendo experimentar cosas muy complicadas con este
sensor.
RESUMEN DE LA SESIN
En esta sesin hemos aprendido varias cosas importantes:
Hemos presentado los sensores de agua.
Sabemos conectarlos y programarlos.
Hemos hecho un pequeo experimento de medidor de nivel de agua.
LOS BUZZERS O
ZUMBADORES
Montando una alarma sonora
OBJETIVOS
MATERIAL REQUERIDO
Un buzzer piezoelctrico.
Un Sensor de temperatura LM35DZ o similar.Comp
porque es fcil confundirlo con un transistor.
LOS BUZZERS
Los buzzers son unos componentes electrnicos compuestos por un cristal (como puede
ser el cuarzo) que vibra cuando reciben una seal elctrica.
Dependiendo del valor de esa seal vibrar con una determinada frecuencia, y si esa
frecuencia est dentro de las que podemos or, escucharemos como esa vibracin 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.
El esquema electrnico y el montaje son muy sencillos. Slo tenemos que conectar una pata
a un pin de salida analgico y la otra a GND. Lo nico que tenemos que tener en cuenta es
que los buzzers tienen polaridad (como los diodos LED), y hay que asegurarse de
conectarlo correctamente.
Si conectamos las patas al revs simplemente no sonar. Con darle la vuelta ya est arre-
glado.
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 lmite, el buzzer empiece a sonar de la forma que hemos dicho.
Si no recordis cmo se conecta o cmo funciona el sensor de temperatura podis ir a
la sesin 16 que est dedicada a este sensor.
Vamos a hacer que la alarma suene de forma intermitente, y ms rpido cada vez a medida
que se supere ms el lmite 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
instruccin 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 lmite y diferencia.
La programacin para que suene el buzzer sera muy parecida a la que utilizamos en esa
sesin del sensor de temperatura.
Ahora solo nos falta modificarlo para que suene cada vez con intermitencias ms rpidas a
medida que la temperatura vaya subiendo por encima del lmite. Para ello lo que hacemos
es que los tiempos de espera sean inversamente proporcionales a la diferencia de la
temperatura y el lmite.
Inversamente proporcional significa que, a medida que crezca la variable que estamos mi-
diendo (diferencia de temperatura) el valor de la que queremos controlar (el tiempo) dismi-
nuya.
RESUMEN DE LA SESIN
OBJETIVOS
MATERIAL REQUERIDO
Un potencimetro de 10K.
Un sensor de agua.
Un buzzer piezoelctrico.
UN VISTAZO ATRS
En esta sesin no vamos a introducir ningn 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 habitacin con domotizada.
Seguro que sabis lo que es esto de la domtica, pero si alguno anda despistado, consiste
en integrar la tecnologa en la construccin de una vivienda, de modo que
se automatizan muchos de los sistemas (luces, calefaccin, aire acondicionado) Vamos,
que se trata de que estemos bien a gustito esforzndonos lo menos posible. As que
tendremos que tener cuidado de no acabar como los humanos de la pelcula Wall-e.
ESQUEMA ELECTRNICO
Recordad que si tenis duda en alguna conexin podis ir a la sesin respectiva, que estar
explicado con mayor profundidad.
Al verlo as asusta un poco, pero si lo montis poquito a poco y sois un poco organizados,
confiamos en que no tendris mayores problemas.
PROGRAMACIN
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 programacin que lleva
asociada cada uno. Podramos utilizar un nico objeto Arduino, en el que programsemos
todo y crear los dems como objetos normales y utilizarlos slo para cambiar
los disfraces en el escenario. Pero creemos que es ms sencillo programar cada objeto
por separado, de forma que as lo haremos.
Como fondo para el escenario yo he elegido un dibujo de una habitacin de las que vienen
por defecto en S4A, donde tenis varias para elegir. Incluso podis usar una foto de la
vuestra.
Para la calefaccin usaremos un par de disfraces, encendida y apagada, y una
programacin muy sencilla en la que leeremos el valor del sensor de temperatura y
encenderemos un LED que simule la calefaccin si baja demasiado la temperatura.
El ventilador ser muy parecido, pero no necesitamos volver a leer la temperatura, siempre
que al crear la variable Temperatura lo hayamos hecho para todos los objetos. Vamos a
programarle tres modos de funcionamiento, apagado, a media potencia y a tope.
La lmpara la
encenderemos o apagaremos en funcin de la cantidad de luz que haya, as que tendremos
que montar un divisor de tensin con la fotorresistencia, y lo dems es coser y cantar.
La persiana la
haremos con un servo que manejaremos con un potencimetro, y le vamos a hacer cinco
disfraces para ver cmo va bajando y subiendo en el escenario.
Y con
el bebedero lo que haremos es utilizar un sensor de humedad para que nos avise un
zumbador si nuestra mascota se est quedando sin agua.
RESUMEN DE LA SESIN
OBJETIVOS
MATERIAL REQUERIDO.
Una Protoboard.
Cables de protoboard
Una resistencia.
Un display 7 segmentos de 1 dgito.
Si es la primera vez que escuchamos este nombre puede que suene a algo muy complicado,
pero seguramente todos los das os crucis 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 ms que eso, 7 LED
en forma de barra que nos sirven para representar todos los nmeros de un dgito. Adems
suelen incluir tambin un punto, y a veces 2.
La conexin de este tipo de componente electrnico puede ser diferente segn quien lo haya
fabricado, as que nos centraremos en el que incluye el Kit de Inicio que podis conseguir
en esta pgina. 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 ms arriba y siguiendo
en el sentido de las agujas del reloj.
Si tenis otro modelo, el principio de funcionamiento ser el mismo , y slo tendris que
buscar informacin acerca de cmo se conecta en la pgina del fabricante.
Lo importante es que sepis qu pin del display corresponde a cada segmento, y cul se
conecta a GND.
CONEXIN 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 direccin contraria a las agujas del reloj.
En esta figura podemos ver la distribucin de los pines y a qu segmento corresponde cada
uno, adems del punto y la conexin a GND (a travs de una resistencia para limitar la
intensidad, como hacemos siempre con los LED).
Ahora que ya tenemos todo bien conectado, vamos a utilizar el display 7 segmentos para
simular una cuenta atrs 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
ms sencillo posicionarlo despus 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 atrs utilizando el bloque de
control enviar a todos 9, que despus 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 atrs. Ser tan sencillo
como al recibir el mensaje respectivo de cada nmero, encender las salidas que sean
necesarias para representar el nmero en el display. Es importante tener en mente la
distribucin de los segmentos y cmo los hemos conectado a nuestro Arduino, o de lo
contrario nos costar mucho representar los nmeros correctamente.
Una vez que tengamos claro qu salidas debemos encender y cules apagar haremos que
se muestre durante un segundo y enviaremos el mensaje para mostrar el siguiente nmero:
Ahora nos queda aadir el lanzamiento del cohete, que ser tan sencillo como aadir 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
instruccin deslizar en segs a x: y: .
Podis descargar el programa completo aqu: Cuenta atrs. Y como casi siempre, os
recomendamos seguir jugando con estos displays, por ejemplo, podras aadirle un
pulsador y crear un dado digital, de forma que cada vez que lo pulsis muestre un nmero
aleatorio del 1 al 6.
RESUMEN DE LA SESIN
En esta sesin hemos aprendido varias cosas importantes:
OBJETIVOS
MATERIAL REQUERIDO.
INTRODUCCIN
Y como no podra ser de otra manera, existen unos mdulos que se conectan a nuestro
Arduino y que nos servirn para otorgarle la capacidad de comunicarse va Bluetooth con
otros dispositivos que tambin soporten esta tecnologa.
As que para conseguir nuestro propsito necesitamoss un PC con Bluetooth y un mdulo
Bluetooth para nuestro Arduino.
As que si conectamos el mdulo 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 mdulos Bluetooth para Arduino, y los ms utilizados son el HC-05 y el HC-06.
Recomendamos utilizar el HC-06 porque es el ms sencillo de conectar y de usar, y ser el
que utilicemos nosotros para realizar esta sesin.
El HC-06 tiene 4 pines, dos para la alimentacin 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 mdulo al Rx del Arduino, y el Tx del mdulo
al Rx del Arduino, de forma que lo que enve el mdulo Bluetooth lo reciba el Arduino y
viceversa. Pero de momento no conectis nada, ya explicaremos por qu.
Pero antes de poder utilizarlo de esta forma con el S4A, vamos a tener que cambiar la
configuracin que tiene predeterminada en el HC-06.
Para configurar el mdulo vamos a tener que volver a utilizar el IDE de Arduino, el entorno
de programacin que se utiliza normalmente para programar los Arduinos, y que utilizamos
en la primera sesin del curso de S4A para cargar el programa que nos permite usar S4A
con nuestros Arduino. Si por alguna razn no tenis descargado el IDE, aqu tenis el enlace
que explica cmo hacerlo.
Ahora tenis 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
contrasea del Bluetooth para que pongis la que vosotros queris, y configurar la velocidad
de comunicacin para que sea la misma que utiliza el S4A y puedan entenderse.
Descomprimir el archivo y ejecutad el programa. En el programa podis
cambiar PROMETEC y 5678 por el nombre y la contrasea que queris 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 tenis ms
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 tendris que desconectar el cable del ordenador y conectar el
mdulo Bluetooth HC-06 de la forma que hemos indicado anteriormente y que podis ver
en la siguiente imagen:
Y ahora s, ya podis volver a conectar el cable del ordenador. Cuando veis 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 acordis
cmo se haca o no tenis el archivo con el Firmware guardado, echad un ojo a esta
sesin en la que explicamos cmo hacerlo.
RESUMEN DE LA SESIN
OBJETIVOS
MATERIAL REQUERIDO.
Un Joystick.
Un soporte servo pan & tilt.
INTRODUCCIN Y MONTAJE
S segus este curso con regularidad, esta sesin no va a tener mucho misterios para
vosotros, porque no vamos a explicar nada que no sepamos. Y si no lo habis hecho (o las
tenis un poco olvidadas) os recomendamos que echis un ojo a estas sesiones, en las que
hablbamos de los joysticks, los servos y, por supuesto, de cmo montar el soporte
del brazo robtico de dos ejes:
Joystick.
Servos.
Montaje estructura brazo robtico.
Si ya habis montado la estructura sabris que para poder mover el brazo robtico 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 conexin sera el siguiente:
PROGRAMA DE CONTROL
El programa para controlarlo es muy sencillito. Simplemente crearemos dos variables en las
que guardaremos la posicin del servo, angulo X y angulo Y, que inicialmente
posicionaremos en 90, la posicin media de los servos.
RESUMEN DE LA SESIN
OBJETIVOS
MATERIAL REQUERIDO.
INTRODUCCIN
CONEXIN Y FUNCIONAMIENTO
Si el jumper del regulador est cerrado activaremos el regulador de tensin del L298N, y
en V lgico tendremos 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 mdulo, as que tendremos que meter una tensin de 5V por la conexin V l-
gico para que el mdulo funcione.
Cuidado! Si introducimos corriente por V lgico con el jumper de regulacin puesto podra-
mos daar el mdulo.
Adems el regulador slo funciona con tensiones hasta 12V en Vin, por encima de este
valor tendremos que quitar el jumper y alimentar la parte lgica del mdulo desde otra
fuente.
Las salidas para los motores A y B nos darn la energa para mover los motores. Tened en
cuenta la polaridad al conectarlos (el orden en el que conectamos los cables), para que
cuando ms tarde hagamos que se muevan adelante, funcionen como deberan. Si no fuera
as, no tendramos ms que invertir las conexiones.
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 salidasanalgicas de forma que le enviemos
un valor entre 0 y 255 que controle la velocidad de giro. Si tenemos los jumpers colocados,
los motores girarn a mxima velocidad.
El esquema de montaje que vamos a utilizar va a ser el siguiente:
PROGRAMACIN
Y e la parte principal del programa iremos llamando a cada funcin, haciendo que cada una
dure lo que queramos usando bloques esperar:
Podis descargar el programa completo aqu: l298n. Si al ejecutarlo resulta que los motores
se mueven en direcciones que no son las esperadas, podis intercambiar las conexiones
del motor en los bornes del L298N.
RESUMEN DE LA SESIN
o Hemos presentado el mdulo L298N que nos permite controlar motores de una cierta po-
tencia de una manera muy sencilla.
o Sabemos cmo conectarlo a nuestro Arduino y programarlo usando S4A.
o Hemos creado un programa para mover los motores en ambas direcciones y a diferen-
tes velocidades.