Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Juego de Luces Controlado por Computadora (página 3)




Enviado por jaimemontoya



Partes: 1, 2, 3

 

'Se ponen visibles todos los PictureBox
con foto de foco apagado y se ponen invisibles todos los
PictureBox con foto de foco encendido (para reiniciar el sistema de luces
o resetearlo). Se ponen todos los Label en "0".

bulb1off.Visible = True

bulb1on.Visible = False

Label1.Text = "0"

bulb2off.Visible = True

bulb2on.Visible = False

Label2.Text = "0"

bulb3off.Visible = True

bulb3on.Visible = False

Label3.Text = "0"

bulb4off.Visible = True

bulb4on.Visible = False

Label4.Text = "0"

bulb5off.Visible = True

bulb5on.Visible = False

Label5.Text = "0"

bulb6off.Visible = True

bulb6on.Visible = False

Label6.Text = "0"

bulb7off.Visible = True

bulb7on.Visible = False

Label7.Text = "0"

bulb8off.Visible = True

bulb8on.Visible = False

Label8.Text = "0"

'De aquí en adelante es la parte
de programación para mandar valores al
puerto
paralelo.

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario
contenido en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End Sub

Private Sub
encenderfocusButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
encenderfocusButton.Click

'Para quitar sonidos cargados
previamente (si es que los hay).

If
AxWindowsMediaPlayer.currentPlaylist.count > 0
Then 'Si
existiera música cargada, con
la siguiente línea se quita.

AxWindowsMediaPlayer.currentPlaylist.removeItem(AxWindowsMediaPlayer.currentMedia)

End If

'Para que no estén activados los
botones stopmusicButton y playmusicButton a la vez, sino que
solamente uno de los dos.

playmusicButton.Enabled = True

stopmusicButton.Enabled = False

'Se deshabilita el Timer1 para detener
el conteo binario (por si estuviera activado).

Timer1.Enabled = False

'Se ponen visibles todos los PictureBox
con foto de foco encendido y se ponen invisibles todos los
PictureBox con foto de foco apagado (para encender todas las
luces del sistema). Se ponen todos los Label en "1".

bulb1on.Visible = True

Label1.Text = "1"

bulb2on.Visible = True

Label2.Text = "1"

bulb3on.Visible = True

Label3.Text = "1"

bulb4on.Visible = True

Label4.Text = "1"

bulb5on.Visible = True

Label5.Text = "1"

bulb6on.Visible = True

Label6.Text = "1"

bulb7on.Visible = True

Label7.Text = "1"

bulb8on.Visible = True

Label8.Text = "1"

'De aquí en adelante es la parte
de programación para mandar valores al puerto
paralelo.

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

acercadeForm.Show()

End Sub

Private Sub
stopmusicButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stopmusicButton.Click

'Para que no estén activados los
botones stopmusicButton y playmusicButton a la vez, sino que
solamente uno de los dos.

playmusicButton.Enabled = True

stopmusicButton.Enabled = False

'Se deshabilitan todos los
PictureBox.

bulb1on.Enabled = False

bulb1off.Enabled = False

bulb2on.Enabled = False

bulb2off.Enabled = False

bulb3on.Enabled = False

bulb3off.Enabled = False

bulb4on.Enabled = False

bulb4off.Enabled = False

bulb5on.Enabled = False

bulb5off.Enabled = False

bulb6on.Enabled = False

bulb6off.Enabled = False

bulb7on.Enabled = False

bulb7off.Enabled = False

bulb8on.Enabled = False

bulb8off.Enabled = False

'Se deshabilita el Timer1 para detener
el conteo binario (por si estuviera activado).

Timer1.Enabled = False

'Se ponen visibles todos los PictureBox
con foto de foco apagado y se ponen invisibles todos los
PictureBox con foto de foco encendido (para reiniciar el sistema
de luces o resetearlo). Se ponen todos los Label en
"0".

bulb1off.Visible = True

bulb1on.Visible = False

Label1.Text = "0"

bulb2off.Visible = True

bulb2on.Visible = False

Label2.Text = "0"

bulb3off.Visible = True

bulb3on.Visible = False

Label3.Text = "0"

bulb4off.Visible = True

bulb4on.Visible = False

Label4.Text = "0"

bulb5off.Visible = True

bulb5on.Visible = False

Label5.Text = "0"

bulb6off.Visible = True

bulb6on.Visible = False

Label6.Text = "0"

bulb7off.Visible = True

bulb7on.Visible = False

Label7.Text = "0"

bulb8off.Visible = True

bulb8on.Visible = False

Label8.Text = "0"

'De aquí en adelante es la parte
de programación para mandar valores al puerto
paralelo.

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

'Para detener la
música.

AxWindowsMediaPlayer.close()

'Para quitar música cargada
previamente (si es que hay)

If
AxWindowsMediaPlayer.currentPlaylist.count > 0
Then 'Si
existiera música cargada, con la siguiente línea se
quita.

AxWindowsMediaPlayer.currentPlaylist.removeItem(AxWindowsMediaPlayer.currentMedia)

End If

End Sub

Private Sub
playmusicButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles playmusicButton.Click

'Para que no estén activados los
botones stopmusicButton y playmusicButton a la vez, sino que
solamente uno de los dos.

stopmusicButton.Enabled = True

playmusicButton.Enabled = False

'Se deshabilitan todos los
PictureBox.

bulb1on.Enabled = False

bulb1off.Enabled = False

bulb2on.Enabled = False

bulb2off.Enabled = False

bulb3on.Enabled = False

bulb3off.Enabled = False

bulb4on.Enabled = False

bulb4off.Enabled = False

bulb5on.Enabled = False

bulb5off.Enabled = False

bulb6on.Enabled = False

bulb6off.Enabled = False

bulb7on.Enabled = False

bulb7off.Enabled = False

bulb8on.Enabled = False

bulb8off.Enabled = False

'Se deshabilita el Timer1 para detener
el conteo binario (por si estuviera activado).

Timer1.Enabled = False

'Se ponen visibles todos los PictureBox
con foto de foco apagado y se ponen invisibles todos los
PictureBox con foto de foco encendido (para reiniciar el sistema
de luces o resetearlo). Se ponen todos los Label en
"0".

bulb1off.Visible = True

bulb1on.Visible = False

Label1.Text = "0"

bulb2off.Visible = True

bulb2on.Visible = False

Label2.Text = "0"

bulb3off.Visible = True

bulb3on.Visible = False

Label3.Text = "0"

bulb4off.Visible = True

bulb4on.Visible = False

Label4.Text = "0"

bulb5off.Visible = True

bulb5on.Visible = False

Label5.Text = "0"

bulb6off.Visible = True

bulb6on.Visible = False

Label6.Text = "0"

bulb7off.Visible = True

bulb7on.Visible = False

Label7.Text = "0"

bulb8off.Visible = True

bulb8on.Visible = False

Label8.Text = "0"

'Para detener la
música.

AxWindowsMediaPlayer.close()

'Para quitar sonidos cargados
previamente (si es que los hay).

If
AxWindowsMediaPlayer.currentPlaylist.count > 0
Then 'Si
existiera música cargada, con la siguiente línea se
quita.

AxWindowsMediaPlayer.currentPlaylist.removeItem(AxWindowsMediaPlayer.currentMedia)

End If

'Programación de los focos que se
van a encender y sonidos correspondientes a cargar.

If azulRadioButton.Checked
= True Then

'Para encender los focos
azules.

bulb1on.Visible = True

bulb1off.Visible = False

Label1.Text = "1"

bulb5on.Visible = True

bulb5off.Visible = False

Label5.Text = "1"

'Para apagar todos los focos que no sean
azules.

bulb2on.Visible = False

bulb2off.Visible = True

Label2.Text = "0"

bulb3on.Visible = False

bulb3off.Visible = True

Label3.Text = "0"

bulb4on.Visible = False

bulb4off.Visible = True

Label4.Text = "0"

bulb6on.Visible = False

bulb6off.Visible = True

Label6.Text = "0"

bulb7on.Visible = False

bulb7off.Visible = True

Label7.Text = "0"

bulb8on.Visible = False

bulb8off.Visible = True

Label8.Text = "0"

'Para cargar sonido
correspondiente.

Dim song =
AxWindowsMediaPlayer.newMedia("C:UsersJaime
MontoyaDesktopjuegodelucespuertoparalelomyresourcesfocosazulesencendidos.mp3") 'Recordar que al ejecutar el programa en otra
computadora,
ésta dirección ruta del archivo mp3 tiene
que ser actualizada a la ubicación del archivo en la nueva
computadora, pues de lo contrario se estará invocando una
dirección errónea.

AxWindowsMediaPlayer.currentPlaylist.appendItem(song)

'De aquí hacia abajo se programa
la
comunicación con el puerto paralelo.

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

If rojoRadioButton.Checked
= True Then

'Para encender los focos
rojos.

bulb2on.Visible = True

bulb2off.Visible = False

Label2.Text = "1"

bulb6on.Visible = True

bulb6off.Visible = False

Label6.Text = "1"

'Para apagar todos los focos que no sean
rojos.

bulb1on.Visible = False

bulb1off.Visible = True

Label1.Text = "0"

bulb3on.Visible = False

bulb3off.Visible = True

Label3.Text = "0"

bulb4on.Visible = False

bulb4off.Visible = True

Label4.Text = "0"

bulb5on.Visible = False

bulb5off.Visible = True

Label5.Text = "0"

bulb7on.Visible = False

bulb7off.Visible = True

Label7.Text = "0"

bulb8on.Visible = False

bulb8off.Visible = True

Label8.Text = "0"

'Para cargar sonido
correspondiente.

Dim song =
AxWindowsMediaPlayer.newMedia("C:UsersJaime
MontoyaDesktopjuegodelucespuertoparalelomyresourcesfocosrojosencendidos.mp3")
'Recordar que al ejecutar el programa en
otra computadora, ésta dirección ruta del archivo
mp3 tiene que ser actualizada a la ubicación del archivo
en la nueva computadora, pues de lo contrario se estará
invocando una dirección errónea.

AxWindowsMediaPlayer.currentPlaylist.appendItem(song)

'De aquí hacia abajo se programa
la comunicación con el puerto
paralelo.

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

If
amarilloRadioButton.Checked = True Then

'Para encender los focos
amarillos.

bulb3on.Visible = True

bulb3off.Visible = False

Label3.Text = "1"

bulb7on.Visible = True

bulb7off.Visible = False

Label7.Text = "1"

'Para apagar todos los focos que no sean
amarillos.

bulb1on.Visible = False

bulb1off.Visible = True

Label1.Text = "0"

bulb2on.Visible = False

bulb2off.Visible = True

Label2.Text = "0"

bulb4on.Visible = False

bulb4off.Visible = True

Label4.Text = "0"

bulb5on.Visible = False

bulb5off.Visible = True

Label5.Text = "0"

bulb6on.Visible = False

bulb6off.Visible = True

Label6.Text = "0"

bulb8on.Visible = False

bulb8off.Visible = True

Label8.Text = "0"

'Para cargar sonido
correspondiente.

Dim song =
AxWindowsMediaPlayer.newMedia("C:UsersJaime
MontoyaDesktopjuegodelucespuertoparalelomyresourcesfocosamarillosencendidos.mp3")
'Recordar que al ejecutar el programa en
otra computadora, ésta dirección ruta del archivo
mp3 tiene que ser actualizada a la ubicación del archivo
en la nueva computadora, pues de lo contrario se estará
invocando una dirección errónea.

AxWindowsMediaPlayer.currentPlaylist.appendItem(song)

'De aquí hacia abajo se programa
la comunicación con el puerto paralelo.

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

If verdeRadioButton.Checked
= True Then

'Para encender los focos
verdes.

bulb4on.Visible = True

bulb4off.Visible = False

Label4.Text = "1"

bulb8on.Visible = True

bulb8off.Visible = False

Label8.Text = "1"

'Para apagar todos los focos que no sean
verdes.

bulb1on.Visible = False

bulb1off.Visible = True

Label1.Text = "0"

bulb2on.Visible = False

bulb2off.Visible = True

Label2.Text = "0"

bulb3on.Visible = False

bulb3off.Visible = True

Label3.Text = "0"

bulb5on.Visible = False

bulb5off.Visible = True

Label5.Text = "0"

bulb6on.Visible = False

bulb6off.Visible = True

Label6.Text = "0"

bulb7on.Visible = False

bulb7off.Visible = True

Label7.Text = "0"

'Para cargar sonido
correspondiente.

Dim song =
AxWindowsMediaPlayer.newMedia("C:UsersJaime
MontoyaDesktopjuegodelucespuertoparalelomyresourcesfocosverdesencendidos.mp3")
'Recordar que al ejecutar el programa en
otra computadora, ésta dirección ruta del archivo
mp3 tiene que ser actualizada a la ubicación del archivo
en la nueva computadora, pues de lo contrario se estará
invocando una dirección errónea.

AxWindowsMediaPlayer.currentPlaylist.appendItem(song)

'De aquí hacia abajo se programa
la comunicación con el puerto paralelo.

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

ayudaForm.Show()

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

'Código
para controlar el conteo binario con el foco 8.

If Label8.Text =
"0" Then 'Si el foco 8
está apagado.

bulb8on.Visible = True

bulb8off.Visible = False

Label8.Text = "1"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

Else 'Si el
foco 8 está encendido.

bulb8off.Visible = True

bulb8on.Visible = False

Label8.Text = "0"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

'Código para controlar el conteo
binario con el foco 7.

contadorfoco7 = contadorfoco7 + 1

If contadorfoco7 = 2
Then

contadorfoco7 = 0 'Reinicia
el contadorfoco7.

If Label7.Text =
"0" Then 'Si el foco 7
está apagado.

bulb7on.Visible = True

bulb7off.Visible = False

Label7.Text = "1"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

Else 'Si el
foco 7 está encendido.

bulb7off.Visible = True

bulb7on.Visible = False

Label7.Text = "0"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

End If

'Código para controlar el conteo
binario con el foco 6.

contadorfoco6 = contadorfoco6 + 1

If contadorfoco6 = 4
Then

contadorfoco6 = 0 'Reinicia
el contadorfoco6.

If Label6.Text =
"0" Then 'Si el foco 6
está apagado.

bulb6on.Visible = True

bulb6off.Visible = False

Label6.Text = "1"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

Else 'Si el
foco 6 está encendido.

bulb6off.Visible = True

bulb6on.Visible = False

Label6.Text = "0"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

End If

'Código para controlar el conteo
binario con el foco 5.

contadorfoco5 = contadorfoco5 + 1

If contadorfoco5 = 8
Then

contadorfoco5 = 0 'Reinicia
el contadorfoco5.

If Label5.Text =
"0" Then 'Si el foco 5
está apagado.

bulb5on.Visible = True

bulb5off.Visible = False

Label5.Text = "1"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

Else 'Si el
foco 5 está encendido.

bulb5off.Visible = True

bulb5on.Visible = False

Label5.Text = "0"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

End If

'Código para controlar el conteo
binario con el foco 4.

contadorfoco4 = contadorfoco4 + 1

If contadorfoco4 =
16 Then

contadorfoco4 = 0 'Reinicia
el contadorfoco4.

If Label4.Text =
"0" Then 'Si el foco 4
está apagado.

bulb4on.Visible = True

bulb4off.Visible = False

Label4.Text = "1"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

Else 'Si el
foco 4 está encendido.

bulb4off.Visible = True

bulb4on.Visible = False

Label4.Text = "0"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

End If

'Código para controlar el conteo
binario con el foco 3.

contadorfoco3 = contadorfoco3 + 1

If contadorfoco3 =
32 Then

contadorfoco3 = 0 'Reinicia
el contadorfoco3.

If Label3.Text =
"0" Then 'Si el foco 3
está apagado.

bulb3on.Visible = True

bulb3off.Visible = False

Label3.Text = "1"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

Else 'Si el
foco 3 está encendido.

bulb3off.Visible = True

bulb3on.Visible = False

Label3.Text = "0"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

End If

'Código para controlar el conteo
binario con el foco 2.

contadorfoco2 = contadorfoco2 + 1

If contadorfoco2 =
64 Then

contadorfoco2 = 0 'Reinicia
el contadorfoco2.

If Label2.Text =
"0" Then 'Si el foco 2
está apagado.

bulb2on.Visible = True

bulb2off.Visible = False

Label2.Text = "1"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

Else 'Si el
foco 2 está encendido.

bulb2off.Visible = True

bulb2on.Visible = False

Label2.Text = "0"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

End If

'Código para controlar el conteo
binario con el foco 1.

contadorfoco1 = contadorfoco1 + 1

If contadorfoco1 =
128 Then

contadorfoco1 = 0 'Reinicia
el contadorfoco1.

If Label1.Text =
"0" Then 'Si el foco 1
está apagado.

bulb1on.Visible = True

bulb1off.Visible = False

Label1.Text = "1"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

Else 'Si el
foco 1 está encendido.

bulb1off.Visible = True

bulb1on.Visible = False

Label1.Text = "0"

binary378port = Label1.Text + Label2.Text + Label3.Text
+ Label4.Text + Label5.Text + Label6.Text + Label7.Text +
Label8.Text

'Se convierte el valor binario contenido
en la variable "binary378port" a decimal.

valordecimal = 0

For i As Integer =
Len(binary378port) To
1 Step
-1

valordecimal = valordecimal + Val(Mid(binary378port, i,
1)) * 2 ^ (8 – i) 'Toma el
último dígito y lo multiplica por 2 a la cero,
luego el penúltimo por 2 a la uno y así
sucesivamente, pues se está realizando la
conversión de binario a decimal.

Next

'Se convierte el valor decimal
(contenido en la variable "valordecimal") al correspondiente
hexadecimal en tipo Short.

valorshort = CShort(valordecimal)

'Se manda el valor correspondiente al
puerto paralelo para que se enciendan y apaguen los focos
correspondientes.

Out(&H378, valorshort) 'En el puerto 378 (valor hexadecimal) del puerto
paralelo, se manda como salida el valor hexadecimal contenido en
la variable "valorhexadecimal" en tipo Short.

End If

End If

End Sub

End Class

DISEÑO Y ENSAMBLAJE
DEL CIRCUITO ELÉCTRICO

Hasta este
momento se ha dado a conocer toda la parte de software y
programación del Juego de Luces
Controlado por Computadora. Ahora viene lo que podría
llamarse "la parte de hardware" de este sistema,
pues consiste en armar el circuito y diseñarlo para que
sea conectado al puerto paralelo de la computadora
y que los focos respondan correctamente a las instrucciones que
se les dé a través de la computadora. Pero antes de
ello se presentará una breve introducción explicativa sobre el puerto
paralelo de la PC.

PUERTO PARALELO DE LA
COMPUTADORA

La imagen de los
conectores del puerto paralelo (DB 25) se muestra a
continuación:

El puerto paralelo contiene a su vez tres puertos, que
son los siguientes:

Puerto de datos (pines 2 al
9):
es el PORT 888 (378 hexadecimal) y es de sólo
escritura. Por
este registro se
envían los datos al exterior de la PC. CUIDADO: ¡no
se deben enviar señales
eléctricas al ordenador por estos pines!

Puerto de estado (pines
15, 13, 12, 10 y 11):
es el PORT 889 (379 hexadecimal) y es
de sólo lectura. Por
aquí se envían señales eléctricas al
ordenador. De este puerto sólo se utilizan los cinco bits
de más peso, que son el bit 7, 6, 5, 4 y 3 teniendo en
cuenta que el bit 7 funciona en modo invertido.

Puerto de control (pines 1,
14, 16 y 17):
es el correspondiente al PORT 890, y es de
lectura/escritura, es decir, se podrán enviar o recibir
señales eléctricas, según las necesidades
que se tengan. De los 8 bits de este registro sólo se
utilizan los cuatro de menor peso, o sea el 0, 1, 2 y 3, con un
pequeño detalle: los bits 0, 1, y 3 están
invertidos.

En esta imagen se pueden ver los tres puertos (conocidos
como registros), sus
bits y los pines asignados a cada uno de ellos. La imagen
corresponde a un conector DB-25 (Hembra):

COMPONENTES
NECESARIOS

DESCRIPCIÓN

CANTIDAD

Resistencia de 1,2 Kohm

8 unidades

Resistencia de 470 Ohm

8 unidades

Optoacopladores MOC3011, o su
equivalente

8 unidades

Zócalos para circuito integrado de 6
patitas

8 unidades

Placa para circuito impreso de 12×6
cm

1 unidad

Triac BT137 o su equivalente

8 unidades

Cable paralelo para impresora

1 unidad

Enchufes para 220 Vac

8 unidades

Cable de alimentación de
220 Vac

1 unidad

Caja plática para el
montaje

1 unidad

DIAGRAMA
CIRCUITAL

NOTA SOBRE LOS COMPONENTES NECESARIOS Y DIAGRAMA
CIRCUITAL:
el circuito puede hacerse en una
protoboard en vez de utilizar placa para circuito impreso,
realizando las conexiones con alambre. Dependiendo del
país en el que se encuentre la persona,
podría no tener la posibilidad de trabajar con 220 Vac,
por lo cual deberán hacerse las modificaciones
correspondientes a la tabla de componentes necesarios y al
diagrama circuital. El funcionamiento del software y la parte de
programación de este sistema (presentada al inicio de este
documento) está garantizada; sin embargo, la parte de los
componentes y el ensamblaje eléctrico deberá ser
ajustado de acuerdo al país de residencia del
desarrollador de este proyecto
(realmente de acuerdo a las tensiones o voltajes y frecuencias de
corriente alterna
con la que se cuente en cada país, según lo que
proporcionen los proveedores de
energía
eléctrica). Será responsabilidad del electricista ajustar los valores y
tomar las medidas de precaución respectivas para el buen
funcionamiento de este sistema.

TENSIONES O VOLTAJES Y
FRECUENCIAS DE CORRIENTE ALTERNA UTILIZADAS POR DIFERENTES
PAÍSES

Como referencia para el desarrollo de
este circuito según el país en que se encuentre
el(los) encargado(os) del desarrollo de este circuito, se
presentan las tensiones o voltajes y frecuencias de corriente
alterna utilizadas por diferentes países:

CONCLUSIÓN

Desarrollar este proyecto tiene grandes beneficios, pues
además de la utilidad y las
múltiples aplicaciones prácticas que tiene este
sistema para uso residencial, sirve como base o fundamento para
la creación de nuevos proyectos
similares, donde el único límite es la
imaginación y creatividad,
pues existen muchas secuencias de luces que se pueden generar,
así como también se puede utilizar el puerto
paralelo para hacer muchos otros circuitos
similares o diferentes, utilizando como base el programa
presentado, el cual puede ser modificado o personalizado de
acuerdo a las preferencias o necesidades de cada
persona.

Antes de la llegada de las conexiones USB, las
impresoras se
conectaban a la computadora utilizando el puerto paralelo,
conocido también como DB25. Sin embargo, como se ha
demostrado, el puerto paralelo puede ser utilizado para mucho
más que únicamente impresoras. Es innumerable la
cantidad de circuitos y aplicaciones útiles que se pueden
desarrollar a través de los pines del puerto
paralelo.

Este esfuerzo, aunque requiere mucho tiempo y
dedicación, es de gran importancia de manera especial para
los estudiantes de ingeniería, pues además de requerir
poner en práctica habilidades de programación,
requiere también aplicar conocimientos de electrónica, por lo que constituye un
proyecto de gran valor para el aprendizaje, y
de gran beneficio por las muchas aplicaciones que se le puede
dar. Una de las aplicaciones más obvias sería en el
área de instalaciones
eléctricas residenciales, que cada foco se encuentren
en un lugar diferente de una casa, y que a través de la
computadora se puedan controlar todas las luces,
encendiéndolas y apagándolas según las
necesidades y de forma creativa, innovadora y completamente
original.

BIBLIOGRAFÍA

  • Digitalperuana: Los Especialistas en Luces y Efectos
    Especiales para Discotecas. Juego de Luces Controlado por
    una Computadora.
    Extraído en enero, 2008, de

Autores

Jennifer Esmeralda Chacón Carranza

Marvin Eliezer Peña Figueroa

Jaime Oswaldo Montoya
Guzmán

http://www.jaimemontoya.com

Mario Javier Quintana Rodríguez

Santa Ana, 11 de abril de 2008

El Salvador

Universidad Católica de Occidente

Facultad de Ingeniería y Arquitectura

Asignatura: Microprocesadores
y Ensambladores

Catedrático: Ing. José Francisco Andaluz
Guzmán

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente 

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