Inicio > Java > Encender Luces Led Con Java y Puerto Paralelo LPT1

Encender Luces Led Con Java y Puerto Paralelo LPT1

Creo varios se nos ha pasado la idea de prender luces mndando las ordenes del computador, ayer me puse a leer un poco y lo logre hacer xD, por eso ahora lo comprto con ustedes.

01 Materiales:

  • 7 Cables (Lo pueden sacar de la tele)
  • 1 Conector LPT1 (Lo pueden sacar de algun impresora vieja)
  • 6 Luces Led (Lo pueden sacar de su minicomponente)
  • 6 Alfileres
  • 1 huincha aisladora
  • JDK y algun ide
  • Cautin,  Soldadura
Cables Conector LPT1 Luces Led Alfileres Huincha Aisladora

02 Informacion:

Bien segun lo que lei del LPT1 pasan 5 volts y una luz led soporta 1.5 volts , necesitamos poner resistencia para que no se nos quemen las ampolletas , hay una formula para sacar los ohm que necesita la resistencia segun el voltaje que le llega a la led , el voltaje que necesita  y la corriente por la led . Pero como no tengo idea de electronica nos saltaremos eso y dejare que se quemen mis led xD (NO SE QUEMAN… creo).

El puerto LPT1 tiene 25 pines que estan distribuidos de la siguiente manera:

  • 8 Pines de Salida desde el D7 al D0
  • 5 Pines de Status S3 al S7
  • 4 Pines de Control C0 al C3
  • 8 Pines de Tierra o Neutro 18 al 25

Lo que debemos hacer es enviar datos a traves de los Pines D7 al D0 y conectar cada led a uno de estos pines Como muestro el siguente diagrama:

Ahora tenemos que enviar la informacion al determinado pin, en la siguiente tabla muestra de mejor manera como enviarle la informacion a un pin especifico:

Nombre: Lectura/Escritura Bit Nº Propiedades
Data Solo Escritura (Salida) Bit 7 Data 7 (Pin 9)
Solo Escritura (Salida) Bit 6 Data 6 (Pin 8)
Solo Escritura (Salida) Bit 5 Data 5 (Pin 7)
Solo Escritura (Salida) Bit 4 Data 4 (Pin 6)
Solo Escritura (Salida) Bit 3 Data 3 (Pin 5)
Solo Escritura (Salida) Bit 2 Data 2 (Pin 4)
Solo Escritura (Salida) Bit 1 Data 1 (Pin 3)
Solo Escritura (Salida) Bit 0 Data 0 (Pin 2)

Entonces:

  • Si queremos enviar datos al Pin D7 tenemos que escribir 2^7
  • Si queremos enviar datos al Pin D5 tenemos que escribir 2^5

03 Armado:

Lo primero es conectar las luces, pero yo las saque de un minicomponente viejo que tenia entre mis cachureos y ya venia listo xD .

Lo siguiente es Soldar los cables segun el diagrama que esta arriba.

Despues soldamos cada cable a algun alfiler para usarlo de pin

Ponemos los alfileres en el LPT1(Todo en base al diagrama de mas arriba)

Y aislamos todo con la huincha aisladora para que no se nos junten los cables y proboque algun daño en nuestra pc

(A mi el diagrama no me resulto del todo, tube que empezar a poner los pines no del D7 , sino que desde el S6, un pin mas a la izquierda).

04 Programacion:

Con toda la conexion hecha ahora solo es cosa de empezar a programar, para eso usaremos la solucion 2 para el puerto paralelo con java que puse anteriormente.

Primero la clase ParallelPort.java

package parport;

public class ParallelPort {

/** The port base address (e.g. 0x378 is base address for LPT1) */
private int portBase;

/** To cunstruct a ParallelPort object,
* you need the port base address
*/
public ParallelPort (int portBase)
{
this.portBase = portBase;
}

/** Reads one byte from the STATUS pins of the parallel port.
*
* The byte read contains 5 valid bits, corresponing to 5 pins of input
* from the STATUS pins of the parallel port (the STATUS is located
* at "portBase + 1", e.g. the STATUS address for LPT1 is 0x379).
*
* This diagram shows the content of the byte:
*
*  Bit | Pin # | Printer Status  | Inverted
* -----+-------+-----------------+-----------
*   7  |  ~11  | Busy            |   Yes
*   6  |   10  | Acknowledge     |
*   5  |   12  | Out of paper    |
*   4  |   13  | Selected        |
*   3  |   15  | I/O error       |
*
* Note that Pin 11 is inverted, this means that "Hi" input on pin
* means 0 on bit 7, "Low" input on pin means 1 on bit 7.
*/
public int read ()
{
return ParallelPort.readOneByte (this.portBase+1);
}

/** Writes one byte to the DATA pins of parallel port.
* The byte is written to the DATA pins of the port. The DATA pins are
* located at the base address of the port (e.g. DATA address for LPT1
* is 0x378).
*
* This diagram shows how the byte is written:
*
*  Bit | Pin # | Printer DATA
* -----+-------+--------------
*   7  |   9   |   DATA 7
*   6  |   8   |   DATA 6
*   5  |   7   |   DATA 5
*   4  |   6   |   DATA 4
*   3  |   5   |   DATA 3
*   2  |   4   |   DATA 2
*   1  |   3   |   DATA 1
*   0  |   2   |   DATA 0
*/
public void write (int oneByte)
{
ParallelPort.writeOneByte (this.portBase, oneByte);
}

/** Reads one byte from the specified address.
* (normally the address is the STATUS pins of the port)
*/
public static native int readOneByte (int address);

/** Writes one byte to the specified address
* (normally the address is the DATA pins of the port)
*/
public static native void writeOneByte (int address, int oneByte);

static
{
System.loadLibrary("parport");
}
}

Ahora Nuestra Aplicacion

Clase Aplicacion.java

import parport.ParallelPort;
import java.util.Scanner;
public class Aplicacion  {
private Scanner scanner = new Scanner(System.in);
private ParallelPort lpt1;
public Aplicacion(){
lpt1 = new ParallelPort(0x378); // 0x378 is normally the base address for the LPT1 port
int opcion=0;
do {
System.out.println("1) Prender PIN 7.");
System.out.println("2) Prender PIN 6.");
System.out.println("3) Prender PIN 5.");
System.out.println("4) Prender PIN 4.");
System.out.println("5) Prender PIN 3.");
System.out.println("6) Prender PIN 2.");
System.out.println("7) Apagar Todas.");
System.out.println("8) Prender Todas.");
System.out.println("9) Salir.");
opcion 	= Integer.parseInt(scanner.nextLine());
lpt1.write(getOpcion(opcion));

}while(opcion!=9);
}

public int getOpcion(int opcion) {
int pin=0;
switch(opcion){
case 1 :
pin = (int)Math.pow(2,3);
break;
case 2 :
pin = (int)Math.pow(2,4);
break;
case 3 :
pin = (int)Math.pow(2,5);
break;
case 4 :
pin = (int)Math.pow(2,6);
break;
case 5 :
pin = (int)Math.pow(2,7);
break;
case 6 :
pin = (int)Math.pow(2,8);
break;
case 7 :
pin = 0;
break;
case 8 :
pin = 255;
break;
}
return pin;
}
}

y por ultimo una clase que contenga el main y cree una nstancia a nuestra aplicacion
Clase Led.java

public class Led {
public static void main(String[] args) {
new Aplicacion();
}
}

05 Test

Aqui dejo un video de como funcionan las luces xDDDD

Saludos!.

  1. diciembre 17, 2008 a las 11:21 pm

    wena wm la llevai
    me da paja probar la wea pero keo bkm
    onda pa hacer luces y ponerselas al arblo de pascua
    ;D

  2. Renato
    diciembre 23, 2008 a las 10:49 am

    esto es genial….! justoloq ue me pidieron… pero me pidieron que loaplique conla venatana de comandos de windows…? :S como lo puedo hacer…? y para esto usas el net beans cierto….? me ayudaria mucho me ayudes con este work…. miemail es anrelues@hotmail.com… te aradecería muchisimo…! saludos y una vez más bien eh…!

  3. cristian
    enero 12, 2009 a las 9:18 am

    MUY BUEN MATERIAL!!!! TE FELICITO MUY BUENO. HE ESTADO BUSCANDO HACE CINCO HORAS EN LA WEB Y NO HABIA NADA DESDE CERO DE LEDS ADEMAS PROGRAMADO EN JAVA.
    MIS FELICITACIONES POR ARMAR ESTE TUTORIAL Y BRINDAR TUS CONOCIMIENTOS AL MUNDO.
    SIN NADA MAS MIL GRACIAS.

    P.D.: PODRIAS EXPLICARLO CON UNA MATRIZ DE LEDS PARA REALIZAR UN CARTEL LUMINOSO?
    SALUDOS DESDE ARGENTINA

  4. Cristhian Ihcamil
    agosto 19, 2010 a las 8:04 am

    me interesa mucho tu trabajo pero me sale este error en java, no se porque…..
    Cualquier ayuda seria bienvenida

    Exception in thread “main” java.lang.UnsatisfiedLinkError: no led in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1030)
    at led.ParallelPort.(ParallelPort.java:25)
    at led.Aplicacion.(Aplicacion.java:21)
    at led.Main.main(Main.java:18)
    Java Result: 1

  5. manuel
    octubre 1, 2010 a las 4:46 am

    esta muy bueno pero estaba viendo tu proyecto una pregunta y para leer como seria ? bueno aunk tambien lo vi k lo tienes en la clase pero nada es para escribir te lo agradeceria muxo saber como leer por ejemplo del protoboard k enciendas un led y k te lo mark en la makina k led esta prendido saludos

  6. alberto
    mayo 12, 2011 a las 9:05 pm

    hola
    tengo que hacer un proyecto en la escuela y esto me esta ayudando mucho. y me podrias ayudar hacer la interfaz grafica y si tienes otros poryectos por puerto paralelo me los podrias enviar o poner un link de donde pueda bajalos
    gracias

    zero_beto0@hotmail.com

  7. irmita
    noviembre 11, 2011 a las 12:46 am

    Gracias ,muchiiiiiiiiiiiiisimas gracias lo necesitaba!!!

  8. irmita
    noviembre 24, 2011 a las 3:49 pm

    gracias!!
    Puedes subir otros ejemplitos similares?

  9. irmita
    noviembre 27, 2011 a las 6:01 pm

    Hola:
    Gracias!!. Por fvor puedes subir las imágenes?, eso falta.

  10. diciembre 9, 2011 a las 10:52 am

    El dominio de la pagina donde subiste las imagenes expiro, espero puedas subirlas de nuevo se ve bueno el tutorial que hiciste. =(

  11. mayo 13, 2013 a las 9:26 pm

    2013, y no hay imagenes, se ve muy completo todo… y no hay imagenes =(

  12. oceballo
    septiembre 1, 2013 a las 10:17 am

    donde encuentro la libreria: “parport”
    que usas en la parte: System.loadLibrary(“parport”);
    donde la descargo?
    sin eso no funciona

  13. obik
    diciembre 6, 2013 a las 5:55 pm

    qe onda chavos pues encontre esta pagina por aqui quisiera saber mas acerca de copmo mandar la señal o correr mi programa por medio del puerto lpt1 db25

  14. Marelyn
    abril 27, 2014 a las 3:44 pm

    Excelente

  1. febrero 3, 2009 a las 3:30 pm

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

A %d blogueros les gusta esto: