Descargar

Encendido de LEDS mediante puerto paralelo (JAVA)


  1. Materiales
  2. Información
  3. Armado
  4. Programación

edu.red

Materiales

6 luces leds

1 maqueta

Varios palitos de chupete

1 protoboard

Cautin, soldadura

Cinta aislante

Cable

Información

Se debe conocer previamente algunos datos para hacer el encendido de focos con el puerto paralelo. Primeramente se debe saber que el puerto paralelo libera 5 voltios de voltaje, y los leds solo soportan 1.5 Voltios. Existe una formula que sirve para sacar los ohmnios que necesita la resistencia dependiendo el voltaje que llega para el led, también el voltaje que necesita y la corriente que pasa por el led.

Lo que se quiere lograr hacer, o el objetivo de todo esto es lograr encender los leds con un circuito simple siendo programados en java.

A continuación daremos algunas definiciones de algunos materiales que se utilizan para este proyecto:

RESISTENCIA:

Se le llama resistencia eléctrica a la igualdad de oposición que tienen los electrones para desplazarse a través de un conductor. La unidad de resistencia en el Sistema Internacional es el ohmio, que se representa con la letra griega omega (O), en honor al físico alemán George Ohm, quien descubrió el principio que ahora lleva su nombre. La resistencia está dada por la siguiente fórmula:

edu.red

En donde es el coeficiente de proporcionalidad o la resistividad del material.

La resistencia de un material depende directamente de dicho coeficiente, además es directamente proporcional a su longitud (aumenta conforme es mayor su longitud) y es inversamente proporcional a su sección transversal (disminuye conforme aumenta su grosor o sección transversal)

Descubierta por Georg Ohm en 1827, la resistencia eléctrica tiene un parecido conceptual a la fricción en la física mecánica. La unidad de la resistencia en el Sistema Internacional de Unidades es el ohmio (O). Para su medición, en la práctica existen diversos métodos, entre los que se encuentra el uso de un ohmnímetro. Además, su cantidad recíproca es la conductancia, medida en Siemens.

Además, de acuerdo con la ley de Ohm la resistencia de un material puede definirse como la razón entre la diferencia de potencial eléctrico y la corriente en que atraviesa dicha resistencia, así:1

edu.red

Donde es la resistencia en ohmios, es la diferencia de potencial en voltios e es la intensidad de corriente en amperios.

También puede decirse que "la intensidad de la corriente que pasa por un conductor es directamente proporcional a la longitud e inversamente proporcional a su resistencia"

Según sea la magnitud de esta medida, los materiales se pueden clasificar en conductores, aislantes y semiconductor. Existen además ciertos materiales en los que, en determinadas condiciones de temperatura, aparece un fenómeno denominado superconductividad, en el que el valor de la resistencia es prácticamente nulo.

LED:

Los ledes se usan como indicadores en muchos dispositivos y en iluminación. Los primeros ledes emitían luz roja de baja intensidad, pero los dispositivos actuales emiten luz de alto brillo en el espectro infrarrojo, visible y ultravioleta.

Debido a sus altas frecuencias de operación son también útiles en tecnologías avanzadas de comunicaciones. Los ledes infrarrojos también se usan en unidades de control remoto de muchos productos comerciales incluyendo televisores e infinidad de aplicaciones de hogar y consumo doméstico.

PROTOBOARD:

El "protoboard","breadboard" (en inglés)o "placa board" es un tablero con orificios conectados eléctricamente entre sí, habitualmente siguiendo patrones de líneas, en el cual se pueden insertar componentes electrónicos y cables para el armado y prototipado de circuitos electrónicos y sistemas similares. Está hecho de dos materiales, un aislante, generalmente un plástico, y un conductor que conecta los diversos orificios entre sí. Uno de sus usos principales es la creación y comprobación de prototipos de circuitos electrónicos antes de llegar a la impresión mecánica del circuito en sistemas de producción comercial.

El puerto LPT1 o puerto paralelo tiene 25 pines que están distribuidos de la siguiente manera:

edu.red

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 través de los Pines D7 al D0 y conectar cada led a uno de estos pines Como Nuestro el siguiente diagrama:

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

edu.red

Por ejemplo, si se desea enviar datos al Pin D7 se debe escribir 2^7. Si se desea enviar datos al Pin D5 se debe escribir 2^5

Armado

Primero se debe conectar los cables en el puerto paralelo que posteriormente se conectaran a los leds según un diagrama preestablecido.

Luego alistamos las conexiones de los leds en la maqueta. edu.red

Despues soldamos los cables a los leds en la maqueta y hacemos correr el programa.

Programación

La programación de este proyecto es sencilla, sin embargo hay que hacer algunas modificaciones previas a la computadora para activar el puerto paralelo:

Primero para la activación:

Paso 1.- Desbloquear el puerto de la impresora.

Para desbloquear el puerto de la impresora ingrese al panel de control y haga clic en SISTEMA Y SEGURIDAD

edu.red

Luego clic en hardware y sonido

edu.red

Clic en administrador de dispositivos:

edu.red

Ahora seleccione puerto de impresora:

edu.red

Clic al botón derecho del mouse y elegir propiedades:

edu.red

edu.red

En CONFIGURACIÓN DE PUERTO, seleccione USAR CUALQUIER TIPO DE INTERRUPCIÓN

ACEPTAR todo y terminar. Con lo que tenemos habilitado el puerto a nivel sistema operativo.

Paso 2.- Copiar archivos.- Descargue el archivo comprimido javacomm20-win32–ok.rar del aula virtual, descomprima este archivo e inicie las copia de la siguiente manera. De la carpeta FilecomAPI, copie el archivo parport.dll a la carpeta bin de READY TO PROGRAM.

edu.red

Ahora copiar el archivo UserPort.sys a windows

edu.red

Asegúrese de dejar el archivo en el directorio drivers :

edu.red

Realice las siguiente copias de los archivos al disco duro:

  • win32com.dll: guardarlo en la carpeta de ..Javajdk1.5.0_02jrebin

  • javax.comm.properties: copiarlo en la carpeta ..Javajdk1.5.0_02jrelib

  • comm.jar: copiarlo en la carpeta ..Javajdk1.5.0_02jrelibext

edu.red

Ejecute el programa User Port:

y clic en aceptar y clic en salir:

edu.red

Estos pasos se pueden realizar tanto en Windows 7 como en Windows xp.

El siguiente paso es el programa en Java, consta de dos pasos el primero es el de crear la clase ParalellPort:

package parport; // <— el archivo ParallelPort.class se guarda

// autom·ticamente en la carpeta 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 readStatus ()

{

return ParallelPort.readOneByte (this.portBase+1);

}

/*Read a data byte from parallel port */

public int readData ()

{

return ParallelPort.readOneByte (this.portBase);

}

/** 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 writeData (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");

}

}

En el programa Ready to Program, se debe compilar el anterior programa, y se lo debe guardar en la carpeta de este programa.

Luego viene el programa principal que es el siguiente:

import parport.ParallelPort;

import java.io.*;

public class Led {

//——————————————

public static class Aplicacion {

private ParallelPort lpt1;

public Aplicacion()throws IOException

{

int pin=0;

BufferedReader w=new BufferedReader(new InputStreamReader(System.in));

lpt1 = new ParallelPort(888); // 0x378 normalmente es utilizado para impresora LPT1

int opcion=0;

do {

System.out.println("1) Prender PIN 1.");

System.out.println("2) Prender PIN 2.");

System.out.println("3) Prender PIN 3.");

System.out.println("4) Apagar Todas.");

System.out.println("5) Prender Todas.");

System.out.println("6) Salir.");

opcion = Integer.parseInt(w.readLine());

switch(opcion){

case 1 :

pin = (int)Math.pow(2,2);

try

{

Thread.sleep(500);

}

catch(InterruptedException e)

{

e.printStackTrace();

}

//potencias desde 2 elevado a 0

break;

case 2 :

pin = (int)Math.pow(2,3);

try

{

Thread.sleep(500);

}

catch(InterruptedException e)

{

e.printStackTrace();

}

break;

case 3 :

pin = (int)Math.pow(2,4);

try

{

Thread.sleep(500);

}

catch(InterruptedException e)

{

e.printStackTrace();

}

break;

case 4 :

pin = 0;//apagar todo

break;

case 5 :

pin = 255; //prender todo

break;

}

lpt1.write(pin);//manda a la impresora

}while(opcion!=8);

}

}

//———————————-

public static void main(String[] args)throws IOException

{

new Aplicacion();

}

}

este programa puede prender 3 leds, pero se pueden agregar hasta ocho modificando el programa.

Este programa debe estar guardado en la misma carpeta que el anterior programa, si no, no correrá.

Antes de terminar, es importante copiar el archivo parport.dll en la carpeta del ready to program, todos estos archivos están disponibles en el archivo javacomm20, que se puede descargar de aquí: http://www.4shared.com/rar/7MrbbEKF/javacomm20-win32.htm

Ahora solamente es necesaria la creatividad para hacer diferentes cosas con los leds, como maquetas con habitaciones que se encienden, entre otras.

 

 

Autor:

Bazan Heredia Pablo

Cantuta Cabas Melvin

Carpio Mendoza Ivan

Llanos Sangüesa Iván

Ramirez Gamarra Fabian

Valdes Rejas Benjamin

Materia: Programación I

Fecha: 02/12/13

edu.red