'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
- 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 |