(1) Puede mover el punto de umbral más cerca del riel + ve para que una entrada de 5k a resistencia positiva no se vea como un nivel alto. Una forma fácil de hacer esto sería usar un comparador para establecer el nivel de activación.
El comparador DEBE poder acomodar el riel Vin = + ve en su especificación.
Entonces, por ejemplo, 5k arriba y 10k abajo = 3V x 5 / (5 + 10) = 2V con un sistema de 3V.
Puede hacer que el sistema sea ratiométrico para que tanto el divisor de referencia del comparador como el interruptor se alimenten del voltaje de la batería, de modo que cuando el voltaje de la batería caiga, la relación entre el punto de activación y la entrada medida sea la misma.
El caso más desfavorable de la corriente de reserva arriba a 3V es 3V / (5k + 10k) = 0.2 mA.
Eso es mejor que 0.5 mA pero todavía demasiado alto.
El arrastre hacia abajo podría modificarse para decir 47K, de modo que cuando la fuga del interruptor es 5K, el voltaje de entrada es 47k / (5k + 47k) = 90% del suministro. Al establecer el umbral en, por ejemplo, el 95% del suministro, se puede cambiar correctamente. La resistencia de encendido debe ser < 2.47k que debe cumplirse fácilmente.
(2) El microcontrolador podría sondear el interruptor a una velocidad lo suficientemente rápida como para garantizar que no se pierdan las presiones del interruptor, por ejemplo, un período de 100 ms o menos. Un tirón hacia abajo podría ser aplicado justo antes de leer. Entre los sondeos, el interruptor puede permitir que el pin se levante alto con quizás un pullup externo de 100k también.
O se podría agregar un capacitor al pin y usarlo para medir el interruptor R, configurando la pinta para que salga, colocando el pin del puerto bajo, configurándolo para la entrada y midiendo el tiempo que tarda en volver a subir.