'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 | 8 unidades |
Zócalos para circuito integrado de 6 | 8 unidades |
Placa para circuito impreso de 12×6 | 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 | 1 unidad |
Caja plática para el | 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
- The Code Project – Your Development Resource.
Resources from Parallel Port using Inpout32.dll.
Extraído en marzo, 2008, de http://www.codeproject.com/KB/vb/Inpout32_read.aspx
- Ero-Pic – Una Gran Colección de Tutoriales
de Electrónica. Puerto Paralelo. Extraído
el 10 de abril, 2008, de http://perso.wanadoo.es/luis_ju/puerto/port01.html
- ASÍ FUNCIONA. Tensiones o Voltajes y
Frecuencias de Corriente Alterna Utilizadas por Diferentes
Países. Extraído el 10 de abril, 2008,
de
http://www.asifunciona.com/tablas/voltaje_paises/voltaje_paises_2.htm
Autores
Jennifer Esmeralda Chacón Carranza
Marvin Eliezer Peña Figueroa
Jaime Oswaldo Montoya
Guzmán
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
Página anterior | Volver al principio del trabajo | Página siguiente |