GLOBAL joy_filter

joy_filter=10; // Filtro aplicado al joystick


Esta variable global se utiliza para definir el filtro aplicado a las coordenadas leídas del joystick.

Se define como un porcentaje de 0 % a 99 %; por defecto joy_filter valdrá 10 (se aplicará un filtro de un 10%).

La utilidad de aplicar este filtro a las coordenadas del joystick es para suavizar los movimientos del mismo y evitar posibles "picos" en la lectura de las coordenadas; dichas coordenadas del joystick se deben obtener con la función get_joy_position(). La variable joy_filter únicamente será de utilidad cuando se esté utilizando ésta última función.

Cuanto mayor sea el filtro aplicado más se suavizarán los movimientos del mismo, pero también se retardará su respuesta.

Dado que la función cometida por este "filtro" es algo difícil de comprender, se muestra a continuación un ejemplo.

Programa ejemplo:
PROGRAM ejemplo_joy_filter;
BEGIN
    write(0, 0, 0, 0, "joy_filter=");
    write_int(0, 70, 0, 0, offset joy_filter);
    write(0, 160, 180, 1, "El gráfico se muestra en las coordenadas del joystick");
    write(0, 160, 190, 1, "Utilice las teclas arriba/abajo para variar el filtro");
    load_fpg("help\help.fpg");
    put_screen(0, 1);
    graph=100;
    LOOP
        IF (scan_code==_up AND joy_filter<99)
            joy_filter++;
        END
        IF (scan_code==_down AND joy_filter>0)
            joy_filter--;
        END
        x=get_joy_position(0);
        y=get_joy_position(1);
        FRAME;
    END
END


Este programa imprime el gráfico de una bola en las coordenadas devueltas por el joystick principal mediante la función get_joy_position().

Se puede observar como, para valores pequeños de joy_filter, se producen muchos "picos" (irregularidades) en la lectura, y como para valores muy grandes (como 95%) se produce una lectura de las coordenadas mucho más suave y regular, pero ligeramente retardada.

Nota: Es imprescindible tener un joystick (o gamepad) conectado al ordenador para que esta variable tenga utilidad. Si el joystick se conecta durante la ejecución del programa, el sistema no lo detectará (debe estar conectado desde el inicio). Ver la variable global joy_status.


Ver: Datos globales - get_joy_position() - joy_status