Tienes tres problemas:
-
Los eventos reales pueden ser breves, pero también pueden sufrir un "rebote de contacto" en el que lo que un ser humano consideraría un evento realmente consistente de muchos eventos únicos de creación / interrupción eléctrica, que no todos deberían ser contados. / p>
-
Lógicamente, debe "Y" el botón y la prueba de continuidad para detectar puntos, pero debido al rebote, pueden no ser simultáneos, por lo que deberá buscar la correspondencia dentro de una pequeña ventana de tiempo.
-
Debe ingresar los datos a una computadora a través de USB.
Creo que el entorno más simple (y más ajustable) para implementar las decisiones de las dos primeras tareas sería el software que se ejecuta en un microcontrolador incorporado. Y la forma más sencilla de obtener eventos en una computadora a través de USB es el puerto serie virtual.
Por lo tanto, la solución que recomendaría es una pequeña cantidad de software personalizado, desarrollado experimentalmente para una tarjeta incrustada barata que tiene un canal de comunicación serie-USB para la computadora.
El candidato más conocido sería un Arduino o equivalente. Sin embargo, hay opciones adicionales: si desea programar en C # en cualquier lugar, está el Netduino. Si desea profundizar más en los detalles de implementación subyacentes, ST ofrece unos tableros de evaluación de "descubrimiento" de clase de $ 10. En realidad, casi todos los fabricantes de chips tienen algo parecido a un panel de evaluación o demostración barato para al menos uno de sus chips con capacidad USB en el mercado.
Si este será su primer proyecto de este tipo, probablemente encontrará una mayor variedad de recursos de soporte de aplicación inmediata para Arduino que para cualquier otra cosa.
Ahora que lo pienso, hay una organización de software alternativa en el mismo hardware que podría tener más sentido para usted. En lugar de tomar decisiones, puede hacer que la placa incorporada se ejecute en un circuito cerrado, leer un puerto digital de 8 bits (hasta dos pares de tiradores) y emitir ese valor en serie. Se puede utilizar una interrupción (o en un Arduino UNO, la velocidad en baudios del propio puerto serie si se ejecuta en modo esquivo en lugar de usar la API con búfer) como una fuente de tiempo para regularizar las mediciones. Por ejemplo, a 115200 baudios obtendría en el pedido hasta 10,000 muestras por segundo, lo que probablemente asegurará que cualquier evento se muestre al menos una vez. Luego, puede escribir software en el escritorio que analice este flujo de datos, buscando grupos de eventos de continuidad y botón que coincidan. Personalmente, prefiero hacer eso en la placa incorporada y hacer que el sistema sea autónomo, pero hacerlo en el escritorio puede hacer que sea más fácil para usted experimentar con el algoritmo de agrupación, trazar visualmente el rebote de señal (en un grado imperfecto) le permite poner controles deslizantes para ajustar las tolerancias, etc. Realmente es una cuestión de su preferencia.