Uso de la programación basic para detección y control a través del puerto de juegos en computadoras antiguas (página 2)
Enviado por Jorge Moreno
Valor de n | Devuelve el valor de la coordenada | ||
0 | Coordenada X palanca A | ||
1 | Coordenada Y palanca A | ||
2 | Coordenada X palanca B | ||
3 | Coordenada Y palanca B |
Ejemplo tomemos este siguiente programa para ver como funciona en qbasic bajo Windows con partición FAT o ms-dos. (Es probable que para Windows xp o vista,deberá usarse un emulador de ms-dos.)
CLEAR
CLS
INICIO:
t$ = UCASE$(INKEY$)
IF t$ = CHR$(27) THEN GOTO fin
CLS
x = STICK(0)
y= STICK(1)
LOCATE 1,1
PRINT x,y
GOTO INICIO
fin :
End
Con el joystick conectado,podemos observar que la pantalla marcará valores enteros comprendidos entre 0 y 255 los cuales podemos tomar como referencia de un valor alto o bajo.Para salir del ciclo infinito,pulsamos la tecla ESCAPE.
Ahora queremos observar gráficamente que está pasando con la señal que está entrando a la computadora;necesitamos agregar un CONTADOR al código anterior este puede ser muy pequeño o muy grande, dependiendo de lo que se quiera hacer aquí.observemos que donde conectemos el cable y su correspondiente patilla dependerá que instrucción (stick (0) ,stick (1) ,stick(2),stick(3) ) dependerá la presentación en la pantalla.
CLEAR
CLS
SCREEN 12
Contador =0
INICIO:
t$ = UCASE$(INKEY$)
IF t$ = CHR$(27) THEN GOTO Fin
CLS
Rem puede ser STICK(1) o STICK(2) o STICK (3)
Rem observar el numero de los pines
x = STICK(0)
rem inicializa gráfica cuando se alance la cordenada x=640
if contador =640 then
contador=0
cls
end if
contador =contador+1
LOCATE 1,1
PRINT contador,x
LINE -(contador,x),12
GOTO INICIO
Fin:
End
Ahora vamos a mostrar un código más elaborado en qbasic donde solamente se representen en coordenadas rectangulares en una resolución de 640×480.también es posible hacer el cambio a coordenadas polares ,representación circular, gráfico espectral .todas estas representaciones se encuentran detalladas en los libros de estadística y matemáticas de nivel superior para su respectiva consulta.
Con respecto a la parte de programación gráfica es que la información que llegue del dispositivo se puede grabar a un archivo secuencial en forma de par de coordenadas X e Y y luego procesarse en EXCEL .Todo dependerá de la habilidad, lógica e imaginación del programador.
Se conectaron de los cables de la siguiente manera:
1º) patilla nº 3 (Posición X del Joystick A) cuya entrada es de voltaje positivo (+)
2º) cable negativo a la patilla nº 4 (GND) Tierra.
Siempre se debe tener en cuenta el voltaje de salida del circuito a la computadora para no causar daños a esta.
LISTADO DEL PROGRAMA:
REM programa experimental de deteccion
REM de usando el puerto del
REM Joystick.
CLS
LOCATE 1, 10: PRINT ******************************************"
LOCATE 2, 10: PRINT "* PROGRAMA DETECTOR -1.01 *"
LOCATE 3, 10: PRINT *******************************************
LOCATE 4, 10: PRINT "* Este programa es para conectar cualquier salida de un **
LOCATE 5, 10: PRINT "* circuito electronico o electrico a traves del puerto de *"
LOCATE 6, 10: PRINT "* joystick. *"
LOCATE 7, 10: PRINT "* Su uso es para fines didacticos.corre desde un 386 en *"
LOCATE 8, 10: PRINT "* adelante,aunque es preferible un pentium,ya que es mas *"
LOCATE 9, 10: PRINT "* sensible. *"
LOCATE 10, 10: PRINT "***********************************************************"
LOCATE 11, 10: PRINT "* Realizado por el profesor Jorge Moreno.Caracas,agosto 2009 *"
LOCATE 12, 10: PRINT "* 2009.E-MAIL: JORGE2006JULIO[arroba]CANTV.NET *"
LOCATE 13, 10: PRINT ******************************************"
FOR i = 1 TO 40000: NEXT i
e3:
CLS
CLEAR
SCREEN 12
REM Rutina principal que usa puerto de juegos para que sirva
REM para distintos experimentos.
c1 = 0
c4 = 0
e2:
LOCATE 1, 1: PRINT "****SELECCION DEL TAMAÑO DE LA VENTANA***********
LOCATE 3, 1: PRINT " 1- Grafica Lineal en ventana Normal (640 x 480)"
LOCATE 4, 1: PRINT " 2- Grafica lineal en otra ventana ( X x Y ) "
LOCATE 5, 1: PRINT " 3- Grafica circular "
LOCATE 6, 1: PRINT " 4- Grafica Espectral "
LOCATE 7, 1: PRINT " 5- Grafica Espectral – II "
LOCATE 8, 1: PRINT " 6- Grafica Espectral – III "
LOCATE 9, 1: PRINT " 7- Grafico en cordenadas polares. "
LOCATE 10, 1: PRINT " – Finalizar el programa"
LOCATE 11, 1: PRINT "************************************************
LOCATE 12, 1: PRINT "Seleccione opcion :"
t$ = INKEY$
IF t$ = "1" THEN
u = 640: v = 480
CLS
Rem se manda directo a graficar sin subrutina
Goto e4
END IF
IF t$ = "2" THEN
Gosub graficaventanaxy
END IF
IF t$ = "3" THEN
Gosub graficacircular
END IF
IF t$ = "4" THEN
Gosub graficaespectral
END IF
IF t$ = "5" THEN
Gosub graficaespectral2
END IF
IF t$ = "6" THEN
Gosub graficaespectral3
END IF
IF t$ = "7" THEN
Gosub graficapolar
END IF
IF t$ = CHR$(27) THEN
GOTO fin
END IF
GOTO e2
e4:
Rem contador c=0
c = 0
WINDOW (0, 0)-(u, v)
e1:
LOCATE 1, 1: PRINT "**DETECCION EN PROGRESO ***********************";
LOCATE 2, 1: PRINT "R: Reinicializa pantalla grafica"
LOCATE 3, 1: PRINT "M: Si se quiere volver al menu inicial"
LOCATE 4, 1: PRINT ": Abortar en cualquier momento."
t$ = UCASE$(INKEY$)
IF t$ = CHR$(27) THEN GOTO fin
IF t$ = "R" THEN
CLS
c = 0
END IF
x = STICK(0)
rem contador incrementado en 0,01 en este caso.puede variarse
rem según lo que se quiera hacer con el circuito y su funcion
c = c + .01
rem inicializa la pantalla nuevamente al llegar a 640
IF c >= u THEN
CLS
c = 0
END IF
Rem trazado del grafico generado
Rem c,x
LINE -(c, x), 12
LOCATE 10, 1: PRINT "Posici¢n :"; x
LOCATE 11, 1: PRINT "Tiempo:";
LOCATE 11, 10: PRINT USING "###.##"; c
IF t$ = "M" THEN
GOTO e3
END IF
GOTO e1
Rem subrutinas para los otros graficos
Rem no incluidad en este listado
Graficoventanaxy:
Return
Graficocircular:
Return
Graficoespectral2:
Return
Graficoespectral3:
Return
Graficapolar:
Return
fin:
CLS
LOCATE 10, 22: PRINT "FFFFFFFFFF IIIIII NNNNN NNN"
LOCATE 11, 22: PRINT "FFFF NNNNN NNN"
LOCATE 12, 22: PRINT "FFFF IIIIII NNNNNN NNN"
LOCATE 13, 22: PRINT "FFFFFFF IIIIII NNNNNNNNNNNN"
LOCATE 14, 22: PRINT "FFFF IIIIII NNNNN NNNNN"
LOCATE 15, 22: PRINT "FFFF IIIIII NNNNN NNN"
LOCATE 16, 22: PRINT "FFFF IIIIII NNNNN NNN"
LOCATE 23, 1:PRINT "Realizado por Profesor Jorge Moreno.Caracas,agosto 2009"
LOCATE 24, 1: PRINT "E-mail: jorge2006julio[arroba]hotmail.com"
FOR i = 1 TO 30000: NEXT i
END
Circuito electrónico de prueba
Vamos ahora a mostrar un circuito electrónico sencillo; en este caso un detector de luz sacado de una revista de electrónica cualquiera.
Materiales para conector del circuito al pc:
1-Conector db-15 macho + carcasa del conector.
2-Cable bicolor delgado (rojo-negro)
3-pulg. mono o pinzas caimán.
Circuito conectado.
Vamos a conectar al pc ahora que ya está realizado el programa en qbasic.En este caso se trata de un 386 de 4 mb de memoria ram y un disco duro de 100 mb y el sistema operativo ms-dos 6.22 aunque debe funcionar para versiones más antiguas de este sistema operativo y en Windows debe realizar pruebas correspondientes.En linux hay que encontrar el nombre del puerto de juegos y las instrucciones que lo activan en la carpeta /dev y entrar como administrador del sistema para realizar esta gestión.
Menú principal.
Grafica línea a línea agrandada.
Coordenadas polares.
Gráfica circular.
Gráfica espectral
Es evidente que el reciclado de computadoras antiguas con el eficiente uso del lenguaje basic u otro lenguaje permite un nivel de experimentación y aplicación útiles en el área de electrónica u otras con pocos recursos y gastos mínimos.
SOFTWARE:
1-Microsoft QBASIC.Manual en línea.
3-Microsoft Windows xp.Panel de control.
2-CableGui! Versión 1.04. NESTORY SYYNIMAA. (2000).
(Este es un excelente software en lo que a ubicación de nemónicos y conexiones se refiere.viene desde la época de windows 3.11 y evolucionó mucho,pero su autor no lo ha seguido actualizando.Si saben escribir y hablar finlandés ,correo electrónico es
Nestori[arroba]kauhava.fi)
Autor:
Jorge Moreno
Agosto 2009
Página anterior | Volver al principio del trabajo | Página siguiente |