lunes, 27 de mayo de 2019

LABORATORIO 7

ELECTRÓNICA DIGITAL 2019-I
LABORATORIO 7: MUSICA CON ARDUINO
1.-TEORIA DE MBLOCK:
MBlock es un entorno gráfico de programación por bloque para Arduino, que permite introducir de forma sencilla la programación y robótica en el aula. mBlock se compone de 5 partes principalmente: Grupo de instrucciones clasificadas por colores en las siguientes categorías: 

-MOVIMIENTO: Conjunto de instrucciones relacionadas con el control de los pines de la tarjeta de Arduino, así como 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 incluídas en esta sección son impresindibles 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: Las instrucciones de cada grupo corresponden a instrucciones de programación. 

-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 de nuestro programa. 

-OBJETOS Y SPRITES: Distinguimos principalmente los objetos de tipo Arduino y Sprites. 

-Los objetos de tipo arduino son aquellos que interactuán con Arduino. 

-Los sprites son similares al entorno de scratch y no interactúan con Arduino.
IMAGEN 1 : INTERFASE MBLOCK

1.1.MODO EJECUTAR PROGRAMA DESDE PC:
En este modo es necesario siempre tener el Arduino o el robot siempre conectado al PC. Para usar este modo 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.
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”.


IMAGEN 2: MODO ARDUINO

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

IMAGEN 3 : ACTUALIZACION DE FIRMWARE

1.2.MODO 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”. Para este modo 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. Luego para subir el sketch al ordenador pulsamos sobre el botón “Subir a Arduino” y esperamos a que termine de cargar.

IMAGEN 4 : PESTAÑA DE MODO ARDUINO

2.VIDEO Y FOTOS DE LAS EXPERIENCIA DEL LABORATORIO:

VIDEO 1 : MUSICA CON ARDUINO


IMAGEN 4 : DISEÑO DE ARDUINO 

IMAGEN 5 : COMPONENETES UTILIZADOS

IMAGEN 7 : CONEXIONADO.

3.OBSERVACIONES Y CONCLUSIONES:

OBSERVACIONES:
Se observó que el Arduino uno de los arduinos estaba en malas condiciones por lo que se procedió a cambiarse.
Se observó que para probar la programación primero se debe de hacer las respectivas conexiones en el entrenador.
Se observó que para la programación se debe de hacer de acuerdo a las salidas del Arduino introduciendo estos pines en el programa.
Se observó que nuestro entrenador (training system) estaba en malas condiciones específicamente su Speaker por lo que no reproducía ningún sonido.
Se observó que en todo circuito siempre se debe de conectar a GND en caso de no hacer no obtendremos ningún resultado.

CONCLUCIONES:
Se concluye de las experiencias realizadas que muchas formas de hacer programación en Arduino siendo una de ellas el programa mBlock.
Se concluye que la creación de sonidos o música de acuerdo a la programación que uno le dé también deberá de estar acorde al circuito habiendo las conexiones en los pines correctos.
Se concluye que se ha logrado entender bien el lenguaje de programación de acuerdo al laboratorio desarrollado por lo que estamos en la capacidad de hacer programaciones durante el desarrollo de nuestra carrera o en cualquier otra circunstancia.
Se concluye que durante el desarrollo del laboratorio se entendió y aprendió como se puede generar música y/o sonidos, también usando el potenciómetro generando diferentes tonos de sonidos además de encender un LED de acuerdo a las salidas y según a la nota musical.
Se concluye que es necesario desarrollar cada laboratorio con las estrictas medidas de seguridad o precaución con la finalidad de mantener la integridad del material humano y también de las herramientas y equipos. 

¿ QUE HE APRENDIDO DE ESTA EXPERIENCIA?
Durante el desarrollo del laboratorio lo más relevante que se aprendió es generar música a partir de notas musicales usando un interfaz de programación basada en Scratch como es el mBlock lo cual tenemos bloques para generar sonidos, las notas musicales son do, re, mi, fa, so, la, si, do, siendo estas notas comúnmente llamadas cono anglosajonas lo cual se escriben de la siguiente manera, C, D, E, F, G, A, B, consecutivamente.

4. FOTO DE INTEGRANTES:






domingo, 12 de mayo de 2019

LABORATORIO 6

ELECTRÓNICA DIGITAL 2019-I
LABORATORIO 6: SENSORES Y ACTUADORES DIGITALES CON ARDUINO

1.-PROGRAMACIÓN BÁSICA CON IDE ARDUINO:
La programación de Arduino es la programación de un microcontrolador. Esto era algo más de los ingenieros electrónicos, pero Arduino lo ha extendido a todo el público. Arduino ha socializado la tecnología.Programar Arduino consiste en traducir a líneas de código las tareas automatizadas que queremos hacer leyendo de los sensores y en función de las condiciones del entorno programar la interacción con el mundo exterior mediante unos actuadores. Arduino proporciona un entorno de programación sencillo y potente para programar, pero además incluye las herramientas necesarias para compilar el programa y “quemar” el programa ya compilado en la memoria flash del microcontrolador. Además el IDE nos ofrece un sistema de gestión de librerías y placas muy práctico. Como IDE es un software sencillo que carece de funciones avanzadas típicas de otros IDEs, pero suficiente para programar.
1.1.-ESTRUCTURA DE UN SKETCH:
Un programa de Arduino se denomina sketch o proyecto y tiene la extensión .ino. Importante: para que funcione el sketch, el nombre del fichero debe estar en un directorio con el mismo nombre que el sketch. No es necesario que un sketch esté en un único fichero, pero si es imprescindible que todos los ficheros estén dentro del mismo directorio que el fichero principal.
IMAGEN 1 : EJEMPLO DE LA ESTRUCTURA DE UN SKETCH.

La estructura básica de un sketch de Arduino es bastante simple y se compone de al menos dos partes. Estas dos partes son obligatorios y encierran bloques que contienen declaraciones, estamentos o instrucciones.
Adicionalmente se puede incluir una introducción con los comentarios que describen el programa y la declaración de las variables y llamadas a librerías.

IMAGEN 2 : EJEMPLO DE SETUP()

Setup() es la parte encargada de recoger la configuración y loop() es la que contiene el programa que se ejecuta cíclicamente (de ahí el término loop –bucle-). Ambas funciones son necesarias para que el programa trabaje.

La estructura del sketch está definida en el siguiente enlace: http://arduino.cc/en/Tutorial/Sketch

Se puede resumir un sketch de Arduino en los siguientes diagramas de flujo:
Un ejemplo puede ser el diagrama de flujo de un sistema de arranque y parada de un motor DC:
IMAGEN 3 : DIAGRAMA DE FLUJO DE UN ARRANQUE DE MOTOR.

IMAGEN 4 : ESQUEMA DE CONEXIONADO EN EL CIRCUITO.

 1.2.- LENGUAJE DE PROGRAMACIÓN ARDUINO:
El lenguaje de programación de Arduino es C++. No es un C++ puro sino que es una adaptación que proveniente de avr-libc que provee de una librería de C de alta calidad para usar con GCC(compilador de C y C++) en los microcontroladores AVR de Atmel y muchas utilidades específicas para las MCU AVR de Atmel como avrdude: https://learn.sparkfun.com/tutorials/pocket-avr-programmer-hookup-guide/using-avrdude
Las herramientas necesarias para programar los microcontroladores AVR de Atmel son avr-binutils, avr-gcc y avr-libc y ya están incluidas en el IDE de Arduino, pero cuando compilamos y cargamos un sketch estamos usando estas herramientas. Aunque se hable de que hay un lenguaje propio de programación de Arduino, no es cierto, la programación se hace en C++ pero Arduino ofrece una api o core que facilitan la programación de los pines de entrada y salida y de los puertos de comunicación, así como otras librerías para operaciones específicas. El propio IDE ya incluye estas librerías de forma automática y no es necesario declararlas expresamente. Otra diferencia frente a C++ standard es la estructuctura del programa que ya hemos visto anteriormente.

Además todo esto no solo es válido para las placas Arduino, sino para muchas otras placas y microcontroladores que usando el mismo lenguaje de programación tenemos soporte para compilarlo y transferir el código binario a la memoria flash del microcontrolador.

Un ejemplo de uso de funciones AVR que no dispone el entorno de Arduino es cuando queremos hacer delays muy pequeños. La función delayMircoseconds() puede hacer el delay más pequeño con el lenguaje de Arduino que es de 2 microsegundos.

Para delays menores es necesario usar ensamblador y en concreto la función ‘nop’ (no operation. Cada llamada a ‘nop’ ejecuta un ciclo de reloj que para 16 MHz es un retraso de 62,5 ns.
IMAGEN 5 : CODIGO DE UTILIZACION DELAY "NOP"

Otra característica propia de la programación de microcontroladores en C++ son el acceso a los elementos de HW mediante la lectura y escritura en los registros del microcontrolador.
IMAGEN 6 : PARTES DE UN ARDUINO "UNO"

Los registros son unas zonas concretas de la memoria RAM accesibles directamente desde la CPU o desde otros elementos del microcontrolador que permite hacer operaciones directas.

IMAGEN 7 : ZONAS CONCRETAS DE LA MEMORIA RAM.

IMAGEN 8 : EJEMPLO DE ARDUINO DE ATMEGA 328

2.-VIDEO EXPLICANDO LAS EXPERIENCIAS HECHAS EN EL LABORATORIO:


VIDEO 1 :  TAREAS GUIADAS DENTRO DEL LABORATORIO.

IMAGEN 9 : CODIGO ARDUINO DE DISPLAY 7 SEGMENTOS ACENDENTE.

IMAGEN 10 : CIRCUITO IMPLEMENTADO CON 7 DISPLAYS CON 7 LEDS
IMAGEN 11 : CÓDIGO DE ARDUINO DISEÑADO PARA UN SEMÁFORO.
IMAGEN 12 : CÓDIGO DE ARDUINO PARA 7 DISPLAYS CON 7 LEDS EN FORMA DESENDENTE.

3.- OBSERVACIONES Y CONCLUSIONES. ¿QUÉ HE APRENDIDO DE ESTA EXPERIENCIA?


OBSERVACIONES:


1. Se observo que el interruptor de pin B le faltaba botonera , pero aun asi podiamos trabajar con el interruptor.

2. Se observo que al poner en desorden los pines no encienden los leds según la programación dada . ocurre todo lo contrario . Enciende pero en un desorden numerico.

3. Se observo que el PROTOBOARD es un dispositivo capaz de recibir señales digitales nos ayuda a entender los dispositivos digitales 

4. Se observo que el arduino tiene 12 pines divididos en dos partes 

5. Se observo que la programación del arduino se puede realizar a través del programa Arduino como también cnd block 


CONCLUSIONES:


1. Se concluye que el arduino es un micro controlador que funciona a través de programación y es de gran utilidad ya que sirve para programar infinidad de cosas 

2. Se concluye que  al crear la programación, antes de enviarla al arduino es necesario es necesario revisarlo y nos indicara los posibles errores si hubiera 

3. Se concluye que  elaboramos los esquemas correspondientes en el programa del arduino analizando la programación correspondientemente. 

4. Se concluye que  el Software Proteus nos ayuda simular los distintos circuitos elaborados para que no ocurra ninguna falla al momento de realizarlos físicamente. 

5. Se concluye que  utilizamos un contador de pulsos para hacer conteo ascendente y descendente de el reto del semáforo.

¿ QUE APRENDIMOS DE ESTA EXPERIENCIA?
Cotidianamente podemos caminar por las calles y encontrarnos con semáforos que controlan el paso vehicular o peatonal , pero ¿Como se realiza el cambio de colores ademas del conteo ?. Esto fue lo aprendimos en clase primeramente realizamos un ejercicio en el cual utilizamos un código de arduino el cual realizaría un conteo en nuestro entrenador . Tuvimos cuidado al conectar los pines del arduino ya que una mala conexión lo llegaría a a averiar. Después de realizar el conexionado físico con los pines de los leds y displays , subimos el codigo a la placa de arduino . Funciono y aprendimos el conteo ascendente y descendente simplemente implementando partes del código (esto se explica en la parte superior de este blog). Despues asumimos el reto de realizar el ejercicio del SEMÁFORO , el cual exitosamente se colocaron 3 pines de salida y entrada los cuales los pusimos en un rango de 56 - 59 y en descendente de 59-56 .

4.-INTEGRANTES (INCLUYE FOTO DE TODOS):

IMAGEN 13 : INTEGRANTES DE GRUPO