miércoles, 2 de diciembre de 2020

multiBot sigue líneas

Ahora vamos a programar nuestro robot para que sea capaz de seguir una línea negra sobre fondo blanco. Para ello es necesario utilizar dos sensores de infrarrojos.

En la imagen podemos ver las dos caras de uno de los sensores y las conexiones que hay que realizar con el shield multifunción


El funcionamiento de estos sensores es similar al de  ultrasonidos; tienen un emisor y un receptor, si la luz infrarroja emitida se refleja sobre una zona negra el receptor no la recibirá, por el contrario, si la luz se refleja sobre una zona blanca el receptor si la recibirá.  Disponen de dos pequeños diodos LED, uno de ellos se encenderá cuando detecte el color blanco y se apagará con el negro, el otro permanece encendido siempre que el sensor esté alimentado. Con un pequeño destornillador podemos ajustar la sensibilidad para que el color detectado sea el correcto.

En el vídeo se muestra su funcionamiento una vez que hemos cargado el programa adjunto:





Ejercicios propuestos:

1.- Realizar un programa que, además de seguir una línea negra, detecte la presencia de un obstáculo y se detenga hasta que sea retirado.


multiBot evita obstáculos ⇦                   ⇨ multiBot: control bluetooth


martes, 3 de noviembre de 2020

multiBot evita obstáculos

La inclusión de un sensor de ultrasonidos en nuestro robot móvil (disparo en el pin A5, pin 19, y eco en el pin 9) nos permite realizar programas en los que responda de diferentes maneras ante la presencia de obstáculos.

En el primer programa que presentamos, al detectar un objeto, gira a la derecha, se para y continúa avanzando:





En éste otro, girará al azar hacia la izquierda o la derecha:





Ejercicios propuestos:

1.- Ahora multiBot debe detenerse al detectar un obstáculo (se encenderá uno de los diodos LEDs) y no reanudar su marcha (apagando el LED) hasta que quitemos el objeto.


Robot móvil: multiBot                                   ⇨multiBot sigue líneas


domingo, 1 de noviembre de 2020

Robot móvil: multiBot

Vamos a construir un pequeño robot móvil utilizando la tarjeta Arduino y el shield multifunción. Para generar el movimiento utilizaremos dos micro servos de rotación continua, sg 90, conectados a los pines 5 y 6 del shield. También incluiremos un sensor de ultrasonidos (disparo en el pin A5 y eco en el pin 9), dos sensores de infrarrojos seguidores de línea negra y un módulo bluetooth 4.0 (AT-09 o HM-10). La alimentación la hemos realizado con una pila de 9 voltios, alojada dentro de un porta-pilas que dispone de interruptor y de un conector para unirlo al jack de la tarjeta Arduino. En las imágenes podéis ver un primer prototipo cuyo chasis se ha realizado utilizando una impresora 3D










En el enlace adjunto podéis descargar el archivo stl para realizar la impresión en 3D.

Si no se dispone de impresora, existen páginas web que la realizan y la envían en unos días, por ejemplo:

En las imágenes anteriores, las ruedas se han realizado con una impresora 3D, aunque también se pueden comprar directamente ruedas de plástico que se adaptan al micro servo:

Otra opción para construirlo es usar un trozo de madera y montar sobre ella todos los elementos. A continuación vemos una posible solución, hemos utilizado unos soportes para los micro servos y el sensor de ultrasonidos, el portapilas está sujeto con velcro a la parte posterior:





Este es el cableado completo:



Atención: El shield multifunción tiene dos pequeños puentes J1 y J2, hay que quitar el J1. Mientras no se utilice, es preferible no conectar el módulo bluetooth, ya que para subir los programas a Arduino deben quedar libres los pines 0 y 1. 

Para mover el robot tenemos los bloques siguientes:
En realidad, se podrían reducir a una única instrucción en la que se indiquen las velocidades de los dos micro servos, de -100 a 100. Poder controlar las velocidades es imprescindible, ya que tendremos que hacer pequeños ajustes, bien para asegurarnos que el robot marcha en línea recta o para cambiar la mayor o menor amplitud de los giros. Hay que tener en cuenta que los micro servos no son muy precisos y las velocidades izquierda y derecha no coincidirán, será necesario hacer varias pruebas para ajustarlas.

En el programa adjunto el vehículo se mueve siguiendo una trayectoria más o menos cuadrada:




Ejercicios propuestos:

1.- Jugar con las instrucciones anteriores para que el robot haga diferentes movimientos.




Sensor de ultrasonidos                                               multiBot evita Obstáculos


miércoles, 15 de abril de 2020

Sensor de ultrasonidos

Vamos a conectar un sensor de ultrasonidos que nos servirá para medir la distancia que lo separa de un objeto. En concreto se trata del HC-SR04. Consta de un emisor de ultrasonidos y un receptor al que llegan las ondas una vez reflejadas en el objeto, por el tiempo transcurrido se calcula la distancia a la que se encuentra.
Como vemos en la imagen tiene cuatro patillas: Vcc, Trigger (activación), Echo (eco) y Gnd. Con ayuda de unos cables dupont H-H unimos Vcc a 5v, Gnd a GND, Trigger a cualquiera de los cuatro pines disponibles y Echo al pin 5, 6 o 9 (necesita un pin PWM). En este caso se ha conectado Trigger al pin A5 (pin 19) y Echo al pin 9.



El siguiente bloque nos devuelve la distancia en centímetros a la que se encuentra el objeto en el que hayan rebotado los ultrasonidos: 

En el siguiente programa se muestra en el display el resultado de la medida realizada por el sensor, a intervalos de un segundo:




El próximo ejemplo va a mostrar la palabra "ALto" cuando detecte un persona a menos de 50 cm del sensor y, además, emitirá unos pitidos si la distancia es menor o igual a 25:



Ejercicios propuestos:

1.- Realizar una especie de sensor de aparcamiento de un coche, de manera que emita diferentes señales acústicas conforme se va acercando más a un objeto.


Conectar un servo. Parking                                      Robot móvil: multiBot

viernes, 3 de abril de 2020

Conectar un servo. Parking

El Shield multifunción deja libres algunos pines de Arduino, en concreto el 5, 6, 9 y A5. Además, en los tres primeros podemos conectar directamente un micro servo (tipo SG 90), sólo debemos tener cuidado en colocar el cable naranja donde está serigrafiado el número del pin.



Para trabajar con ellos disponemos del bloque "mueve Servo", hay que indicar el pin al que está conectado y el ángulo en el que debe situarse (entre 0 y 180 grados):

El programa adjunto mueve el micro servo de un extremo al otro, a intervalos de 45º:





Ahora vamos a mover el servo de 5 en 5 grados con dos pulsadores, uno para desplazarlo en un sentido y el otro para hacerlo en el contrario. Será necesario crear una variable (la llamaremos angulo) que almacene el ángulo en el que se encuentra el servo:



Ejercicios propuestos:


1.- Realizar un programa que nos permita controlar el funcionamiento de un aparcamiento. Podemos usar  micro servos para hacer las barreras de entrada y salida y controlarlos mediante los pulsadores. Uno de los LEDs se debe poner en rojo cuando el parking esté completo y el display debe mostrar, en todo momento, el numero de plazas que quedan libres.


Reloj. Cronómetro                                                           Sensor de ultrasonidos




martes, 31 de marzo de 2020

Reloj. Cronómetro

El siguiente programa implementa un reloj muy básico de horas y minutos. Para poder visualizarlas juntas en el display de cuatro dígitos, multiplicaremos las horas por cien y le sumaremos los minutos:
                 horas*100 + minutos
Ejemplo: 16 horas y 35 minutos
                  16*100   +   35  
                   1600      +   35 = 1635




Ahora vamos a hacer un cronómetro que mida las centésimas de segundo transcurridas desde que accionamos el pulsador 1 hasta que presionamos el pulsador 3 para detenerlo. 

También podríamos usar un único pulsador para iniciarlo y detenerlo. En ese caso, hay que modificar el valor de la variable "cronometro" cada vez que lo presionemos, si valía 0 la ponemos en 1 y si estaba en 1 la ponemos en 0:

En los programas anteriores hemos utilizado la instrucción "espera" para contar el tiempo, 60 segundos en el reloj y 0.01 segundos en el cronómetro. Esta instrucción detiene por completo el funcionamiento del programa; si el tiempo es pequeño, como en el cronómetro, puede que no genere mayores problemas, pero si es grande (en el reloj se detiene durante 1 minuto) impedirá que se pueda atender el funcionamiento de otros dispositivos, por ejemplo, unos pulsadores para que podamos ponerlo en hora en cualquier momento. Para evitar que el programa se mantenga sin hacer nada durante tanto tiempo podemos usar los bloques "temporizador" y "reiniciar temporizador" del apartado sensores.

"Temporizador" es una especie de variable en la que se va almacenando el tiempo transcurrido desde que se inicia el programa o desde que la reiniciamos. Utilizando estos bloques el programa del reloj quedaría de la siguiente manera:

De esta forma el programa no se detiene nunca y podríamos incluir la atención a otros dispositivos (ejercicio 2).


Ejercicios propuestos:

1.- Realizar un cronómetro similar al anterior en el que se visualicen los minutos y segundos transcurridos.

2.- Hacer un reloj que se pueda poner en hora con los pulsadores.




El potenciómetro                                                         ⇒  Conectar un servo. Parking




lunes, 30 de marzo de 2020

El potenciómetro.

Hasta el momento hemos trabajado con magnitudes digitales o binarias; es decir, que sólo pueden tener dos estados: 0-1, encendido-apagado, presionado-liberado, cierto-falso. El potenciómetro multivuelta que incluye el Shield suministra, al pin A0 de Arduino, un voltaje comprendido entre 0 y 5 voltios, que podemos modificar girando su cursor y pasar por todos los valores posibles. Se trata de una magnitud analógica que será digitalizada por Arduino y transformada en un número entero entre 0 y 1023.

Para utilizar el potenciómetro tenemos el bloque:
Nos devuelve un número entero comprendido entre 0 (0 voltios) y 1023 (5 voltios).

El siguiente programa muestra en el display el número enviado por el potenciómetro:




Ahora vamos a hacer que los diodos 2 y 3 permanezcan encendidos si la lectura del potenciómetro está comprendida entre 400 y 600, quedando apagados en caso contrario:





Ejercicios propuestos:

1.- Realizar un programa que encienda el LED 4 cuando la lectura del potenciómetro sea mayor de 400 y, además, el LED 3 si supera 500.

2.- Ahora tenemos que encender los LEDs 3 y 4 si la lectura está comprendida entre 500 y 600. Además, añadimos los LEDs 1 y 2 entre 600 y 700 y, finalmente, hacemos sonar el zumbador si se superan los 700.


Pulsadores (II). Variables                                                          ⇒  Reloj. Cronómetro




sábado, 21 de marzo de 2020

Pulsadores (II). Variables.

El bloque "pulsador PRESIONADO" detecta la activación del pulsador durante todo el tiempo que tenemos el dedo sobre él. Sin embargo, hay ocasiones en que sólo necesitamos detectar el primer momento en el que lo accionamos y no el resto del tiempo hasta su liberación, eso lo podemos hacer con la opción "pulsador  PULSADO". 

Vamos a encender y apagar un LED con un único pulsador de manera que, si está apagado, al pulsar se encienda y, si está encendido, se apague, para ello usaremos "pulsador PULSADO" y "led VOLTEADO":



En el siguiente programa iremos incrementando el número que se muestra en el display (inicialmente cero) cada vez que accionemos un pulsador, teniendo en cuenta que cuando sea mayor de 20 tenemos que volver a cero.

Para ello vamos a utilizar una variable, se trata de un "sitio" donde podemos guardar datos y acceder a ellos, o modificarlos, cuando deseemos. En la siguiente imagen se muestran los pasos para crearla:

Ahora dispondremos de unos bloques para dar un valor a la variable e ir modificándolo cuando deseemos. Hay que tener en cuenta que el bloque "cambia ....... por" es, en realidad, "incrementa ..... en"

En definitiva el programa es el siguiente:





Ejercicios propuestos:

1.- Modificar y ampliar el programa anterior para utilizar dos pulsadores, uno para incrementar (cambiar numero por 1) y otro para decrementar (cambiar numero por -1). El numero del display no debe ser mayor (>) que 20 ni menor (<) que 0.

2.- Ahora queremos ir encendiendo de uno en uno los diodos LEDs cada vez que accionemos un pulsador.

El display de 7 segmentos                                                 ⇒  El potenciómetro




miércoles, 18 de marzo de 2020

El display de 7 segmentos

Se trata de un display de cuatro dígitos en el que, principalmente, podemos visualizar números, aunque también podemos ver algunas letras y símbolos.

Para mostrar números directamente contamos con la instrucción:
Si queremos actuar sobre cada uno de los segmentos de manera individual tenemos que indicar el número del display (4,3,2,1) y un código binario que indica con ceros y unos los segmentos que deben estar encendidos (1) y apagados (0). En la figura adjunta podemos apreciar el nombre de los segmentos, su orden y los números binarios correspondientes a las letras de la palabra "hoLA". 

   a b c d e f g p
h  0 0 1 0 1 1 1 0
o  0 0 1 1 1 0 1 0
L  0 0 0 1 1 1 0 0
A  1 1 1 0 1 1 1 0

En definitiva, la instrucción es la siguiente:
Con estos otros bloques podemos controlar el punto de los visualizadores de manera independiente y apagar o encender todo el display:

En el siguiente programa se visualiza el número 5 durante 1 segundo y la palabra hola durante 2 segundos:


Ahora vamos a ir encendiendo y apagando de uno en uno los segmentos exteriores del display, dándole la vuelta completa:



Ejercicios propuestos:

1.- Escribir un programa que haga aparecer en el display los números del 0 al 5 a intervalos de un segundo.

2.- Utilizar las instrucciones "muestra código 7segmentos" y "espera" para hacer un movimiento de luces en el display.

Pulsadores. La instrucción si.                                    ⇒  Pulsadores(II). Variables




lunes, 16 de marzo de 2020

Pulsadores. La instrucción si

El shield multifunción dispone de tres pulsadores: S1, S2 y S3. Para usarlos tenemos que detectar si están presionados o liberados y, en función de ello, realizar una acción u otra, esto lo haremos con las siguientes instrucciones:

Con el siguiente programa encendemos el LED 1 al presionar el pulsador y lo apagamos al liberarlo:


Modificando ligeramente el programa anterior haremos que el LED se encienda al presionar el pulsador 1 y se apague al presionar el pulsador 2:




Ejercicios propuestos:

1.- Escribir un programa para que al presionar el pulsador 1 se encienda el LED 4, al presionar el pulsador 2 suene el  zumbador y al presionar el pulsador 3 se apague el LED y finalice el sonido.

2.- Ahora haremos que los diodos 1 y 2 se enciendan al mantener presionado el pulsador 1 y se apaguen al liberarlo. Además, los diodos 3 y 4 se encenderán al presionar el pulsador 2 y se apagarán al presionar el pulsador 3.


El zumbador                                                        ⇒  El display de 7 segmentos





domingo, 15 de marzo de 2020

El zumbador

Para controlar el zumbador que lleva incorporado el shield multifunción disponemos de tres instrucciones:

El programa adjunto hace que el zumbador emita las notas do, re y mi durante medio segundo cada una. Después permanece dos segundos en silencio:



Vamos a modificarlo para que suenen las mismas notas, pero dando unos pitidos cortos (de 0.1 segundos):





Ejercicios propuestos:

1.- Realizar un programa que haga parpadear un LED y, a la vez, emita dos pitidos cortos.

2.- Conseguir que suene la escala musical completa en el zumbador.

3.- Ampliar el programa del semáforo de la entrada anterior de manera que el zumbador emita unos pitidos cortos para avisar que el tiempo de paso de los peatones se está acabando.


Los diodos LEDs                                                 ⇒  Pulsadores. La instrucción si