Electrónica, General, Puerto Paralelo

Encendiendo Leds – Parte II

En la primera parte se vio como encender algunos leds con el puerto paralelo de manera muy fácil mandando una simple y sencilla instrucción desde el DEBUG. Esto estuvo muy bien como demostración pero cuando se requiere hacer más que encender unos simples Leds necesitamos hacer uso de algún lenguaje de programación como Visual C#, C/C++, Ensamblador, Java, etc.

En esta entrega seguiremos encendiendo leds pero comenzaremos a usar JAVA. Usaremos el IDE NetBeans.

El ejercicio consiste sencillamente en hacer que los Leds prendan secuencialmente, es decir, de izquierda-derecha e inmediatamente derecha-izquierda y repetir el ciclo indefinidamente.

Para poder trabajar con el puerto paralelo como ya comenté en post anteriores, es necesario una libreria, en nuestro caso usaremos parport.dll , pero como Java es un lenguaje multiplataforma esta claro que no puede hacer uso directo de una dll. La solución es hacerlo mediante JNI (Java Native Interface). Así que bien, para hacerlo todo más fácil, adjunto la clase en un archivo .jar de tal forma que desde NetBeans en el inspector de proyectos–Libaries deberas agregarla dando click derecho y seleccionando Add JAR/Folder.

Finalmente ya que tienes tu proyecto creado y agregaste la libreria JAR, descarga esta carpeta, ahi encontrarás dos carpetas más, en una viene el archivo JAR que les mencionó y en otra el código fuente, descomprimen las dos, agregar la libreria JAR al contexto de NetBeans tal como lo explique y copiamos la otra carpeta del código fuente a la carpeta src de su proyecto que es en donde NetBeans coloca los ficheros .java y .form

Ahora si, desde NetBeans podrás ver el código fuente y la vista de diseño. Una vez que revises el código fuente tranquilo, no te espantes!

El código lo hicieron unos compañeros que no tienen la mínima idea de programación, durante toda la carrera nunca programarón (¿como llegarón tan lejos?… ni idea) pero en la materia de Arquitectura de Computadoras el catedrático se dio cuenta de su nula idea de programación y los sentencio a que si no programaban una sola práctica sencilla los reprobaba en el curso. Así que bueno, me di a la tarea de instruirlos pero tampoco hago milagros de un día para otro y ese código que descargarón es precisamente programado por ellos (es lo mejor que pudieron hacer).

Desde luego que no erá necesario usar tantos CASE. Con dos ciclos y algún acumulador se conseguia esto, pero decidi poner ese código para que sean ustedes quienes practiquen este ejercicio sencillicimo y mejoren esas líneas de código.

El circuito creo yo que no vale la pena explicar, es el mismo de aqui: https://mundobyte.wordpress.com/2007/12/22/encendiendo-leds/

Solo hay que poner los 8 leds en los pines 2,3,4,5,6,7,8,9 alimentar a tierra el PIN 25 y ya!

Poco a poco iré poniendo ejercicios si bien son de juguete, se acercan algo a proyectos reales pero a escala! Por ejemplo, más adelante pondré esta práctica:

Una consola selecciona una melodía por dos pesos o bien tres melodías por 5 pesos. La consola puede seleccionar un máximo de 15 melodías diferentes con duración cada una de 10s: tiene dos detectores, uno para monedas de $2 y otro de $5. Se dispone de un teclado de 5 teclas, 4 de ellas para seleccionar la(s) melodía(s) a tocar (el teclado envía los datos en binario) y la otra para indicar melodía seleccionada. La consola tocara las piezas en el orden que fueron seleccionadas.

Como ven, es una práctica de juguete, pero se acerca mucho a una práctica real, de hecho podría ser la base para hacer alguna pequeña consola , rockola, etc.

Hasta la próxima Saludos!!

32 comentarios en “Encendiendo Leds – Parte II

  1. Hola Ascari, pues muy interesante tu guia para trabajar con puertos paralelos, justo tengo que hacer algo parecido, en realidad es mandar una orden de apagado o encedido de leds, pero mediante una computadora que este conectada mediante LAN a otra que si tenga el protoboard, bueno la comunicacion entre ellas es sencillo, pero eh tenido ciertos problemas para mandar la orden para que estos leds se enciendan o apaguen, estaba probando con el parport. dll, pero como que eh tenido algunos problemas, eh intentado ver tu ejemplo y descargarme el .jar, pero es imposible, crees que podrias arreglar esos links por favor…. nos leemos
    Salu2 desde Perú…

  2. HOla!

    Primeramente gracias por visitar el blog de reciente creación, es bueno leer que este tipo de información puede ser útil para algún estudiante o persona interesada en el tema afin.

    Respecto al problema con los enlaces de descarga, ya esta solucionado!!

    SIn embargo, debo aclararte que el archivo .jar que deseas descargar, no contiene otra cosa que la clase JNI que hace uso de la libreria parport.dll

    ¿Qué tipo de problemas has tenido?… Recuerda que en windows xp debes abrir primero los puertos con la herramienta UsePort y posteriormente deberas colocar parport.dll en el System32, pues el archivo jar que contiene la clase JNI llamada ParallelPort, carga tal libreria y los lugares en los que intenta buscar es precisamente en el system32 o en la carpeta actual desde donde ejecutas tu programa.

    Por otro lado, si los errores que te dan al trabajar con tal libreria son que al momento de enviar un dato al LPT te cierra el programa o algo parecido, podria ser causado por el MODO en el que esta configurado el PUerto. Debes revisar que en el SETUP del BIOS se encuentre en modo ECP… Por ejemplo en una BIOS Phoenix tal opción esta en Integrated Peripherals– Super IO Device— Parallel Port Mode

    El encender leds es algo muy sencillo, posiblemente si es la primera vez que trabajes con el PUerto Paralelo te confunda un poco, pero realmente es en extremo sencillo que no dudo puedan lograrlo.

    Recibe un cordial saludo!!

  3. hola….. me parece muy bueno tu sitio……pero tengo un problema no puedo descargar las carpetas……. podrías por favor enviarla a mi mail………… desde ya gracias……

  4. Hola!!!
    esta muy interesante esta informacion …ademas es justo lo que estoy necesitando urgente para mi proyecto …ya que tengo hecha la protoboard y funciona por el debug pero no la he logrado hacer funcionar bajo java estoy usando la API comm pero no funciona ……me gustaria si me pudieras ayudar con los links que tienes para descargar ya que no funcionan ….puertoparalelo.zip y pruba.zip
    cordial saludo ….!!!

  5. Hola windoctor, me podria decir donde puedo conseguir un libro sobre la JNI porque quisiera hacer un programa hibrido con ensamblador, o algun ejemplo.

    Gracias y hasta luego.

  6. mi buen amigo esta genial tu blong pero los enlaces no funcan no se si podrias corregir ese problema es que estoy en un proyecto donde necesito esos
    datos ademas como seria para puerto serial???
    si poses un codigo para practicar serial genial gracias

  7. NECESITO AYUDA
    NECESITO COMUNICAR 2 PCS MEDIANTE EL PUERTO USB
    NO SE SI SE PUEDA
    PERO NECESITO SABER K VOY A USAR
    Y ME PIDIERON QUE USE UNA INTERFAZ PARA EN UN EQUIPO ENVIAR
    Y EN EL OTRO RECIBIR EL ARCHIVO

  8. Gracias por compatir un poco de tu conocimiento, tengo q realizar un proyecto para una materia llamada interfaces, lo que deceo realizar es el control de un motor a pasos.

    Bueno quisiera saber si me podrias enviar el codigo de java para el control de los leds, es q no se pueden descargar de los links, mi correo es rgm65_5@hotmail.com.

    Gracias…

  9. Hola!

    He corregido el enlace para descargar los archivos y los he puesto en una sola carpeta, así que ya pueden descargarlos.

    Respecto a lo del motor a pasos es realmente muy sencillo, también hice el control de uno de ellos, si el tiempo me lo permite espero poder escribir algo sencillo en el blog y desde luego dejar el código fuente.

    Saludos!!

  10. Muchas gracias windoctor por corregir el link, y les dire q tal me fue con el control del motor a pasos, estamos en contacto cuidence byee…

  11. He estado un poco desconectado del proyecto, he tenido algunas otras tareas, apenas pude checar los archivos del link, mmm, tuve un error al ejecutarlo, podrias darme solución ??? gracias.. espero puedas ayudarme

  12. esto es lo q me aparece

    Exception in thread “AWT-EventQueue-0” java.lang.UnsatisfiedLinkError: no PARPORT in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
    at java.lang.Runtime.loadLibrary0(Runtime.java:822)
    at java.lang.System.loadLibrary(System.java:993)
    at parport.ParallelPort.(ParallelPort.java:93)
    at prueba.prueba.(prueba.java:27)
    at prueba.prueba$3.run(prueba.java:162)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

  13. hola muy interesante pero me gustaria saber como lo hago en linux, necesito hacer un proyecto en el cual manejo el puerto pero debo hacerlo en linux

  14. oye…marca error en la libreria de parallelport, habra que importar alguna libreria ? urgente…ademas muestra un error, que dice que el package parport no existe, porfa

  15. oye ricardo gallardo…tengo el mismo problema que tu…como lo solucionaste….aparecen eexactamente los mismos errores por fa contesta pronto….

  16. Hola a todos. Una consulta. Alguno de ustedes probo de controlar led por el puerto de impresora pero remotamente a travez de una pagina web? Mi idea es hacer algo en java capas de ser controlado desde cualquier pagina.¿para que diran? Bueno la primera utilidad seria para el encendido de luces a distancia es decir algo de domotica, pero lo que mas me intereza es controlar 2 motores para controlar una camara web remotamente. Todos sabemos que esto esta mas que estudiado pero tambien sabemos que no es barato y no esta hecho por nosotros. Hoy dia tengo todo funcionando exepto que me falta poder controlar desde una aplicacion java cargada en mi pagina web (hosteada en la misma pc donde esta el cotrol de leds). Saludos y buen año pd: quien tenga ganas de ayudarme a concluir este proyecto no dude en contactarme a tecniconic@hotmail.com

  17. Hola a todos, sabian que se puede controlar unas luces domesticas, etc, a distancia de Km, por medio de celular a celular, a traves de mensajes de texto y marcado de nuemros. interesados con el proyecto….

    1. Hola!! te escribo por que necesito hacer exactamente lo que me dices, ya tengo la conexion desde el celular hasta el pc,

      pero no he logrado saber como conectar el pc a un electrodomestico o un bombillo. con java claro.

      si me puedes colaborar escribeme a marobin1@gmail.com

  18. Saludos Windoctor, tal vez digas que soy muy ingenuo, pero la verdad me sale el mismo error del parport, ya intente mover el parport en el system32, tal como lo expones, y luego tambien intente mover el parport a la carpeta SRC donde esta el codigo junto a la JNI que busca el parport, pero no tuve exito, he pensado que a lo mejor tengo mal colocado el JNI pero pues no se en que otro sitio colocarlo, me continua saliendo el mismo error que expone Ricardo Gallo.
    ¿Podrias ayudarme? de antemano gracias y pues felicidades por el muy buen blog que te has creado.

  19. hola, yo de nuevo, eh logrado que funcionara, permiteme explicar, lo que hacia era sacar parport que tenia Xp en la carpeta de drivers, y era lo que usaba.
    lo que hizo que funcionara es: utilice una parport.dll de otro sitio e hice lo que expones, bueno gracias!!

  20. Muchisimas gracias por la libreria que se conecta al parport, habia estado jugando con el codigo nativo un rato pero no habia logrado que funcionara, ahora intentare poner un timer para que la cosa se vea bonita, en caso de que quede el programita lo subo, otra vez gracias

  21. hola!!
    Tengo problemas al ejecutar la aplicacion en la salida de netbeans me aparece este resultado…

    run:
    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    # EXCEPTION_PRIV_INSTRUCTION (0xc0000096) at pc=0x1000107b, pid=4356, tid=4636
    #
    # JRE version: 6.0_20-b02
    # Java VM: Java HotSpot(TM) Client VM (16.3-b01 mixed mode, sharing windows-x86 )
    # Problematic frame:
    # C [parport.dll+0x107b]
    #
    # An error report file with more information is saved as:
    # C:\Users\Leopoldo\Documents\NetBeansProjects\Portpar\hs_err_pid4356.log
    #
    # If you would like to submit a bug report, please visit:
    # http://java.sun.com/webapps/bugreport/crash.jsp
    # The crash happened outside the Java Virtual Machine in native code.
    # See problematic frame for where to report the bug.
    #
    Java Result: 1
    GENERACIÓN CORRECTA (total time: 6 seconds)

    Alguien podria ayudarme de antemando les agradesco

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s