Descargar

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