Um joystick analógico de videogame usa dois monoestáveis para a leitura digital dos valores resistivos nos eixos X e Y. Uma rotina dispara_monoestaveis( ) faz com que os monoestáveis iniciem a geração dos dois pulsos digitais de tamanhos proporcionais aos valores resistivos. A função le_joystick( ) retorna:
• 0, se ambos os pulsos dos monoestáveis estiverem finalizados;
• 1, se apenas o pulso do monoestável no eixo X estiver finalizado;
• 2, se apenas o pulso do monoestável no eixo Y estiver finalizado;
• 3, se ambos os pulsos dos monoestáveis ainda estiverem ativados.
Quando o joystick estiver relaxado, após uma execução de dispara_monoestaveis( ), realizam-se 10 execuções da função le_joystick( ), obtendo-se os seguintes valores retornados: 3, 3, 3, 3, 3, 2, 0, 0, 0, 0. Ao se flexionar o joystick para a frente (eixo Y) e para a direita (eixo X), os valores retornados após as 10 execuções são: 3, 3, 3, 3, 3, 3, 3, 3, 2, 0
Se forem lidos os valores 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, é porque o joystick está flexionado