icono mBlock centro




CURSO DE ARDUINO

con mBlock e IDE

Microlog+mBLock3+IDE3-8-9

PRÁCTICAS 3

DETECTORES, SERVOMOTORES Y CONTROL DE MOTORES


15. CNY70 - DETECTOR DE COLOR BLANCO


ORIGINAL


https://arduino.microlog.es/cny70-detector-de-obstaculo/
Material necesario:

1 Arduino UNO LOG 8431

1 Cable USB LOG 7509

1 Protoboard LOG 886

1 Optoacoplador CNY70 LOG 837

2 Resistencias de 220 Ohmios (rojo – rojo – marrón) LOG 748 220

1 Resistencia de 10K Ohmios (marrón – negro – naranja) LOG 748 10K

1 Diodo LED 5mm Verde LOG 722

7 Latiguillos board macho–macho LOG 7519


Circuito revisado:
El circuito de basa en el optoacoplador CNY70, formado por un diodo emisor de infrarrojos acoplado a un fototransistor que hace de receptor.
foto CNY70 patillaje
CNY70CNY70 3D
El circuito funciona de la forma siguiente:
  • El diodo emite constantemente una luz infrarroja (no es visible al ojo humano)
  • Si el receptor (fototransistor) recibe rayos reflejados, deja pasar la corriente (disminuye mucho su resistencia), de modo el valor que llega a la toma A5 de Arduino es de +5V aproximadamente.
  • Si el receptor NO recibe luz reflejada, no deja pasar la corriente (su resistencia se mantiene muy elevada), quedando la toma A5 de Arduino en un valor bajo, aproximadamente 0V.
  • Para que se reflejen los rayos infrarrojos, hay que situar un objeto de color blanco (o claro) a una distancia de entre 0 y 5mm.
CNY70 funcionamiento con 10K


Usando la configuración indicada arriba, las conexiones en el circuito CNY70 serían las siguientes:

Circuito CNY70 - 10KCNY70 conexiones 10K


Como las patillas A (Ánodo) y C (Colector) van conectadas al mismo punto (volyaje +5V) resulta más útil insertar el CNY70 en la Protoboard de forma inclinada, abriendo ligeramente sus patillas (¡con mucho cuidado!)

CNY70 patillas abiertasCNY70 colocada en PlacaCNY70 girado con placa+Patillas


El circuito completo, usando la entrada analógica A5 para detectar las señales recibidas en el fototransistor, quedaria así:

Detector de Obstáculo Claro
(pincha para verlo más grande)


Programa en mBlock:
Detector Color Blanco mBlock

Programa en IDE de Arduino:
Detector de Color Blanco IDE

Funcionamiento:
El circuito detecta obstáculos cercanos, preferiblemente de color blanco o un color claro:
  • Acerca diversos objetos con colores distintos y observa si se enciende el LED.
  • Con una resistencia de 10K prácticamente sólo detecta objetos de color blanco pegados al sensor. Es lo que se usa para detectar líneas blancas en los circuitos con robots seguidores de línea.
  • Si cambias la resistencia de 10K por otra mayor, podrás alejar más los objetos para que los detecte, aunque llegará un momento en que no se apague el LED en ningún caso.

RETOS:

15-B- CNY70 con luz alternante: Añade un LED de color Rojo:
  • El LED Verde se encenderá cuando se detecte un color Claro
  • y el Rojo cuando no se detecte, o el color sea oscuro.



16. MOVIENDO UN SERVOMOTOR


ORIGINAL


https://arduino.microlog.es/moviendo-un-servomotor/
Material necesario:

1 Arduino UNO LOG 8431

1 Cable USB LOG 7509

1 Miniservo 4,5V SG90 180º LOG 06

3 Latiguillos board macho–macho LOG 7519

Circuito revisado:
Existen distintos modelos de servomotores y según el fabricante, los colores de los cables son distintos.
En el caso del SG90 tenemos que:
  • La señal de Control se manda por el cable del extremo, de color NARANJA.
  • La alimentación transcurre por el cable central, de color ROJO.
  • La toma negativa o tierra (GND) corresponde al cable del otro extremo, de color MARRÓN.
En nuestro caso, conectamos la señal de control al PIN 9 de tipo ~PWM (señales de Pulsos)
Colores Servomotor SG90


No se necesita placa Board para conectar el Servomotor a Arduino:

Moviendo un Servomotor
(pincha para verlo más grande)

Programa en mBlock:
Moviendo Servomotor mBlock

Programa en IDE de Arduino:
Moviendo Servomotor IDE

RETOS:

16-B- Ciclo de posiciones del Servomotor: Modifica el programa creando un ciclo de posiciones del Servomotor::
  • Inicialmente se posicionará en 0º
  • Cada segundo incrementará su posición 30º
  • Cuando llegue a 180º volverá decreciendo cada segundo hasta volver a 0º
  • En definitiva, irá pasando por 0º, 30º, 60º, 90º etc hasta llegar a 180º y luego viceversa: 180º, 150º, 120º, 90º...
  • El ciclo se repetirá indefinidamente
Para este programa no es necesario usar el puerto Serie. Elimina todas las órdenes referidas al mismo.

Para simplificar el programa, lo más útil es hacer un bucle para los valores crecientes y otro para los decrecientes:







 


RETOS:

16-C- Posiciones del Servomotor y su lectura en el Monitor Serie: Amplía el programa anterior con el ciclo de posiciones del Servomotor::
  • Igual que en el apartado anterior, el servomotor irá cambiando su posición desde 0º hasta 180º y viceversa a razón de 30º cada segundo.
  • Se utilizará el puerto serie como Receptor, es decir, Arduino nos informará cada segundo de los grados en que se sitúa el servomotor, mandando la información por el Monitor Serie.
  • Una vez que compruebes los números que aparecen por el monitor serie puedes hacer cambios si detectas errores.




17. MOVIENDO UN SERVOMOTOR CON UN POTENCIÓMETRO


ORIGINAL


https://arduino.microlog.es/moviendo-un-servomotor-con-un-potenciometro/
Material necesario:

1 Arduino UNO LOG 8431

1 Cable USB LOG 7509

1 Protoboard LOG 886

1 Potenciómetro de 100K LOG 743

1 Miniservo 4,5V SG90 180º LOG 06

8 Latiguillos board macho–macho LOG 7519

Circuito revisado:
Mover un servomotor con un potenciómetro
(Pulsa para verlo más grande)

Programa en mBlock:
Para facilitar la comprensión del programa se han creado dos variables:
Variables para mover Servomotor con potenciómetro
  • POTENCIOMETRO: Almacena el valor obtenido del cursor del potenciómetro en la entrada analógica (A0). Se trata de un número entre 0 y 1023.
  • ANGULO: Es el valor que se pasa al servomotor. Debe estar entre 0 y 179. Se calcula mediante regla de tres, a partir del la variable anterior:
    • ANGULO = POTENCIOMETRO*179/1023
Mover Servomotor con Potenciómetro

En realidad no es necesario crear las variables, pudiendo realizarse todo el programa directamente en una orden que lo aglutine todo:
Mover Servomotor con Potenciómetro simplificado

Programa en IDE de Arduino:
El programa en el IDE reproduce la misma idea del anterior, usando dos variables:
  • potenciometro: Almacena el valor leído en la entrada analógica (A0), que depende de la posición del cursor del potenciómetro. Puede variar entre 0 y 1023.
  • angulo: Este valor será el que se escriba en el servomotor, por tanto debe estar entre 0 y 179. Se hace una regla de tres para calcularlo a partir de la variable anterior:
    • angulo = potenciometro*179/1023
Mover un Servo con un potenciómetro

RETOS:

17-B- Añade un LED que se encienda más o menos en función del valor del potenciómetro. utiliza para controlar su luminosidad una salida digital tipo ~PWM de Arduino
(por ejemplo la ~5)


El circuito sería el siguiente:

Mover un servomotor con un potenciómetro
(Pulsa para verlo más grande)

  • Para hacerlo en mBlock utiliza la orden "Fijar pin PWM __  a _____"
    • esta orden sólo es válida para los pines  ~3   ~5   ~6   ~9   ~10   ú  ~11 (los marcados con el signo ~)
    • pudiendo usar valores desde 0 hasta 255
Usar PWM mBlockUsar PWM mBlock 0-255

  • En el IDE de Arduino, el comando correspondiente es   analogWrite ( pin , valor );
    • sólo se puede usar para los pines  ~3   ~5   ~6   ~9   ~10   ú  ~11 (los marcados con el signo ~)
    • y admite valores entre 0 y 255.
analogWrite





18. CONTROL DE MOTORES CON PUENTE EN H


ORIGINAL


https://arduino.microlog.es/control-de-motores-con-puente-en-h/
Material necesario:

1 Arduino UNO LOG 8431

1 Cable USB LOG 7509

1 Protoboard LOG 886

2 Motores de CC de 1,5-4,5V y eje de 2mm LOG 00

2 Condensadores de poliéster de 100nF LOG 770

1 Puente en H - Driver de motores L293D LOG 874

3 pilas Alcalinas AA de 1,5V R6 LOG 570

1 Portapilas 3xR6 (para 3 pilas 1,5V AA) LOG 533

20 Latiguillos board macho–macho LOG 7519


Circuito revisado:

El control de motores se basa en el circuito
L293D
L293DPatillas del L293 y L293D

El circuito integrado L293D es un Driver de motores. Esto significa que:
  • Proporciona alimentación a los motores que se conecten, evitando que Arduino se sobrecargue.
  • En función de las señales de Arduino, puede manejar motores en distinta configuración:
    • 4 motores DC conectados en configuración Directa o Inversa. Con esta configuración podemos conseguir que un motor gire más o menos deprisa, pero no invertir su giro (ejemplo).
    • ó 2 motores DC conectados en configuración Push-Pull. En esta configuración puede hacerse que cada motor invierta su sentido de giro, además de controlar su velocidad (ejemplo)
    • ó 1 motor stepper, también llamado motor "paso a paso", es un motor de corriente continua en el que podemos elegir la posición angular (ejemplo)
Modos de conexión L293DModos de conexión L293D Stepper
(Para más detalles, consultar hoja de caracteristicas y conexiones del L293 y L293D)


En el ejercicio que vamos a realizar, usaremos 2 motores DC (de corriente continua) en configuración Push-Pull. Esta configuración utiliza dos de los amplificadores del L293D. Controlando ambos amplificadores, puede conseguirse que el motor gire en un sentido u otro:


AMPLIFICADORES MOTOR
1 2
0
0
PARO
1
0
HORARIO
0
1
ANTIHORARIO
1
1
PARO


El siguiente diagrama muestra el funcionamiento del L293D en configuración Push-Pull con dos motores:
Diagrama Lógico del L293 con 2 Motores en Push-Pull
 
Especificaciones:
  • El propio circuito integrado L293D tiene que tener su propia alimentación de +5V para poder funcionar. Esta toma de tensión se denomina Vcc1 y se obtendrá de Arduino.
  • Conviene situar un par de condensadores en paralelo con los motores para que el arranque y la parada sean más graduales, evitando picos de corriente. Además de eso, el propio circuito L293D incorpora diodos internos para evitar las corrientes inversas (el L293 "normal" no tiene estos diodos. Precisamente esta es la diferencia entre el L293 y el L293D)
  • Por otra parte, aunque Arduino es capaz de alimentar estos pequeños motores, para no sobrecargarlo se recomienda utilizar una alimentación externa para los motores. Por este motivo se incluye una batería, que se conecta en la toma llamada Vcc2.
  • Las tomas denominadas ENABLE (o EN) sirven para desactivar o activar los amplificadores correspondientes, de modo que:
    • Si se pone a "0", es decir, si se conecta ENABLE a 0V (GND), se desactiva los amplificadores asociados.
    • Si se pone a "1", o sea, ENABLE se conecta a +5V, se activan dichos amplificadores.
    • Por construcción del circuito, si se dejan estas tomas sin conectar, actúan como si se tuvieran un "1". Pero por precaución las conectaremos a +5V obtenidos de Arduino.
  • Hay que conectar a GND todas las tomas de tierra del L293D, así como el negativo de la pila.
El esquema final, con la conexión propuesta a Arduino, sería el siguiente:

L293D con Arduino y 2 Push-Pull

El circuito usando la placa Protoboard sería el siguiente:
2 motores Push-Pull con Arduino y Protoboard
(Pulsa para verlo más grande)

Programa en mBlock:
Para realizar el programa, vamos a suponer que ambos motores se montan en un chasis, de modo que la combinación de los giros de ambos motores produce un movimiento global de Avance, giro a la Derecha o a la Izquierda, movimiento hacia Atrás y Paro. Todo ello se explica en el siguiente apartado


MOVIMIENTO DE UN CHASIS-ROBOT CON DOS MOTORES

Montamos los dos Motores DC en un chasis para un Robot.
Los Motores DC (de corriente continua), producen un giro continuo que puede ser
Horario o Antihorario.
SENTIDO DE ROTACIÓN EFECTIVO: En un motor DC comercial ¿Cómo se entiende el sentido de una rotación?
Si el motor tiene alguna marca se supone que el sentido Horario es cuando el valor + se conecta en ese polo y el - en el contrario.
Sin embargo ¿Desde dónde se mira el sentido horario? ¿Desde el punto de vista del motor o desde el espectador externo?

Observamos aquí el punto de vista del motor. En este ejemplo se ha representado el Sentido Horario en color rojo y el Antihorario en verde.

Este es el punto de vista de un observador externo. Los mismos sentidos anteriores, desde esta perspectiva parecen "equivocados". Seguimos representando el sentido Horario en rojo y el Antihorario en verde.

Sin embargo, este criterio no siempre se respeta por el fabricante, por lo que será mejor comprobarlo en cada caso.


ROBOT MODELO
Para la práctica se utiliza un robot gobernado por dos Servomotores M1 y M2.
Para mantener la estabilidad y poder girar con facilidad, se sitúa una rueda loca en posición delantera
.

En el modelo se indican los sentidos de giro. Según el criterio del punto de vista del motor la flecha roja indica el sentido Horario y la verde el Antihorario.

Con los motores montados uno frente al otro, hay que estudiar los sentidos de giro necesarios para que el robot haga las cinco operaciones básicas:

MOVIMIENTOS DEL ROBOT:
Con este criterio, para conseguir...


 
(1) Que el robot AVANCE:
  • el motor M1 debe girar en sentido Horario y
  • M2 en modo Antihorario

(2) para que el robot vaya hacia ATRÁS:
  • M1 debe girar en modo Antihorario y
  • M2 en modo Horario


(3) El GIRO a la IZQUIERDA se consigue con:
  • M1 en modo Antihorario y
  • M2 también en Antihorario
(También se podría hacer con M1 parado, pero sería un giro más amplio y, por tanto, menos preciso)




(4) El GIRO a la DERECHA se logra con:
  • M1 en modo Horario y
  • M2 asímismo en modo Horario
(Igualmente se podría hacer con M2 parado, pero sería un giro más amplio y menos preciso)



(5) Finalmente, para que el ROBOT se PARE, los dos motores deben estar parados.



Para simplificar el programa, definimos previamente 5 bloques:
  • AVANCE
  • PARO
  • IZQUIERDA
  • DERECHA y
  • ATRÁS (no poner tilde en mBlock ni IDE)
ML18 nombre de bloques mBlock


Como se ha explicado antes, la definición de cada bloque dependerá del giro efectivo que hagan los motores y la conexión de sus terminales.
El programa siguiente es un ejemplo que habría que comprobar en la práctica:

ejemplo Bloques 18ML mBlock


Por último, se completaría el programa con los movimientos que queremos que haga el robot:

18ML 2 Motores con puente en H

Programa en IDE de Arduino:
El programa propuesto también utiliza funciones (equivalentes a los Bloques en mBlock) para definir los modos de Avance, giro a la Derecha o a la Izquierda, movimiento hacia Atrás y Paro.
Una vez definidos éstos, el bucle con la secuencia del programa queda mucho más sencillo.
Se podría redactar sólo los apartados void setup y void draw pero en lugar de cada orden AVANCE, DERECHA, IZQUIERDA, ATRAS y PARO habría que introducir las órdenes que contienen dichas funciones, resultando el programa más complicado de seguir.

2 Motores DC en Push-Pull - programa con Funciones


RETOS:

18-B- Se puede independizar el circuito del ordenador siguiendo los pasos siguientes:
    • Se conecta el positivo de la batería externa +Vcc2 a la toma Vin de Arduino (Voltaje de entrada).
    • Se elimina el cable que partía desde Arduino para propocionar voltaje de +5V al circuito.
    • Una vez cargado el programa a Arduino, se desconecta el cable USB.
2 motores Push-Pull alimentado con batería


18-C- Hasta ahora hemos conectado las tomas ENABLE del L293D al positivo (+5V) de Arduino o de la batería (+Vcc2).
Pero también se podrían conectar a una salida ~PWM de Arduino.
Las salidas ~PWM  proporcionan pulsos que permiten graduar el valor digital desde un nivel 0 (mínimo) hasta el nivel 255 (máximo).
Si una salida ~PWM se conecta a Arduino se podría Regular la velocidad de los motores, consiguiendo:
  • Que se detengan los motores si ENABLE =  0
  • Que giren al valor máximo si ENABLE = 255
  • Que giren a un valor intermedio usando un valor entre ENABLE = 0 y ENABLE = 255
Reescribe el programa para hacer una simulación de giro de los motores a distintas velocidades.

Los motores:
  • Deben estar 2 segundos detenidos.
  • Luego deben girar 2 segundos a una velocidad media.
  • Girarán otros 2 segundos a velocidad máxima.
  • A continuación girarán de nuevo a velocidad media.
  • Por último se detendrán otros 2 segundos.
  • Acto seguido, realizarán la misma secuencia pero girando en sentido contrario.
2 Push-Pull con L293D+Batería+Enable-3
(Pulsa para verlo más grande)



18-D- Vamos a añadir un potenciómetro para regular el nivel de velocidad de los motores.

Monta el circuito y diseña un programa para que haga lo siguiente:
  • La señal del cursor del potenciómetro se introduce en la entrada Analógica A5 produciendo un valor entre 0 y 1024.
  • Este valor se traducirá en otro que varíe entre 0 y 255.
  • Este último valor será el que salga por la entrada PWM~3 para alimentar las tomas ENABLE.
  • El resultado debe ser que, girando el potenciómetro se consiga variar la velocidad de ambos motores
  • En esta práctica es indiferente el sentido de giro de los motores.
Push-Pull con L293D + batería y Potenciómetro
(Pulsa para verlo más grande)




19. RECEPTOR INFRARROJO


ORIGINAL


https://arduino.microlog.es/receptor-infrarrojo/
Material necesario:

1 Arduino UNO LOG 8431

1 Cable USB LOG 7509

1 Protoboard LOG 886

1 Kit mando + Receptor infrarrojos TSOP LOG 8401

1 Pila de botón CR2032 de Litio de 3V para mando LOG 602

3 Latiguillos board macho–macho LOG 7519

Circuito revisado:

El circuito Receptor de infrarrojos (el llamado IR remote o TSOP) se conecta de la forma siguiente:

  • La patilla Positiva (+) se conecta a la toma de +5V de Arduino
  • La patilla Negativa (-) se conecta a la toma de tierra GND de Arduino
  • La patilla de Señal (Signal) se conectará a un PIN ~PWM de Arduino. En nuestro caso hemos escogido el PIN ~5
  • (En la extensión de mBlock que vamos a usar se asigna las patillas ~3 y ~9 para tareas específicas, por lo que no las emplearemos para la Señal del TSOP)
IR remote - TSOP + Arduino
(Pulsa para verlo más grande)

Programa en IDE de Arduino: CONFIGURACIONES PREVIAS

Para poder manejar el receptor infrarrojo (iR remote) hay que instalar las "librerías" adecuadas para controlarlo. Estas "librerías" son programas que contienen órdenes diseñadas especialmente para trabajar con dichos aparatos. Las librerías son algo así como los "drivers".

Sigue el proceso siguiente para instalar la librería IRremote que te permitirá controlar el Receptor de infra-Rojos
TSOP LOG 8401

(NOTA: TSOP significa Transmission System Operator Package)

(Pulsa cualquiera de las imágenes para verla en tamaño grande)

PROCEDIMIENTO 1
Instalar librerías desde el buscador del IDE de Arduino
  1. Para instalar librerías para el IDE de Arduino accede al menú Programa > Incluir Librería > Administrar Bibliotecas... (Ctrl+Mayús+I)
1 Administrar Bibliotecas

  1. En este momento se actualizará la lista de las librerías que están instaladas
2 Administrar Bibliotecas

  1. Escribe en el Cuadro de Búsqueda superior el texto IRremote
3 Administrar Bibliotecas

  1. Tras unos segundos se muestra en la pantalla distintas librerías en las que se incluye el término IRremote. Escoge la denominada IRremote by shirriff en su última versión (en el ejemplo la 4.4.0) y pulsa Instalar
4 Administrar Bibliotecas

  1. Tras el proceso, aparecerá la librería como INSTALADA
5 Administrar Bibliotecas

  1. Cierra la ventana de las librerías. En la ventana principal del IDE de Arduino accede de nuevo al menú Programa > Incluir Librería y verás que en la lista que se ofrece aparece la librería recién instalada: IRremote (al estar recién instalada aparecerá al final del todo)
Pulsa sobre el texto IRremote para agregarla al programa.
6 Administrar Bibliotecas

  1. Al pulsar sobre IRremote el volvemos a la pantalla inicial y en el programa vemos que ya se ha incluido la referencia a una librería del sistema. Dicha librería se puede usar en el programa porque, al realizar el proceso anterior, sus archivos están descargados y enlazados al IDE (es decir, no basta con escribir ese texto en el programa).
7 Administrar Bibliotecas

  1. ¿Cómo podríamos guardar los archivos IRremote para otro ordenador que, por ejemplo, no tenga acceso a internet?
En la ventana del Gestor de Librerías busca de nuevo IRremote y pulsa More info para acceder a más información
8 Administrar Bibliotecas

  1. Se abrirá una web de la plataforma github con información de la biblioteca correspondiente (en este caso IRremote)
9 Administrar Bibliotecas

  1. Busca el enlace para descargar el archivo correspondiente a la librería IRremote.
10 Administrar Bibliotecas

  1. Descarga la versión deseada, en nuestro ejemplo sería la IRremote-4.4.0
11 Administrar Bibliotecas

  1. Guarda el archivo en un lugar relevante. Si tienes instalado Arduino IDE, un buen sitio sería en la ruta Mis documentos \ Arduino \ libraries
12 Administrar Bibliotecas
Por cierto, en dicha carpeta (creada al instalar Arduino en el ordenador) podría haber un archivo de texto llamado "readme" que simplemente ofrece una dirección donde se explica cómo instalar librerías. La dirección aludida es http://arduino.cc/en/Guide/Libraries
Readme libraries






PROCEDIMIENTO 2
Instalar librerías a partir de un archivo ya descargado

  1. Vamos a instalar la librería IRremote desde un archivo ya descargado. Utiliza este archivo: IRremote (versión 4.4.0)
Guarda el archivo anterior en una carpeta adecuada. Por ejemplo en Mis documentos \ Arduino \ libraries
12 Administrar Bibliotecas

  1. Desde el IDE de Arduino accede al menú Programa > Incluir Librería > Añadir biblioteca .ZIP
2 Incluir Librerias ZIP

  1. Busca el archivo previamente descargado en tu carpeta en la ruta: Mis documentos \ Arduino \ libraries
3 Incluir Librerias ZIP

  1. Hecho ésto, aparece un mensaje en la zona de notificaciones indicando que se ha añadido la librería. Además se indica cómo incluirla.
4 Incluir Librerias ZIP

  1. Para incluir la librería accedemos al menú  Programa > Incluir Librería  y observamos que aparece en el listado (si está recién instalada estará en la zona del final)
5 Incluir Librerias ZIP

  1. Aparece al principio del programa una línea con un comando que incluye la librería en el programa actual. Para que esto sea posible ha sido necesario realizar el proceso anterior, no basta con escribir dicho texto.
6 Incluir Librerias ZIP

  1. Por curiosidad, puedes acceder a la ruta donde estaba el archivo IRremote original y comprobar que aparece descomprimido en una carpeta con el mismo nombre:
7 Incluir Librerias ZIP




Una vez seguido cualquiera de los procedimientos anteriores, abre un nuevo IDE de Arduino e incluye en el programa la librería IRremote, que ahora se muestra en la lista por orden alfabético. Es decir, ya no necesitas hacer todos los pasos anteriores porque ya está enlazada en la carpeta de Arduino.
8 Incluir Librerias ZIP
10 Incluir Librerias ZIP

Programa en mBlock3
Igual que ocurre con el IDE de Arduino, se necesita un complemento para que mBlock disponga de los bloques necesarios para controlar el chip receptor de infrarrojos iR remote TSOP LOG 8401

INSTALACIÓN DE EXTENSIONES EN mBlock3

  1. En el caso de mBlock estos complementos se llaman extensiones. Para instalar una extensión accede al menú Extensiones > Administrar extensiones Ctrl+Shift+T
Administrar extensiones mB

  1. La versión de mBlock3 ya no tiene conexión con el servidor de extensiones, seguramente por ello aparece un mensaje que informa de un tiempo de conexión agotado.
Tiempo de conexión agotado

  1. Como se observa, en mBlock3 la búsqueda no produce ningún resultado:
Búsqueda extensiones en mB

  1. La solución para mBlock3 es buscar directamente la extensión deseada en la página https://mblock3-ext.mblock.cc/
Búsqueda en internet

  1. Todas las extensiones aparecen en la misma página, para buscar entre los resultados pulsa Ctrl+F y en el cuadro de búsqueda escribe IRremote para que se resalten todos los resultados con este texto. En este caso hemos encontrado un resultado. Pincha en el texto IRremote para descargar la extensión
Búsqueda en internet IR remote

La versión escogida la puedes descargar aquí para continuar con el tutorial: IRremote 0-1-3 (para mBlock3)
    Puedes encontrar otras versiones si en el cuadro de búsqueda escribes IR remote (separado) y las enlazamos también aquí aunque no todas se han probado:



  1. Una vez que disponemos del archivo descargado (IRremote 0-1-3 (para mBlock3) hay que incorporar esta extensión a mBlock.
Para ello accede al menú Extensiones > Administrar extensiones Ctrl+Shift+T y pulsa el botón Añadir Extensión.
Agregar extensiones en mB

  1. Cambia el tipo de archivo que aparece por defecto a zip file
Agregar extensiones archivo zip

  1. Carga la extenxión IRremote_0-1-3 que ahora sí aparece en la pantalla. Selecciónala y pulsa Abrir
Agregar extension IRremote.zip

  1. Si pulsamos en Instalado en el administrador de extensiones veremos que ya aparece IRremote junto a otras de las extensiones que ya están instaladas o vienen por defecto como Arduino.
Agregada extension IRremote.zip

  1. Las extensiones que están en uso son sólo las que están marcadas con un signo   en el listado que aparece al pulsar el menú Extensiones
Extensiones activas

  1. Puede verse los bloques de las extensiones activas accediendo al apartado Robots
Ahora mismo mBlock no está conectado a la placa de Arduino, por ello el indicador que hay junto a cada extensión está en rojo.
Bloques de las extensiones en ROBOTS

  1. El programa que realizaremos es el siguiente, que utliza bloques de las extensiones Arduino e IRremote.
Se usa el PIN ~5 de Arduino para recibir la señal del TSOP
El monitor Serie nos servirá para informarnos del valor del código recibido por el TSOP. Este código es el que emite el mando a distancia y debe ser distinto para cada botón del mando. El mando puede ser el que viene con el pack o incluso otro que emita señales infrarrojas que detecte el TSOP.

19ML LEER TECLAS IRremote

  1. Activando el Modo Arduino a través del menú Editar > Modo Arduino se observa la ventana exclusivamente con los bloques, la zona del programa y, a la derecha, la transcripción a código de Arduino, quedando abajo a la derecha el visor del Monitor Serie.
Editar - Modo Arduino
8 Incluir Librerias ZIP

  1. A continuación podríamos conectar la placa de Arduino al puerto serie correspondiente: COM3  en  el ejemplo
Después activaríamos la conexión en Conectar > Puerto Serie > COM3
Conectar Puerto Serie COM3

Y subiríamos el programa a Arduino pulsando el botón Subir a Arduino
Subir a Arduino mB


Al subir el programa a Arduino se desconecta el puerto Serie y no podríamos usar el Monitor Serie. Tendríamos que activar de nuevo el Puerto Serie en Conectar > Puerto Serie > COM3
Conectar Puerto Serie COM3

Y escogeríamos que se muestre la información por el Monitor Serie en modo de caracteres
Modo de caracteres - Monitor Serie

Sin embargo hay un problema que hace que no funcione el programa. Resulta que el Monitor Serie de las placas de Arduino básicas funciona a 9600 baudios, pero en la configuración por defecto que genera mBlock esta velocidad es de 115200 baudios. Esta velocidad tan grande no es capaz de gestionarla la placa de Arduino en muchos casos, de modo que no se recibe nada por el puerto serie. Para combiar ésto sólo podemos hacerlo desde el IDE.
velocidad 115200 baudios
  1. Para solucionar este problema, pulsa el botón Editar con IDE de Arduino y, si tienes instalado este programa, se cargará el código en el IDE
Editar con IDE de Arduino


  1. Rectifica el dato de los baudios poniendo 9600
9600 Baudios IDE

  1. Conecta la placa Arduino y en el menú Herramientas de IDE escoge la Placa y el Puerto adecuados. En nuestro ejemplo Placa Arduino UNO y puerto COM3.
Herramientas-Placa-Puerto

  1. Por último, en el menú Herramientas activa el Monitor Serie del IDE para recibir los datos
Herramientas-Monitor Serie IDE

Si aparece un mensaje de error indicando que el Puerto Serie está ocupado seguramente sea porque debes desconectarlo de mBlock
Puerto COM3 busy

Para desconectar el puerto Serie de mBlock hazlo en el mismo menú "Conectar" en que lo activaste pero haciendo que desaparezca el signo   junto al puerto COM
COM3 desactivado mB
  1. Activa de forma definitiva el monitor Serie en el IDE
Activar Monitor Serie IDE
 
Verás que cada vez que pulsas un botón del mando a distancia aparece un código distinto:
Monitor Serie Recibiendo Códigos


RETOS: Ejercicio 19A - Anota en una tabla como la siguiente a qué código corresponden las teclas del mando:


Programa en IDE de Arduino:




MATERIAL NECESARIO PARA TODAS LAS PRÁCTICAS ANTERIORES


ORIGINAL


https://arduino.microlog.es/
Material necesario:

1 Arduino UNO LOG 8431

1 Cable USB LOG 7509

1 Protoboard LOG 886

7 Resistencias de 220 Ohmios (rojo – rojo – marrón) LOG 748 220

3 Resistencias de 470 Ohmios (amarillo – morado – marrón) LOG 748 470

2 Resistencias de 1K Ohmios (marrón – negro – rojo) LOG 748 1K

1 Resistencia de 10K Ohmios (marrón – negro – naranja) LOG 748 10K

1 LDR LOG 731

1 Pulsador para circuito impreso LOG 542

1 Zumbador piezo-eléctrico activo LOG 714

1 Diodo de silicio 1N4007 LOG 760

1 Transistor NPN BC547 LOG 751

1 Hélice de 4 aspas para ejes de 2mm LOG 22

1 Led RGB ánodo común LOG 730

1 Display de 7 segmentos Cátodo Común de 1 dígito SC39-11 LOG 831-CC11

1 Optoacoplador CNY70 LOG 837

2 Diodos LED 5mm Rojo LOG 724

2 Diodos LED 5mm Amarillo (Ámbar) LOG 723

2 Diodos LED 5mm Verde LOG 722

1 Potenciómetro de 100K LOG 743

1 Miniservo 4,5V SG90 180º LOG 06

2 Motores de CC de 1,5-4,5V y eje de 2mm LOG 00

2 Condensadores de poliéster de 100nF LOG 770

1 Puente en H - Driver de motores L293D LOG 874

3 pilas Alcalinas AA de 1,5V R6 LOG 570

1 Portapilas 3xR6 (para 3 pilas 1,5V AA) LOG 533

1 Kit mando + Receptor infrarrojos TSOP LOG 8401

1 Pila de botón CR2032 de Litio de 3V para mando LOG 602

20 Latiguillos board macho–macho LOG 7519








arriba

icono mBlock centro