Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Leds de casa controlados por Lenguaje C




Enviado por Juan Marcelo Monzón



  1. Objetivos
  2. Marco
    teórico
  3. Armado del
    circuito
  4. Código
    lenguaje C

Objetivos

  • Efectuar un programa en un lenguaje C para el
    encendido y apagado de luces de una casa

  • Ejecutar el armado de un circuito para el encendido
    y apagado de leds mediante un puerto paralelo

Marco
teórico

  • Visual Basic

Los compiladores de Visual Basic generan código
que requiere una o más librerías de enlace
dinámico para que funcione, conocidas comúnmente
como DLL (sigla en inglés de dynamic-link library); en
algunos casos reside en el archivo llamado MSVBVMxy.DLL (siglas
de "MicroSoft Visual Basic Virtual Machine x.y", donde x.y es la
versión) y en otros en VBRUNXXX.DLL ("Visual Basic Runtime
X.XX"). Estas bibliotecas DLL proveen las funciones
básicas implementadas en el lenguaje, conteniendo rutinas
en código ejecutable que son cargadas bajo
demanda
en tiempo de ejecución. Además de las
esenciales, existe un gran número de bibliotecas del tipo
DLL con variedad de funciones, tales como las que facilitan el
acceso a la mayoría de las funciones del sistema operativo
o las que proveen medios para la integración con otras
aplicaciones.

Dentro del mismo Entorno de desarrollo integrado (IDE)
de Visual Basic se puede ejecutar el programa que esté
desarrollándose, es decir en modo intérprete (en
realidad pseudo-compila el programa muy rápidamente y
luego lo ejecuta, simulando la función de un
intérprete puro). Desde ese entorno también se
puede generar el archivo en código ejecutable (exe); ese
programa así generado en disco puede luego ser ejecutado
sin requerir del ambiente de programación (incluso en modo
stand alone), aunque sí será necesario que las
librerías DLL requeridas por la aplicación
desarrollada se encuentren también instaladas en el
sistema para posibilitar su ejecución.

El propio Visual Basic provee soporte para empaquetado y
distribución; es decir, permite generar un
módulo instalador que contiene al programa
ejecutable y las bibliotecas DLL necesarias para su
ejecución. Con ese módulo la aplicación
desarrollada se distribuye y puede ser instalada en cualquier
equipo (que tenga un sistema operativo compatible).

Así como bibliotecas DLL, hay numerosas
aplicaciones desarrolladas por terceros que permiten disponer de
variadas y múltiples funciones, incluso mejoras para el
propio Visual Basic; las hay también para el empaquetado y
distribución, y hasta para otorgar mayor funcionalidad al
entorno de programación (IDE).

Monografias.com

Armado del
circuito

  • Puerto Paralelo:

El puerto paralelo (protocolo centronics) se utiliza
generalmente para manejar impresoras. Sin embargo, dado que este
puerto tiene un conjunto de entradas y salidas digitales, se
puede emplear para hacer prácticas experimentales de
lectura de datos y control de dispositivos. Esta obra pretende
dar a conocer los aspectos más relevantes del puerto
paralelo, de modo que se pueda utilizar como una interface de
entrada/salida que funcione de modo subordinado a rutinas de
software.   Este trabajo surge de la necesidad de una
guía para la práctica de la adquisición
de datos
y control de dispositivos como una
alternativa al uso de Controladores Lógicos Programables
(PLC) y Tarjetas de Adquisición de Datos (DAC), de modo
que se puedan hacer experiencias con sistemas en
Tiempo-Real.

Monografias.com

  • Leds:

Un led es un componente electrónico cuya
función principal es convertir la energía
eléctrica en una fuente luminosa, la palabra led proviene
del acrónimo ingles Light Emmiting Diode o diodo emisor de
luz.

Específicamente un led corresponde a un tipo
especial diodo el cual transforma la energía
eléctrica en luz, su principio de funcionamiento se basa
en la emisión de fotones (luz) cuando los electrones
portadores de la electricidad atraviesan el diodo, dicho
fenómeno se conoce como electroluminiscencia

  • Protoboard:

Es una especie de tablero con orificios, en la cual se
pueden insertar componentes electrónicos y cables para
armar circuitos. Como su nombre lo indica, esta tableta sirve
para experimentar con circuitos electrónicos, con
lo que se asegura el buen funcionamiento del mismo.

  • Circuito integrado

Un circuito integrado (CI), también
conocido como chip microchip,
es una pastilla pequeña de material semiconductor, de
algunos milímetros cuadrados de área, sobre la
que se fabrican circuitos
electrónicos generalmente
mediante fotolitografía y que está
protegida dentro de un encapsulado de plástico
cerámica. El encapsulado posee conductores
metálicos apropiados para hacer conexión entre
la pastilla y un circuito impreso.

  • Resultados obtenidos

Al finalizar nuestro proyecto, obtuvimos un
prototipo de lo que podría ser una casa inteligente. Se
construyó una casa la cual consta de 8 leds de presencia
los cuales hacen que se prenda la luz de las habitaciones como
también se apaguen.

O como también se prendan todos o se
apaguen todos

  • Sala

  • Cocina

  • Dormitorio 1

  • Dormitorio 2

  • Dormitorio 3

  • Pasillo

  • Baño 1

  • Baño 2

Este proyecto necesito de una
inversión un poco mayor a la que habíamos
considerado, ya que perdimos mucho material en las pruebas y en
el armado de los circuitos.

Monografias.com

Monografias.com

Código
lenguaje C

Option Explicit

Public Out_TTL As Byte 'contiene el BYTE
a sacar por el puerto

Public In_Port As Integer 'continen la
direccion de lectura del Registro de Estado

Public Out_Port As Integer 'contiene la
direcc.para escribir al Registro de Datos

Public Ctr_Port As Integer 'contiene la
direcc.para escribir al Registro de Control

Private Sub Form_Load() 'procedimiento
inicial

'Configura la COMBOLIST
cmbLptSelect

cmbLptSelect.AddItem "0x378"

cmbLptSelect.AddItem "0x278"

cmbLptSelect.AddItem "0x3BC"

'Establece LPT1 como default

cmbLptSelect.ListIndex = 0

SetLPTAddress 'estable direccion base del
LTP

Port_Reset 'reseteo salidas
TTL

End Sub

Private Sub Form_QueryUnload(Cancel As
Integer, UnloadMode As Integer)

Cancel = 1 'evita que se salga mediante
la 'X'

End Sub

Private Sub Form_Unload(Cancel As
Integer) 'si sale del programa

Port_Reset 'entonces reseteo salidas
TTL

End

End Sub

Private Sub cmdSalir_Click() 'si presiono
SALIR, reseteo

Port_Reset 'las salidas TTL y salgo del
programa

End

End Sub

Private Sub cmdReset_Click()

Port_Reset 'las salidas TTL y salgo del
programa

chkOut2.Value = 0

chkOut3.Value = 0

chkOut4.Value = 0

chkOut5.Value = 0

chkOut6.Value = 0

chkOut7.Value = 0

chkOut8.Value = 0

chkOut9.Value = 0

chkOut1.Value = 1

chkOut14.Value = 1

chkOut16.Value = 0

chkOut17.Value = 1

End Sub

Private Sub Port_Reset() 'procedimiento
para resetear salidas TTL

PortOut Out_Port, 0

PortOut Ctr_Port, 11 'Bits 0, 1 y 3
trabajan invertidos, un 11=1011 => todo en CERO

End Sub

Private Sub
cmbLptSelect_Click()

SetLPTAddress 'llamo rutina para
determinarar la direccion

'base del nuevo LPT elegido

End Sub

Private Sub
cmdHelpOnLpt_Click()

frmHelpOnLpt.Show

End Sub

Private Sub SetLPTAddress() 'establece la
direccion correpondiente

'al puerto seleccionado

Select Case
cmbLptSelect.ListIndex

Case Is = 0

Out_Port = &H378

Case Is = 1

Out_Port = &H278

Case Is = 2

Out_Port = &H3BC

End Select

In_Port = Out_Port + 1

Ctr_Port = Out_Port + 2

End Sub

Private Sub chkOut2_Click() 'invierto
estado de DATA 0

If chkOut2.Value = 1 Then

SetPortBit Out_Port, 0

chkOut2.Caption = "Data 0 (pin 2) = 1 –
ALTO"

Else

ClrPortBit Out_Port, 0

chkOut2.Caption = "Data 0 (pin 2) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut3_Click() 'invierto
estado de DATA 1

If chkOut3.Value = 1 Then

SetPortBit Out_Port, 1

chkOut3.Caption = "Data 1 (pin 3) = 1 –
ALTO"

Else

ClrPortBit Out_Port, 1

chkOut3.Caption = "Data 1 (pin 3) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut4_Click() 'invierto
estado de DATA 2

If chkOut4.Value = 1 Then

SetPortBit Out_Port, 2

chkOut4.Caption = "Data 2 (pin 4) = 1 –
ALTO"

Else

ClrPortBit Out_Port, 2

chkOut4.Caption = "Data 2 (pin 4) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut5_Click() 'invierto
estado de DATA 3

If chkOut5.Value = 1 Then

SetPortBit Out_Port, 3

chkOut5.Caption = "Data 3 (pin 5) = 1 –
ALTO"

Else

ClrPortBit Out_Port, 3

chkOut5.Caption = "Data 3 (pin 5) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut6_Click() 'invierto
estado de DATA 4

If chkOut6.Value = 1 Then

SetPortBit Out_Port, 4

chkOut6.Caption = "Data 4 (pin 6) = 1 –
ALTO"

Else

ClrPortBit Out_Port, 4

chkOut6.Caption = "Data 4 (pin 6) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut7_Click() 'invierto
estado de DATA 5

If chkOut7.Value = 1 Then

SetPortBit Out_Port, 5

chkOut7.Caption = "Data 5 (pin 7) = 1 –
ALTO"

Else

ClrPortBit Out_Port, 5

chkOut7.Caption = "Data 5 (pin 7) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut8_Click() 'invierto
estado de DATA 6

If chkOut8.Value = 1 Then

SetPortBit Out_Port, 6

chkOut8.Caption = "Data 6 (pin 8) = 1 –
ALTO"

Else

ClrPortBit Out_Port, 6

chkOut8.Caption = "Data 6 (pin 8) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut9_Click() 'invierto
estado de DATA 7

If chkOut9.Value = 1 Then

SetPortBit Out_Port, 7

chkOut9.Caption = "Data 7 (pin 9) = 1 –
ALTO"

Else

ClrPortBit Out_Port, 7

chkOut9.Caption = "Data 7 (pin 9) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut1_Click() 'invierto
estado de STROBE (este pin trabaja invertido)

If chkOut1.Value = 1 Then

ClrPortBit Ctr_Port, 0

chkOut1.Caption = "STROBE (pin 1) = 1 –
ALTO"

Else

SetPortBit Ctr_Port, 0

chkOut1.Caption = "STROBE (pin 1) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut14_Click() 'invierto
estado de AUTOFD (este pin trabaja invertido)

If chkOut14.Value = 1 Then

ClrPortBit Ctr_Port, 1

chkOut14.Caption = "AUTOFD (pin 14) = 1 –
ALTO"

Else

SetPortBit Ctr_Port, 1

chkOut14.Caption = "AUTOFD (pin 14) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut16_Click() 'invierto
estado de INIT

If chkOut16.Value = 1 Then

SetPortBit Ctr_Port, 2

chkOut16.Caption = "INIT (pin 16) = 1 –
ALTO"

Else

ClrPortBit Ctr_Port, 2

chkOut16.Caption = "INIT (pin 16) = 0 –
BAJO"

End If

End Sub

Private Sub chkOut17_Click() 'invierto
estado de SLCTIN (este pin trabaja invertido)

If chkOut17.Value = 1 Then

ClrPortBit Ctr_Port, 3

chkOut17.Caption = "SLCTIN (pin 17) = 1 –
ALTO"

Else

SetPortBit Ctr_Port, 3

chkOut17.Caption = "SLCTIN (pin 17) = 0 –
BAJO"

End If

End Sub

Private Sub Timer1_Timer() 'timer de 50ms
para refrescar en

Dim Lectura As Byte 'pantalla el estado
de las

Dim Estado(4) As Byte
'entradas

Dim Estado_Str(4) As String

Dim Bucle As Byte

Lectura = PortIn(In_Port) 'leo el puerto
de entrada

'filtro solo los bit's que necesito
conocer

Estado(0) = Lectura And &H8 '=
00001000 en Binario (bit 3/ìn 15)

Estado(1) = Lectura And &H10 '=
00010000 en Binario (bit 4/ìn 13)

Estado(2) = Lectura And &H20 '=
00100000 en Binario (bit 5/ìn 12)

Estado(3) = Lectura And &H40 '=
01000000 en Binario (bit 6/ìn 10)

Estado(4) = Lectura And &H80 '=
10000000 en Binario (bit 7/ìn 11)

For Bucle = 0 To 4

If Estado(Bucle) <> 0
Then

Estado_Str(Bucle) = "1"

Else

Estado_Str(Bucle) = "0"

End If

Next Bucle

lblInput15.Caption = "ERROR (pin 15) = "
& Estado_Str(0)

lblInput13.Caption = "SLCT (pin 13) = "
& Estado_Str(1)

lblInput12.Caption = "PE (pin 12) = "
& Estado_Str(2)

lblInput10.Caption = "ACK (pin 10) = "
& Estado_Str(3)

lblInput11.Caption = "BUSY (pin 11) = "
& Estado_Str(4)

End Sub

 

 

Autor:

Avilés Ana

Coronel Marilia

Fuentes Alvaro

Monzón Marcelo

Sevilla Mickaela

UNIVERSIDAD CATOLICA BOLIVIANA

SEMESTRE 1 / 2013

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter