Вы находитесь на странице: 1из 9

Computación Docente: Ing.

Daniel Díaz MSc


Período Lectivo: Septiembre 2017
Programación Aplicada
Febrero 2018

CARRERA: Computación ASIGNATURA: Programación Aplicada


 Carlos Andrade
INTEGRANTES  Alexander Coba
 Sthefany Sánchez

PROYECTO FINAL

OBJETIVO

Implementar los conocimientos obtenidos en clases atravesó del siguiente proyecto este constara de
arreglos, hilos, archivos y directorios, entre otros al igual que se implementara la utilización de arduino
el objetivo es unir los conocimientos aprendidos en clase para crear un juego funcional y óptimo.

INTRODUCCION
El juego propuesto consiste en que lo jueguen dos personas primero los jugadores tendrán que ingresar
sus nombres y escoger el color del carro que deseen para que el juego se abra , todos estos datos serán
guardados en el programa; el juego se trata de que tendrán que desviar obstáculos con el carro escogido
por medio de los jostin, cada jugador contara con tres vidas, es decir cada que choque con algún
obstáculo que se encuentra en la pista las vidas serán descontadas y de esa manera el jugador que pierda
sus 3 vidas primero perderá, si en un tiempo previsto ninguno de los jugares ha perdido entonces
quedaran empates; el resultado también será guardado.
El juego fue realizado con el lenguaje de programación java y arduino, los algoritmos ingresados son
conectados con el arduino para que de esa manera se pueda jugar.

HILOS

Resolución CS N° 076-04-2016-04-20
Computación Docente: Ing. Daniel Díaz MSc
Período Lectivo: Septiembre 2017
Programación Aplicada
Febrero 2018

Un hilo (Thread) es un proceso en ejecución dentro de un programa, la clase Thread es la que encapsula
todo el control necesario sobre los hilos de ejecución (threads). Hay que distinguir claramente un objeto
Thread de un hilo de ejecución o thread. Esta distinción resulta complicada, aunque se puede simplificar
si se considera al objeto Thread como el panel de control de un hilo de ejecución (thread). [CITATION
Agu \l 2058 ]

Métodos de Clase
Estos son los métodos estáticos que deben llamarse de manera directa en la clase Thread.
 currentThread()
 yield
 sleep( long)
Métodos de Instancia
Aquí no están recogidos todos los métodos de la clase Thread, sino solamente los más interesantes,
porque los demás corresponden a áreas en donde el estándar de Java no está completo
 start()
 run()
 stop()
 suspend()
 resume()
 setPriority( int )
 getPriority()
 setName( String )
 getName()
 setName()
Sincronización

 Los hilos se comunican generalmente a través de campos y los objetos que tienen esos campo
 Es una forma de comunicación eficiente, pero puede plantear errores de interferencias entre hilo
 La sincronización es la herramienta para evitar este tipo de problemas, definiendo órdenes
estrictos de ejecución
ARCHIVOS Y DIRECTORIOS

El trabajo que se realiza con archivos y carpetas pertenece a 3 categorías:

1. Organizar y administrar archivos y carpetas. Puede realizar las tareas básicas de archivos y carpetas
tales como crear, eliminar, copiar y mover archivos y carpetas, o tareas más avanzadas, como cambiar
Resolución CS N° 076-04-2016-04-20
Computación Docente: Ing. Daniel Díaz MSc
Período Lectivo: Septiembre 2017
Programación Aplicada
Febrero 2018

las propiedades de un archivo o de una carpeta y administrar carpetas compartidas.

2. Buscar archivos y carpetas. Se puede afinar el enfoque de las búsquedas de archivos y carpetas
mediante criterios adicionales de búsqueda tales como la fecha, el tipo, el tamaño del archivo o la
distinción entre mayúsculas y minúsculas. También se puede ampliar el alcance de las búsquedas de
archivos si se utilizan caracteres comodín o se especifican expresiones regulares.

3. Proteger archivos y carpetas. Se pueden proteger los archivos y las carpetas mediante las
características de seguridad de Windows XP Profesional como las cuentas de usuario y de grupo, las
directivas de grupo, las carpetas compartidas y los permisos de impresoras, la auditoría y los derechos de
usuario. Si se tiene instalado el sistema de archivos NTFS se pueden establecer permisos de archivo y de
carpeta, y cifrar archivos y carpetas. [ CITATION ECU \l 2058 ]

La clase File tiene tres constructores

 File(String path)
 File(String path, String name)
 File(File dir, String name)

El parámetro path indica el camino hacia el directorio donde se encuentra el archivo, y name indica el


nombre del archivo. Los métodos más importantes que describe esta clase son los siguientes:

 String getName()
 String getPath()
 String getAbsolutePath()
 boolean exists()
 boolean canWrite()
 boolean canRead
 boolean isFile()
 boolean isDirectory()
 boolean isAbsolute()
 long lastModified()
 long length()
 boolean mkdir()
 boolean mkdirs()
 boolean renameTo(File dest);
 boolean delete()
 String[] list()
 String[] list(FilenameFilter filter)

ARDUINO
Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno
de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.
Por otro lado Arduino nos proporciona un  software consistente en un entorno de desarrollo (IDE) que
Resolución CS N° 076-04-2016-04-20
Computación Docente: Ing. Daniel Díaz MSc
Período Lectivo: Septiembre 2017
Programación Aplicada
Febrero 2018

implementa el lenguaje de programación de arduino y el bootloader ejecutado en la placa. La principal


característica del software de programación y del lenguaje de programación es su sencillez y facilidad de
uso
¿Para qué sirve Arduino? 
Arduino se puede utilizar para desarrollar elementos autónomos, conectándose a dispositivos e
interactuar tanto con el hardware como con el software. Nos sirve tanto para controlar un elemento,
pongamos por ejemplo un motor que nos suba o baje una persiana basada en la luz existente es una
habitación, gracias a un sensor de luz conectado al Arduino, o bien para leer la información de una
fuente, como puede ser un teclado, y convertir la información en una acción como puede ser encender
una luz y pasar por un display lo tecleado.[ CITATION Apr \l 2058 ]

CONEXIÓN DE ARDUINO CON JAVA

1. No se puede programar Arduino utilizando el lenguaje Java

Arduino y Java son dos entes independientes. Arduino es una plataforma de hardware libre con su
propio lenguaje, mientras que Java es un lenguaje de programación de alto nivel. Java necesita para
su ejecución la Máquina Virtual de Java, la cual, hasta ahora no puede ser ejecutada desde Arduino.

Sin embargo esto no significa que no podamos crear programas en Java que le envíen instrucciones
a Arduino entregándonos el control de circuitos electrónicos desde una interfaz en la computadora.

2. Arduino se comunica con la computadora por medio de Comunicación Serial


Resolución CS N° 076-04-2016-04-20
Computación Docente: Ing. Daniel Díaz MSc
Período Lectivo: Septiembre 2017
Programación Aplicada
Febrero 2018

Esta es la forma más sencilla de comunicación que existe entre Arduino y la computadora, ya que
aprovecha el puerto USB por medio de un convertidor USB-Serie.

Resulta que para poder comunicar nuestras aplicaciones en Java con Arduino debemos aprovechar
la comunicación serial, lo cual es perfectamente posible si se implementan las librerías adecuadas.

3. Para permitirle a Java establecer comunicación con el Puerto Serie se requiere instalar los
drivers de la librería RXTX

La librería RXTX es una compilación de código que le permite a los programadores en Java
establecer comunicación con el Puerto Serie. Alguna vez escribí un post que hace referencia a
los requisitos para comunicar Arduino con Java. jhjhgjghjgh

Al crear un programa en Java y establecer comunicación con Arduino, se está remplazando el


Monitor Serial por una interfaz gráfica

4. Para cada tipo de comunicación existen métodos especiales

Se pueden dar tres tipos de situaciones… 


Cuando se necesita transmitir datos de Java a Arduino 
Cuando se necesita transmitir datos de Arduino a Java 
Cuando se necesita enviar y recibir datos entre Arduino y Java 

5. Java se da cuenta cada vez que Arduino le envía datos

Cuando es necesario enviar datos de Arduino a Java, se utiliza un SerialPortEventListener, el cual


requiere de la implementación de un método abstracto, SerialEvent().
El SerialEvent() se ejecuta cada vez que se recibe un dato en el Puerto Serie. Los datos en el Puerto Serie
se reciben caracter por caracter, lo que significaría un problema ya que si enviamos un mensaje de texto,
recibiremos el mensaje letra a letra. Usando el métodoReceiveData() obtenemos estos caracteres. Sin
embargo, también existe el métodoMessageAvailable() que devuelve un valor true cuando se haya
finalizado la recepción de cualquier mensaje enviado desde Arduino con el método Serial.println().
[ CITATION Ant16 \l 2058 ]
LIBRERÍA PANAMAHITEK_ARDUINO

Resolución CS N° 076-04-2016-04-20
Computación Docente: Ing. Daniel Díaz MSc
Período Lectivo: Septiembre 2017
Programación Aplicada
Febrero 2018

La librería incluye 3 clases principales.

 La clase PanamaHitek_Arduino es la encargada de manejar todas las conexiones y la


comunicación con Arduino.
 La clase PanamaHitek_MultiMessage incluye las herramientas necesarias para recibir múltiples
mensajes de forma simultánea en Java.
 La clase PanamaHitek_DataBuffer almacena datos de forma ordenada, permite la visualización
en una tabla y la exportación de datos a MS Excel (archivo .xlsx)

Adicionalmente cuenta con 4 clases dedicadas a la gestión de gráficos en tiempo real, a través de la
utilización de las dependencias de JFreeCharts.

 PanamaHitek_DualDialChart permite hacer graficas tipo reloj analógico con dos agujas


 PanamaHitek_SingleDialChart permite hacer graficas tipo reloj analógico con una aguja
 PanamaHitek_ThermometerChart permite hacer graficas tipo termómetro
 PanamaHitek_TimeLineChart permite hacer gráficas de línea de múltiples datos en función del
tiempo

Versión 3.0.0

La nueva y mejorada version de la librería. Se ha agregado nuevos recursos que permiten almacenar
datos recibidos y exportarlos en hojas de cálculo de MS Excel o graficarlos en tiempo real con la ayuda
de las librerías POI y JFreeCharts. También se ha agregado ejemplos de uso de las principales
características de la librería.[ CITATION Ant \l 2058 ]

Clase principal de Java

Resolución CS N° 076-04-2016-04-20
Computación Docente: Ing. Daniel Díaz MSc
Período Lectivo: Septiembre 2017
Programación Aplicada
Febrero 2018

Interfaz donde se ingresa los datos de cada jugador

Resolución CS N° 076-04-2016-04-20
Computación Docente: Ing. Daniel Díaz MSc
Período Lectivo: Septiembre 2017
Programación Aplicada
Febrero 2018

Juego

Arduino

CONCLUSIONES:

Resolución CS N° 076-04-2016-04-20
Computación Docente: Ing. Daniel Díaz MSc
Período Lectivo: Septiembre 2017
Programación Aplicada
Febrero 2018

 El juego cumplió con todas las expectativas que necesitamos fluye con hilos y su control es
perfecto al conectarlo con el Arduino mediante dos análogos capaces de controlar a los dos
carros con dos mandos adaptados para el juego.
 El microcontrolador de Arduino posee lo que se llama una interfaz de entrada, que es una
conexión en la que podemos conectar en la placa diferentes tipos de periféricos. La
información de estos periféricos que conectes se trasladará al microcontrolador.

RECOMENDACIONES:

 Cuando colocamos los carros en la pista adherirlos al movimiento en hilos para que se puedan
mover libremente y no distorsionen el funcionamiento, al igual que los obstáculos para que
salgan al tiempo de que el carro pueda esquivarlos.
 Cuando conectamos el juego con el Arduino tenemos que darle la sensibilidad necesaria a los
análogos para que el carro sea controlable por el usuario caso contrario se moverá muy rápido por
la pista y no se podrá esquivar los obstáculos.

Referencias
Aprendiendo Arduino. (s.f.). Obtenido de
https://aprendiendoarduino.wordpress.com/2016/09/25/que-es-arduino/

ECURED. (s.f.). Obtenido de https://www.ecured.cu/Archivo_(Inform%C3%A1tica)

Froufe, A. (s.f.). spidersoft. Obtenido de http://dis.um.es/~bmoros/Tutorial/index.html

Garcia, A. (s.f.). GitHub. Obtenido de https://github.com/PanamaHitek/PanamaHitek_Arduino

González, A. G. (16 de 08 de 2016). blogspot. Obtenido de http://arduino-robotica-sotelo-


gonzalez.blogspot.com/2016/08/10-cosas-que-necesitas-saber-para.html

Resolución CS N° 076-04-2016-04-20

Вам также может понравиться