Como Controlar el Vuelo de un Helicoptero de Juguete Atravez del Puerto Paralelo

#42
ok ya estuvo ...

reviza que no haga ningun corto circuito y que sea seguro... para conectar al puerto
estoy preparando el primer codigo en vbasic para comenzar con las pruebas...

regreso...

Ok
metete al visual studio y metete al visual basic...
creas un nuevo proyecto
y agregas un boton(button)...

debe quedar asi
Ver el archivo adjunto 41198
despues das doble clic en el boton y te aparece una hoja con unos codigo

copia lo que falte de esto y debe quedar igual...

Código:
    Public Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Data As Byte)
    Public Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As Byte
    Public Declare Function IsDriverInstalled Lib "io.dll" () As Boolean
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As Byte
        If IsDriverInstalled Then
            If PortIn(888) = 1 Then PortOut(888, 0) Else PortOut(888, 1)
        Else
            MsgBox("no se conecto")
        End If
    End Sub
debe queda asi...
Dibujo1.JPG
 
Última edición:
#46
Código:
esta linea declara el punto de acceso a la libreria io.dll
del punto de acceso se define una funcion "portout" con los parametro del puerto paralelo que es un entero normalmente es el &H378 en hexadeciamal o el 888 en decimal... y el dato que se va a enviar..
    Public Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Data As Byte)

del punto de acceso se define una funcion "portin" con el parametro del puerto paralelo que es un entero
normalmente es el &H378 en hexadeciamal o el 888 en decimal...
    Public Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As Byte

esta funcion es para saber si la libreria io.dll esta instalada correctamennte... 
    Public Declare Function IsDriverInstalled Lib "io.dll" () As Boolean


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click <-esto lo declara vb como referencia al procedimiento para el control button
        Dim a As Byte <-esta se me olvido quitarla no sirve para nada
        If IsDriverInstalled Then <- aqui le decimos que si la funcion driver esta en verdadero entonces ejecuto hasta que encuentre un endif
            If PortIn(888) = 1 Then PortOut(888, 0) Else PortOut(888, 1)<-aqui le decimos que si el puerto 888 o sea el del paralelo esta en 1 entonces envie un cero al mismo puerto si no estaba en uno entonces que le envie un 1 osea que cada que pulsemos ese boton va a prender y apagar el led que pusimos en el circuito... 
        Else <- si el driver esta mal instalador entonces
            MsgBox("no se conecto") <-muestra un dialogo diciendo que no se encontro el driver
        End If <- se termina el if 
    End Sub<-se termina el procedimiennto del button
debe queda asi...
 
#47
Ya lo Entendi el Codigo. Ahora como haria para programar cada uno de los controles (Arriba, Abajo , Derecha, Izquierda)??
 
Última edición:
#48
Ya lo Entendi el Codigo. Ahora como haria para programar cada uno de los controles (Arriba, Abajo , Derecha, Izquierda)??
mmm...

mira voy a poner un diagrama nuevo muy parecido al que hemos manejado pero con cuatro leds uno en cada opto para ya conectarlo al puerto y preparo un codigo con los cuatro...

si ya entendiste como se hace con uno no te va a ser dificil entender el nuevo...
peroooooo... me muero de sueño te parece si lo subo mañana??? :D

si el control es digital ya casi esta!!!...
 
#51
Luis...
completa los leds con un Led en cada opto....
como en la siguiente imagen
Dibujo.JPG
el db25 ya debe esta libre para conectar al puerto...
los que tiene D1, D2, D3 y D4 son los diodos led recuerda que la parte plana del led va en direccion al negativo en este caso a la resistencia...

En el formulario agregas tres botones mas y le pones el nombre en las propiedades de cada uno...
Dibujo1.JPG

pon este codigo...
Código:
    Public Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Data As Byte)
    Public Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As Byte
    Public Declare Function IsDriverInstalled Lib "io.dll" () As Boolean
    Public a As Byte 'define y hace publica la variable a

    ' rutina al presionar el button1 osea la de para arriba  
    Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
        a = PortIn(888) + 1 'lee el estado del puerto y agrea 1 para encender el bit 0 del puerto
        PortOut(888, a) ' envia el nuevo dato al puerto
    End Sub
    ' rutina al soltar el button1 osea la de para arriba  

    Private Sub Button1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseUp
        a = PortIn(888) - 1 'lee el estado del puerto y quita 1 para apagar el bit 0
        PortOut(888, a) 'envia el nuevo dato al puerto
    End Sub
    ' rutina al presionar el button3 osea la de para abajo  

    Private Sub Button3_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button3.MouseDown
        a = PortIn(888) + 2 'lee el estado del puerto y agrea 2 para encender el bit 1 del puerto
        PortOut(888, a) 'envia el nuevo dato al puerto
    End Sub
    ' rutina al soltar el button3 osea la de para abajo  

    Private Sub Button3_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button3.MouseUp
        a = PortIn(888) - 2 'lee el estado del puerto y quita 2 para apagar el bit 1 del puerto
        PortOut(888, a) 'envia el nuevo dato al puerto
    End Sub
    ' rutina al presionar el button2 osea la de para la derecha  

    Private Sub Button2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button2.MouseDown
        a = PortIn(888) + 4 'lee el estado del puerto y agrea 4 para encender el bit 2 del puerto
        PortOut(888, a) 'envia el nuevo dato al puerto
    End Sub
    ' rutina al soltar el button2 osea la de para la derecha  

    Private Sub Button2_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button2.MouseUp
        a = PortIn(888) - 4 'lee el estado del puerto y quita 4 para apagar el bit 2 del puerto
        PortOut(888, a) 'envia el nuevo dato al puerto
    End Sub
    ' rutina al presionar el button4 o sea la de para la izquierda

    Private Sub Button4_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button4.MouseDown
        a = PortIn(888) + 8 'lee el estado del puerto y agrea 8 para encender el bit 3 del puerto
        PortOut(888, a) 'envia el nuevo dato al puerto
    End Sub
    ' rutina al soltar el button4 o sea la de para la izquierda

    Private Sub Button4_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button4.MouseUp
        a = PortIn(888) - 8 'lee el estado del puerto y quita 8 para apagar el bit 3 del puerto
        PortOut(888, a) 'envia el nuevo dato al puerto
    End Sub

    'recuerda que en binario se toma de derecha a izquierda 
    ' son 8 bits del puerto entonces seria...
    ' 0 0 0 0 8 4 2 1 
    'por eso se suma el 1 o 2 o 4 o 8
los eventos mouseup o mousedown se pueden definir presionando el evento como en nla sig. figura...
Ver el archivo adjunto 41215
seleccionas el control (en la pantalla donde dice button4) y despues el evento (en nla pantalla donde dice mouseup) y agregas su codigo...

si todo esta bien... y no hay ninguna duda conectas el db25 al puerto paralelo ejecutas el programa y presiona los botones...

Preguntas???
 
Última edición:
#52
Voy a PROBAR LO QUE ME PASASTE
...

Conecte el db25 al puerto paralelo de la Computadora y si Funciona.....
De ahi necesitare el control del helicoptero para adaptarlo verdad..
una consulta los optoacopladores los puedo soldar con un pedazo de cable de red para concetarlo con la resistencia o se suelda (estaño) defrente con la resistencia...??
 
Última edición:
#56
Subo la imagen del protoboard y la conexion con el mando...

Todo funciona Ok.
DSC07470.JPG

el curioso control tiene tres posicones con una palanca y dos con la otra
quedando asi en el db25
pin->Accion

2->Arriba
3->Estabilizado
4->Adelante
5->Izquierda
6->Derecha

si ningun opto esta energizado es hacia Abajo...

asi se armo el proto y se hicieron las pruebas...
proto1.JPG


Por Razones de seguirad se utilizaron CASCO y ANTEOJOS protectores.... naaaaaa...

solo se le quitaron las helices de la nave!!! :D

Solo falta el desarrollo del Software Houston!!!
 
Última edición:
#57
..
antes de los avances del proyecto me gustaría aclarar que para identificar el GND del control remoto solo tuvimos que ver cual era el que estaba conectado al negativo a la alimentación, bastante obvio no??? :D
bueno resulta que después de identificar todas las funciones que tiene con cada uno de los selectores lo conectamos al computador se hizo el programa para controlarlo con las flechas y la nave comenzó a hacer cosas muy extrañas, así que nos pusimos a verificar todo de nuevo, programa, puerto, optoacopladores funciones de los selectores, todo de todo... y por fin encontramos el problema.... y queda anotado en la Bitacora...

"No olviden Cargar las baterias bien al Efectuar las pruebas de vuelo... puede presentar movimientos erráticos" :LOL:

(en este caso las pilas del artefacto no duran mucho)

Todo sigue viento en popa... solo falta depurar el código y ponerlo en el registro...!!!

cambio y fuera Houston!!!
 
Última edición:
#58
jojo.. que bueno que esta este post... hey lubeck, no te olvides de subirte un videito para compartir la alegria de ver un post que trata de aeromodelos y que llega a buen termino jejeje... lo estuve siguiendo desde el principio pero, no quise meter la cuchara para que no se venga abajo y llegue a termino. como veras, la cabala dio resultado:) mis felicitaciones muchachos.
saludosss
 
#59
Hola lubeck
Estuve tratando de comunicarme atravez del chat pero no se que pasaria con mi linea del internet, la cuestion que cuando hago funcionar la aplicacion que controla el helicopterono me controla deacuerdo a los botones que colocamos en la aplicacion. No se que pasa no se si me podrias brindar tu ayuda. Gracias de Antemano:aplauso:(y):apreton:
 
#60
vaya lubeck eso si que es ayuda,

yo tengo una laptop que obvio viene sin puerto paralelo y por dármelas de mago me compre un conversor de usb a paralelo para otra cosa de programar VCPLDs (son como micro-controladores) y no me sirvió, creo que es solo para impresoras, sera que para esto sirve?????
 

Adjuntos

Arriba