Programación Visual con mBloc - Galicia

13
Programación Visual con mBloc mBlock es un entorno gráfico de programación basado en el editor Scratch 2.0 para introducir de forma sencilla la programación y robótica. El entorno de programación de mBlock es gratuito, funciona con varios tipos de sistemas operativos y se descarga desde http://www.mblock.cc/download/ Al estilo de Arduino, mBlock ha sacado una beta de un entorno de programación on-line en http://editor.makeblock.com/ide.html Una vez descargado solo hay que ejecutar el archivo y seguir los pasos del asistente de instalación. La ventana de mBlock se compone de 5 partes principalmente: Grupo de instrucciones clasificadas por colores: Movimiento: Conjunto de instrucciones relacionadas con el control del movimiento de cualquier personaje del escenario. Apariencia: Instrucciones orientadas a modificar el aspecto de los personajes de nuestra aplicación. Para el caso de Arduino, es un conjunto de instrucciones que apenas se utiliza. Sonido: Conjunto de instrucciones relacionadas con la elaboración de aplicaciones musicales, emitiendo sonidos y notas musicales. Lápiz: Scratch nos ofrece la posibilidad de que los personajes dejen un rastro durante sus movimientos por el escenario como si arrastrase un lápiz durante su trayectoria. Control: Las instrucciones incluidas en esta sección son imprescindibles para crear la lógica de nuestros programas. Incluyen condicionales, bucles y llamadas de procedimientos. Sensores: Instrucciones de iteración con el ratón, el teclado, sonidos y los personajes. Operadores: operaciones matemáticas, lógicas y con cadenas de texto. Variables: Instrucciones para el almacenamiento y gestión de datos. Instrucciones de programación: Instrucciones de programación correspondientes a cada grupo anterior. Editor: Es la parte principal donde estructuramos y programamos nuestro programa. Programas: Se compone de todas las instrucciones que hace funcionar el código que programemos. Disfraces: Cada objeto puede tener diferentes apariencias o disfraces para utilizar a lo largo de nuestro programa. Sonido: También es posible añadir o grabar sonidos y guardarlos para futuros usos. Escenario o ventana principal: Es el resultado gráfico (en caso de existir) de nuestro programa. Objetos y sprites: Distinguimos principalmente los objetos de tipo Arduino y Sprites. Los objetos de tipo arduino son aquellos que interactúan con Arduino. Los sprites son similares al entorno de scratch y no interactúan con Arduino. Ejecutar Programa desde el PC Cuando vayamos a hacerlo de esta forma comenzaremos el programa con un bloque de la categoría “Eventos”, normalmente con el bloque de la bandera verde. Y debajo de este colocamos el resto de bloques del programa. Como prueba vamos a hacer que se encienda y apague el LED de la placa Arduino conectado internamente al pin 13 de Arduino.

Transcript of Programación Visual con mBloc - Galicia

Page 1: Programación Visual con mBloc - Galicia

Programación Visual con mBloc mBlock es un entorno gráfico de programación basado en el editor Scratch 2.0 para introducir de forma sencilla la programación y robótica. El entorno de programación de mBlock es gratuito, funciona con varios tipos de sistemas operativos y se descarga desde http://www.mblock.cc/download/ Al estilo de Arduino, mBlock ha sacado una beta de un entorno de programación on-line en http://editor.makeblock.com/ide.html Una vez descargado solo hay que ejecutar el archivo y seguir los pasos del asistente de instalación.

La ventana de mBlock se compone de 5 partes principalmente: Grupo de instrucciones clasificadas por colores:

Movimiento: Conjunto de instrucciones relacionadas con el control del movimiento de cualquier personaje del escenario. Apariencia: Instrucciones orientadas a modificar el aspecto de los personajes de nuestra aplicación. Para el caso de Arduino, es un conjunto de instrucciones que apenas se utiliza. Sonido: Conjunto de instrucciones relacionadas con la elaboración de aplicaciones musicales, emitiendo sonidos y notas musicales. Lápiz: Scratch nos ofrece la posibilidad de que los personajes dejen un rastro durante sus movimientos por el escenario como si arrastrase un lápiz durante su trayectoria. Control: Las instrucciones incluidas en esta sección son imprescindibles para crear la lógica de nuestros programas. Incluyen condicionales, bucles y llamadas de procedimientos.

Sensores: Instrucciones de iteración con el ratón, el teclado, sonidos y los personajes. Operadores: operaciones matemáticas, lógicas y con cadenas de texto. Variables: Instrucciones para el almacenamiento y gestión de datos. Instrucciones de programación: Instrucciones de programación correspondientes a cada grupo anterior. Editor: Es la parte principal donde estructuramos y programamos nuestro programa. Programas: Se compone de todas las instrucciones que hace funcionar el código que programemos. Disfraces: Cada objeto puede tener diferentes apariencias o disfraces para utilizar a lo largo de nuestro programa. Sonido: También es posible añadir o grabar sonidos y guardarlos para futuros usos. Escenario o ventana principal: Es el resultado gráfico (en caso de existir) de nuestro programa. Objetos y sprites: Distinguimos principalmente los objetos de tipo Arduino y Sprites. Los objetos de tipo arduino son aquellos que interactúan con Arduino. Los sprites son similares al entorno de scratch y no interactúan con Arduino.

Ejecutar Programa desde el PC Cuando vayamos a hacerlo de esta forma comenzaremos el programa con un bloque de la categoría “Eventos”, normalmente con el bloque de la bandera verde. Y debajo de este colocamos el resto de bloques del programa. Como prueba vamos a hacer que se encienda y apague el LED de la placa Arduino conectado internamente al pin 13 de Arduino.

Page 2: Programación Visual con mBloc - Galicia

Podéis saber en qué categoría se encuentra cada bloque guiándoos por el color de los mismos.

Para ejecutar el programa desde el PC, primero tenemos que seleccionar la placa y el puerto serie al que esté conectado el Arduino. Conectamos el cable USB al Arduino y seleccionamos la placa en “Placas->Arduino UNO” y el puerto en “Conectar->Puerto Serie”.

A continuación pulsamos en “Conectar->Actualizar Firmware” y esperamos a que termine de cargarlo.

Ahora para ejecutarlo pulsamos en la bandera verde del escenario o directamente en el bloque con la bandera verde que hemos colocado para comenzar el programa. Se iluminarán la bandera y los bloques del programa, y si miramos nuestro Arduino veremos cómo parpadea el LED.

Page 3: Programación Visual con mBloc - Galicia

Subir Programa a Arduino En este modo no cargamos un firmware a la placa, sino que sube el programa al Arduino. En este modo usamos como inicio del programa el bloque “Programa de Arduino” que se encuentra en la categoría “Robots”. El resto del programa lo mantenemos igual.

Seleccionamos la placa y el puerto serie de la misma forma que en el apartado anterior y, en vez de cargar el Firmware, pulsamos sobre el bloque “Programa de Arduino” o vamos a “Editar->Modo Arduino”. En la parte derecha de la pantalla aparecerá una pantalla con algunas opciones nuevas y el equivalente en código del programa que hemos hecho con los bloques. Para cargarlo en el Arduino pulsamos sobre el botón “Subir a Arduino” y esperamos a que termine de cargar.

Si todo va bien significará que el programa ya está almacenado dentro del propio Arduino, y seguirá ahí permanentemente hasta que carguemos otro nuevo. De esta forma si desconectamos el Arduino del ordenador y lo enchufamos a cualquier otra fuente de alimentación veremos cómo se ejecuta el programa de LED intermitente que le hemos cargado.

Page 4: Programación Visual con mBloc - Galicia

Movimiento de un servomotor

En esta práctica el servomotor se mueve desde su posición origen a su posición final en ángulos de 10° repetidamente. Diagrama de flujo Antes de ponernos a desarrollar la práctica, conviene realizar un diagrama de flujo para entender la lógica de la programación.

Esquema eléctrico Estos servomotores funcionan con un periodo de 20ms, es decir, podremos cambiar de posición cada 20ms como mínimo. Los servomotores suelen tener los cables con los colores marrón, rojo y naranja, los cuales se corresponden con el GND, 5V y Pin de salida analógica respectivamente.

Programación con mBlock Podrás observar el gran parecido que se tiene con el diagrama de flujo.

Page 5: Programación Visual con mBloc - Galicia

Programación en Arduino #include <Servo.h> // Importamos la librería del servomotor Servo servomotor; // Definimos la variable de tipo servo void setup() { servomotor.attach(9); // Configuramos los pines en modo salida } void loop() { for(int i=0; i<=180; i+=10){ servomotor.write(i); delay(100); } for(int i=180; i>=0; i-=10){ servomotor.write(i); delay(100); } }

Control de servo con teclado En esta práctica vamos a mover un servo mediante las flechas del teclado y activando sendos diodos Led al final de carrera.

Page 6: Programación Visual con mBloc - Galicia

Programación en mBlock

Servomotor con potenciómetro En esta práctica vamos a mover un servomotor utilizando un potenciómetro. A medida que vamos moviendo el valor del mismo el valor del servo irá cambiando.

Programación en mBlock

Page 7: Programación Visual con mBloc - Galicia

Programación en Arduino #include <Servo.h> // Importamos la librería del servomotor Servo servomotor; // Definimos la variable de tipo servo int pinPotenciometro = 0; // Se define la variables de tipo entero void setup() { servomotor.attach(9); // Configuramos los pines en modo salida } void loop() { int angulo = analogRead(pinPotenciometro); angulo = map(angulo, 0, 1023, 0, 180); servomotor.write(angulo); delay(15); }

Medidor de distancias En esta práctica deberás medir distancias cortas inferiores a 4 metros mediante el sensor de ultrasonidos Para calcular la distancia tenemos que ayudarnos de la velocidad del sonido (343 m/s) para obtener los cálculos. Hay que tener en cuenta que el resultado es el tiempo en ida + vuelta.

Programación en mBlock

Programación en Arduino int trigPin = 13; // Se definen las variables de tipo entero int echoPin = 12; void setup() { Serial.begin (9600);

Page 8: Programación Visual con mBloc - Galicia

pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); digitalWrite(trigPin, LOW); } void loop() { digitalWrite(trigPin, HIGH); //Enviamos un pulso durante 10µs delayMicroseconds(10); digitalWrite(trigPin, LOW); long tiempo; //Obtenemos la duración del pulso (ida+vuelta) en µs tiempo = pulseIn(echoPin, HIGH); float distancia = 34300*tiempo*0.000001; //Calculamos la distancia. Velocidad Sonido = 343 m/s distancia = distancia / 2; //Solo IDA Serial.print("Distancia: "); Serial.println(distancia); }

Detector de aparcamiento En esta práctica vamos a calcular la distancia de aparcamiento en un vehículo mostrando una señal acústica a medida se va acercando al obstáculo. Diagrama de flujo

Page 9: Programación Visual con mBloc - Galicia

Esquema eléctrico

Programación en mBlock

Programación en Arduino int zumbadorPin = 13; // Se definen las variables de tipo entero int trigPin = 12; int echoPin = 11; void setup() { Serial.begin (9600); pinMode(zumbadorPin, OUTPUT); pinMode(trigPin, OUTPUT);

Page 10: Programación Visual con mBloc - Galicia

pinMode(echoPin, INPUT); digitalWrite(zumbadorPin, LOW); //Inicialización de los pines digitalWrite(trigPin, LOW); } void loop() { digitalWrite(trigPin, HIGH); //Enviamos un pulso durante 10µs delayMicroseconds(10); digitalWrite(trigPin, LOW); //Obtenemos la duración del pulso (ida+vuelta) en µs long tiempo; tiempo = pulseIn(echoPin, HIGH); float distancia = 34300*tiempo*0.000001; //Calculamos la distancia. Velocidad Sonido = 343 m/s distancia = distancia / 2; //Solo IDA Serial.print("Distancia: "); Serial.println(distancia); //activamos el zumbador si estamos a menos de 30 cm if(int(distancia)<30){ if(int(distancia)<10){ //Pitido continuo si estamos a menos de 10 cm digitalWrite(zumbadorPin, HIGH); }else{ digitalWrite(zumbadorPin, HIGH); delay(50); digitalWrite(zumbadorPin, LOW); delay(distancia*5); //aumentamos frecuencia de pitido al acercarnos } }else{ digitalWrite(zumbadorPin, LOW); } }

Encendido nocturno con LDR (entradas analógicas) Diagrama de flujo

Page 11: Programación Visual con mBloc - Galicia

Esquema eléctrico Para realizar el montaje correctamente en nuestra placa de prototipado, necesitaremos conectar una resistencia al circuito (Pull-Down o Pull-Up). El valor de la resistencia viene condicionado por la intensidad que pasa por el sensor LDR. En este caso podemos tomar una resistencia de 10KΩ.

Programación en mBlock

Programación en Arduino int ledPin = 13; // Se definen las variables de tipo entero int ldrPin = 0; int limite = 150; void setup() { pinMode(ledPin, OUTPUT); pinMode(ldrPin, INPUT); } void loop() { if (analogRead(ldrPin) > limite) { // Lectura del pin del interruptor digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }

Page 12: Programación Visual con mBloc - Galicia

Regulador de luz con potenciómetro (entradas y salidas analógicas) En esta práctica se va a regular un conjunto de diodos Led de color blanco utilizando un potenciómetro. Esquema eléctrico Los diodos Led blancos que vamos a utilizar para la práctica admiten una tensión de 3,3V. Para evitar que se puedan dañar tendremos que colocarle una resistencia al circuito. Para ello, vamos a calcular el valor de la resistencia siguiendo la Ley de Ohm. Si los pines de Arduino ofrecen una tensión de 5V y la tensión máxima del diodo Led admite 3,3V, la diferencia de potencial que debemos tener en la resistencia es de 5V – 3,3V = 1,7V. V = 1,7V I = 10mA V = I x R ; R = V / I R = 1,7V / 0,01A = 170Ω Redondeamos el resultado obtenido a un valor de resistencia conocido (siempre por encima de su resistencia ideal), obtenemos un valor de 200Ω.

Programación en mBlock

Page 13: Programación Visual con mBloc - Galicia

Programación en Arduino int pinPotenciometro = 0; int ledPin1 = 9; int ledPin2 = 6; int ledPin3 = 5; void setup() { pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); // Inicializamos los pines a un valor BAJO analogWrite(ledPin1, 0); analogWrite(ledPin2, 0); analogWrite(ledPin3, 0); } void loop() { int valor = analogRead(pinPotenciometro); valor = map(valor, 0, 1023, 0, 255); analogWrite(ledPin1, valor); analogWrite(ledPin2, valor); analogWrite(ledPin3, valor); delay(15); }