Manual Tomo 2v Final 4-11-16 PDF

Title Manual Tomo 2v Final 4-11-16
Author Ivan Tzayzetv
Course Programación
Institution Benemérita Universidad Autónoma de Puebla
Pages 111
File Size 5.2 MB
File Type PDF
Total Downloads 751
Total Views 958

Summary

MANUAL DE PRÁCTICAS DEPROGRAMACIÓN ORIENTADAA OBJETOS.Facultad de Ciencias de la Electrónica.Para los alumnos de la Facultad de Ciencias de la Electrónica de laBUAP.“Encuentra algo que amar y deja que te mate” -Charles Bukowski Prólogo Este manual fue desarrollado con la finalidad de facilitar la co...


Description

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS. Facultad de Ciencias de la Electrónica. 2016

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS.

Para los alumnos de la Facultad de Ciencias de la Electrónica de la BUAP.

“Encuentra algo que amar y deja que te mate ” -Charles Bukowski

1

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS.

Contenido 1.

Prólogo ........................................................................................................................... 3

2.

Introducción: Comunicación USB.................................................................................. 6

3.

Introducción a diagramas UML ...................................................................................... 8

4.

Práctica 0: Funciones básicas del microcontrolador..................................................... 10

5.

Práctica 1: Clase CPic .................................................................................................. 13

6.

Práctica 2: Constructor y Destructor ............................................................................ 15

7.

Práctica 3: Sobrecarga de funciones. ............................................................................ 22

8.

Práctica 4: Herencia ...................................................................................................... 25

9.

Práctica 5: Sobrecarga de operadores ........................................................................... 30

10.

Práctica 6: Funciones amigas. ................................................................................... 34

11.

Práctica 7: Clases amigas. ......................................................................................... 37

12.

Práctica 8: Modificador static. ................................................................................... 41

13.

Practica adicional: Vehículo. ..................................................................................... 44

14.

Practica adicional: Elevador. ..................................................................................... 51

Apéndice A. Circuito y Tarjetas de desarrollo ..................................................................... 56 Apéndice B. Bits de configuración (PCWHD) ..................................................................... 62 Apéndice C. Código del Microcontrolador (PCWHD). ....................................................... 64 Apéndice D. Programador del microcontrolador ................................................................. 75 Apéndice F. Compilador para el microcontrolador (PIC C) ................................................ 76 Apéndice G. Periféricos del microcontrolador y dispositivos externos. .............................. 81 Apéndice H. Instalación de Drivers...................................................................................... 88 Apéndice I. Comunicación Bluetooth .................................................................................. 99

2

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS.

1. Prólogo Este manual fue desarrollado con la finalidad de facilitar la comprensión de los conceptos más importantes en programación orientada a objetos para los alumnos que cursen la materia de programación avanzada, realizando prácticas aplicadas al manejo de un microcontrolador PIC 18F4550. Se sugiere además tres formas diferentes de ocupar el PIC antes mencionado, adquiriendo la tarjeta ATA-NQH 0714, la tarjeta Miuva de la empresa INTESC o adquirir los componentes necesarios para hacer funcionar el PIC por separado y armar el circuito. De cualquier forma la comunicación se debe lograr satisfactoriamente. La estructura del manual consiste en las siguientes secciones: 





Introducción. Describe detalladamente los requerimientos para lograr la comunicación, lo que incluye la instalación de los drivers y la configuración del programa a utilizar. Se incluye también una breve introducción a diagramas UML los cuales describen y deberían facilitar al alumno la relación entre clases de un programa orientado a objetos. Prácticas. En esta sección se describe los objetivos de la práctica, un breve marco teórico con la finalidad de recordad al alumno el manejo de los temas a ocupar, el algoritmo en diagramas UML que muestran la estructura del programa principal y la relación entre las clases que se utilizan. Finalmente algunas prácticas mencionan pequeños consejos, a manera de información adicional, que pueden facilitar al alumno algunas cuestiones de programación. Apéndices. Se menciona información que no es primordial para la realización de las prácticas, sin embargo puede ser de utilidad para el alumno que desea más información sobre la programación enfocada a microcontroladores. Estos apéndices muestran las diferencias entre las dos tarjetas ocupadas para el desarrollo de este manual, los códigos implementados en el microcontrolador, los programas necesarios para desarrollar y cargar un código en dicho microcontrolador, los periféricos adicionales que tienen en particular el PIC 18F4550 y algunos circuitos adicionales recomendados.

Los alumnos que deseen contribuir al desarrollo de actualizaciones o simplemente deseen hacer un comentario sobre este manual pueden escribir al correo: [email protected]

3

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS.

Objetivos Práctica 0. Lograr una comunicación USB de la computadora al microcontrolador. Hacer un programa que encienda y apague un LED, lea del convertidor analógico-digital un dato (que puede variar por medio de un potenciómetro) y finalmente lea el estado del botón pulsador conectado a E0 o C0 según la configuración que se ocupe del circuito. Ocupar los métodos de la clase CUsb SendPacket para mandar datos al microcontrolador y ReceivePacket para recibirlos.  Práctica 1. Desarrollar una clase CPic la cual tenga como atributo un objeto de la clase CUsb y todas las variables necesarias para encender un LED y leer el estado del botón pulsador (Véase práctica 0). Esta clase debe contener 2 métodos, uno que permita el envío de datos y otro que lea datos del microcontrolador.  Práctica 2. Entender el funcionamiento del Constructor y Destructor de una clase. Realizar un programa que escriba una palabra en un LCD (Pantalla de cristal Líquido) desarrollando una clase CLCD. Utilizar el constructor para inicializar el LCD y el destructor para limpiar la pantalla y reiniciar el dispositivo.  Práctica 3. Realizar un programa que utilice la clase CPic para controlar un zumbador (Buzzer) y el convertidor analógico/digital. Sobrecargar el método de envío de datos para que se pueda mandar 3 datos en lugar de 2. Sobrecargar el método de recepción de datos para que acepte dos apuntadores como parámetros y guarde los datos recibidos en dos variable. Este método sobrecargado puede ser de tipo vacío (Void).  Práctica 4. Desarrollar una clase “CPuertoBinario”, que adquiera los datos en binario del puerto B y D. Sobrecargar los operador AND (‘&’), OR (‘|’) y NOT (‘~’) para que se puedan ocupar directamente con los objetos de la clase “CPuertoBinario”. Describir la clase “CPuertoBinario” de tal manera que sea una subclase de “CPIC” (Descrita en la práctica 1). Realizar las operaciones AND y OR entre los puertos B y D. Además, aplicar la operación NOT al puerto B.  Práctica 5. Desarrollar una clase “CPuertoBinario”, que adquiera los datos en binario del puerto B y D. Sobrecargar los operador AND (‘&’), OR (‘|’) y NOT (‘~’) para que se puedan ocupar directamente con los objetos de la clase “CPuertoBinario”. Describir la clase “CPuertoBinario” de tal manera que sea una subclase de “CPIC” (Descrita en la práctica 1). Realizar las operaciones AND y OR entre los puertos B y D. Además, aplicar la operación NOT al puerto B  Práctica 6. Entender el funcionamiento de una función amiga en programación orientada a objetos. Crear una función de tipo entero que sobrecargue el operador “&” para poder realizar una operación AND entre un entero y un objeto de la clase “CPuertoBinario” (en ese orden) de la práctica 4. Crear una función de que retorne un objeto de la clase “CPuertoBinario” y que sobrecargue el operador “&” para poder realizar la misma operación que la función anteriormente mencionada. Leer el dato del puerto B y aplicarle un enmascaramiento F0 y 0F.  Práctica 7. Aprender el funcionamiento de una matriz de LEDs. Crear la clase “CPunto” que almacene en sus parámetros las coordenadas de un punto de 1 a 8 en valores enteros. Crear la clase “CMatriz” amiga de la clase “CPunto” que puede acceder a sus atributos y permita encender un LED correspondiente a su coordenada en una matriz de LEDs. Crear



4

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS. métodos en la clase “CMatriz” que permitan desplazar dichos puntos dentro de la matriz de LEDs.  Práctica 8. Entender el funcionamiento del modificador static aplicado a un atributo dentro de una clase. Crear una clase CBotón que sea subclase de CPIC, el cual tenga una variable de tipo static. Diseñar un programa que permita cambiar el estado de un LED pulsando 2 botones de manera indistinta, es decir, cualquier botón puede prender o apagar el LED.  Prácticas adicionales. Utilizar todos los conceptos aprendidos en este manual.

5

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS.

2. Introducción: Comunicación USB Existen varias formas de hacer una conexión USB entre la computadora y un microcontrolador PIC. La comunicación descrita en este manual se conoce como HID (Dispositivo de interfaz humana). La comunicación será establecida con el programa Microsoft Visual Studio (ocupando la versión Ultimate 2013 para el desarrollo de este manual, aunque bien los protocolos y bibliotecas son compatibles con versiones anteriores, como la 2010), usando lenguaje de programación C. Para lograr una comunicación exitosa es necesario: A. Direccionar correctamente los datos enviados de la computadora al microcontrolador, es decir, tener en el microcontrolador el programa que interprete los datos recibidos. Este código se encuentra descrito en el apéndice C. B. El microcontrolador debe ser reconocido por la computadora como un dispositivo de interfaz humana, es necesario instalar los drivers proporcionados para su correcto funcionamiento. Cabe señalar que estos drivers se instalan en el puerto USB al que fue conectado, por tanto se debe conectar siempre al puerto en donde se instalaron. Los drivers se encuentran en la página de Microchip los cuales son compatibles con Windows vista, 7, 8 y 10(La instalación de los drivers se encuentra descrita en el apéndice H). C. Una vez creado el proyecto en Visual Studio se deben copiar los archivos “CUsb.h”, “usb2550.h”, “CUsb.cpp”, “usb2550.lib” y “usb2550.dll”a la carpetas del mismo proyecto, dónde se encuentra el archivo .cpp del código fuente. Las bibliotecas también fueron desarrolladas por la empresa Microchip. D. Agregar los archivos “CUsb.h”, “usb2550.h” y “CUsb.cpp” desde el programa como se muestra en la imagen. Los archivos de tipo .h deberán ser agregados en archivos de cabecera (Header files), mientras que los de tipo .cpp deberán estar en archivos fuente (Source files). Estas bibliotecas contienen las funciones necesarias para mandar y recibir datos del microcontrolador.

Figura 1.1 Agregar archivos desde el explorador de soluciones

E. Se debe vincular además, la biblioteca “usb2550.lib”, para hacerlo se debe ir al menú “Proyecto”, seleccionar la opción de “propiedades de (nombre de proyecto)”. Se desplegará una ventana llamada “Pagina de propiedades de (nombre de proyecto)”. Se despliega la opción “Propiedades de configuración”, se despliega “Vinculador” y se selecciona la opción entrada. En la opción “Dependencias adicionales” se escribe “usb2550.lib” como se muestra en la imagen.

6

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS.

Figura 1.2 Páginas de propiedades del proyecto.

El archivo “usb2550.dll” se debe colocar en la carpeta “Debug”. Visual Studio crea 2 carpetas “Debug”, el archivo debe ser colocado en donde se encuentra el ejecutable del programa. Esta carpeta no aparece cuando se crea el proyecto, sólo aparecerá hasta que se compile el proyecto. Finalmente se debe mencionar que el programa (ya sea Visual Studio o en su defecto el ejecutable del programa) debe ser ejecutado como administrador (esto se logra dando click derecho en el ejecutable o en el icono del programa y seleccionando la opción de “Ejecutar como administrador”), de lo contrario no se logrará la comunicación.

7

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS.

3. Introducción a diagramas UML UML(Unified Modeling Language) es un estándar internacional que tiene la finalidad de representar y documentar el desarrollo de software. Esta herramienta consta de varios diagramas que expresan la interacción entre diferentes actores, clases o variables. En este manual se ocupan sólo dos diagramas UML: Los diagramas de clase que representan como está compuesta una clase y su relación con otras clases; mientras que los diagramas de clase representan la ejecución del programa principal. Cada diagrama tiene su propia nomenclatura la cual, se explica a continuación.

Diagrama de clase El diagrama de clase representa, como su nombre lo indica, las clases que se utilizan en el desarrollo de un programa y como se relacionan entre ellas. Una clase se representa mediante un cuadro como se muestra en la figura 2.1 la cual contiene atributos (variables) y operaciones (métodos). Tanto los atributos como los métodos pueden ser declarados como públicos, privados o protegidos, esto se indica mediante el símbolo de suma (+) para los métodos o atributos públicos, el símbolo de resta (-) para los privados y el símbolo de número (#) para los protegidos.

Figura 2.1 La clase Cpersona representada en diagramas de clase

Como se observa en la figura anterior es necesario indicar al principio del atributo si es pública, protegida o privada, enseguida indicar el nombre del atributo, luego el símbolo (:) y al final, el tipo de variable al que pertenece ya sea entero, carácter, etc. Dos clases pueden estar relacionadas de muchas formas, a continuación se enlista algunas de las diferentes relaciones entre clases y su respectiva simbología: 

Composición: Esta relación existe cuando una clase tiene como atributo un objeto de otra clase. Esta relación se indica de la siguiente manera

Como se puede observar, la flecha señala la clase que se tiene como atributo.

8

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS. 



Herencia: Esta relación existe cuando se define una clase a partir de otra, esto implica que los métodos de la clase creadora o “madre” serán adquiridos por la subclase o clase “hija”. Para indicar una relación de herencia se utiliza el siguiente símbolo.

El triángulo se encuentra conectado a la clase creadora. Dependencia: Es una relación que le permite el acceso a los atributos de una clase, ya sea a una función o a otra clase. En este manual, esta relación se utiliza para expresar el concepto de amistad en C++. Se expresa mediante el siguiente símbolo.

La dirección de la flecha indica, en este ejemplo, que CVehiculo puede acceder a los atributos de CMotor, es necesario recordar que una relación de amistad (por lo menos en C++) no es mutua.

Diagrama de actividades Este diagrama es muy parecido a un diagrama de flujo convencional, la diferencia es que este diagrama sólo indica lo que se debe hacer sin mostrar específicamente las operaciones necesarias para lograrlo. En el caso particular de este manual, el diagrama de actividades representa la estructura del programa principal o main .Consta de tres figuras principales:  Punto de inicio y final. Como su nombre lo indica, estas figuras señalan cuando empieza o finaliza el algoritmo.  Bloque de actividad. Indica la acción a realizar en el algoritmo.  Rombo de decisión. Esta figura equivale a una sentencia si…entonces o a un ciclo dependiendo de la forma en la que se conecte con los demás bloques. Todas estas figuras se conectan mediante flechas las cuales indican la secuencia de las actividades a realizar. A continuación se muestra un ejemplo de un diagrama deactividades.

9

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS.

Usualmente las condiciones de las sentencias si… entonces o de los ciclos se indican mediante comentarios junto a los rombos de decisión.

4. Práctica 0: Funciones básicas del microcontrolador OBJETIVO Lograr una comunicación USB de la computadora al microcontrolador. Hacer un programa que encienda y apague un LED y lea el estado del botón pulsador. Ocupar los métodos de la clase CUsb SendPacket para mandar datos al microcontrolador y ReceivePacket para recibirlos.

MATERIAL   

Microcontrolador PIC 18F45501 1 LED 1 Botón pulsador (Push button)

DESARROLLO La práctica consiste en hacer uso de los métodos de la clase CUsb y crear un programa que: 1. Pida al usuario mandar un 1 para encender un LED. 2. Pida al usuario mandar un 0 para apagarlo. 3. Lea el estado del botón (1 en caso de estar presionado y 0 en caso contrario). Tanto el método SendPacket como el método ReceivePacket de la clase CUsb requieren dos parámetros, un apuntador a un arreglo de tipo BYTE de tamaño2 5 y el tamaño del arreglo. Por ejemplo: 𝑚𝑖_𝑜𝑏𝑗𝑒𝑡𝑜. 𝑆𝑒𝑛𝑑𝑃𝑎𝑐𝑘𝑒𝑡(𝑒𝑠𝑐𝑟𝑖𝑏𝑖𝑟𝑢𝑠𝑏, 5); 𝑚𝑖_𝑜𝑏𝑗𝑒𝑡𝑜. 𝑅𝑒𝑐𝑒𝑖𝑣𝑒𝑃𝑎𝑐𝑘𝑒𝑡(𝑙𝑒𝑒𝑟𝑢𝑠𝑏, 5);

1

El circuito necesario para implementar el microcontrolador está descrito en el apéndice A En realidad el arreglo puede ser de cualquier tamaño, sin embargo debido al programa cargado en el microcontrolador es necesario mandar 5 datos siempre.

2

10

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS. El microcontrolador recibe en el elemento 0 del arreglo un número de control el cual le indica la tarea a desempeñar. A continuación se encuentran los números de control para realizar la práctica 0 (continuando con el ejemplo de los arreglos escribirusb y leerusb).  𝑒𝑠𝑐𝑟𝑖𝑏𝑖𝑟𝑢𝑠𝑏[0] = 0. Apaga todas las funciones del microcontrolador  𝑒𝑠𝑐𝑟𝑖𝑏𝑖𝑟𝑢𝑠𝑏[0] = 1. Habilita la opción de encender o apagar el LED conectado al puerto E (tarjeta ATA NQH) o C (tarjeta Miuva). Si el valor de 𝑒𝑠𝑐𝑟𝑖𝑏𝑖𝑟𝑢𝑠𝑏[1] es 1 el LED encenderá, mientras que si el valor es 0 el LED se apagará.  𝑒𝑠𝑐𝑟𝑖𝑏𝑖𝑟𝑢𝑠𝑏[0] = 14. Lee el estado del botón pulsador conectado al pin E0 (tarjeta ATA NQH) o C0 (tarjeta Miuva) y manda a la computadora un 1 en caso de estar presionado o un 0 en caso contrario. Este valor se almacena en 𝑙𝑒𝑒𝑟𝑢𝑠𝑏[1] cuando se llama el método ReceivePacket. Finalmente, se recomienda definir constantes que hagan referencia a las diferentes funciones del PIC, por ejemplo definir LED_ON con valor 1 para distinguir de manera rápida que se desea encender un LED.

DIAGRAMA DE CLASE Se muestra a continuación el diagrama de clase CUsb.

DIAGRAMA DE ACTIVIDADES Se muestra a continuación el diagrama de actividades.

11

MANUAL DE PRÁCTICAS DE PROGRAMACIÓN ORIENTADA A OBJETOS.

En la siguiente figura se puede observar la ejecución del programa.

Información Adicional A continuación se muestra los pines a los que deben ser conectados cada componente dependiendo de la configuración que se ocupe del circuito. Componente LED Botón pulsador

Tarjeta Miuva E0 C0

Tarjeta ATA-NQH E1 E0

Ambas tarjet...


Similar Free PDFs