¿Es posible obtener información de una cuadrícula de interruptores de 10x10 usando una placa arduino? (Uno, Mega, etc)

Soy más un tipo de software, pero estoy trabajando en un prototipo de un juego que utilizará una cuadrícula sensible a la presión de 10 por 10. Esto requerirá 100 interruptores solo para la red. Lo más cercano que he encontrado disponible es un Arduino Mega 2560 r3, pero todavía se queda corto por 30 pines. ¿Cuál es el mejor enfoque para esto? ¿Debería buscar más pines gpio o hay una forma mejor y más eficiente de realizar la tarea de recibir datos posicionales de una cuadrícula de 10x10 (piense en a1, b2, c3, etc.)?

Mientras buscaba en Google un poco, encontré un método que usa resistencias y pines analógicos para obtener información de varios botones. Los tutoriales siempre parecen usar 5 botones, ¿es una limitación de los tutoriales o del método? ¿Se podría usar el mismo método para encadenar 10 interruptores? enlace al ejemplo de varios botones

Google 'botones de multiplexación'. La clave es darse cuenta de que los humanos no pueden presionar los botones muy rápidamente, por lo que no es necesario mirarlos a todos al mismo tiempo.
Secundo a Samuel, pero... esto depende de cuántas pulsaciones simultáneas de botones necesites para poder registrarte. Pero como él dice, google multiplex con interruptores, o matriz de teclado, ese tipo de cosas para ver variaciones. Probablemente haya un código en la biblioteca Arduino para hacer esto, consulte "CustomKeypad" y bocetos similares.

Respuestas (1)

Puede organizar los botones en un diseño XY, como en la figura a continuación (que extraje de esta fuente ). Eso le permitirá usar 20 pines (10 para las filas, 10 para las columnas) en lugar de 100.

Disposición del teclado XY

El algoritmo de sondeo es el siguiente (de la misma fuente):

Operaciones de sondeo continuo

En este modo de operación, el MicroConverter sondea continuamente el teclado para presionar una tecla. Esta operación se usa cuando el MicroConverter ha completado una tarea y ahora está esperando una entrada antes de continuar. En este modo, el teclado está conectado a un puerto del MicroConverter, Puerto 2 en este ejemplo. La figura 3 muestra la conectividad. La salida del MicroConverter, luego de presionar una tecla, se ve usando HyperTerminal ejecutándose en una PC. El MicroConverter está conectado a la PC a través del puerto COM1. Esta es la razón por la que se muestra la conexión RS-232.

Como se puede ver en la Figura 3, las cuatro columnas (X1 a X4) se suben a VDD y también están conectadas a cuatro de los pines del puerto MicroConverter (P2.4 a P2.7). Las cuatro filas ADuC8xx (Y1 a Y2) están conectadas a los otros cuatro pines del puerto (P2.0 a P2.3). El MicroConverter emite 0 o baja las filas del teclado (P2.0 a P2.3) una a la vez y verifica las columnas (P2.4 a P2.7) en busca de una condición baja.

Por ejemplo, la siguiente es la secuencia de eventos hasta la detección de la pulsación de un interruptor (interruptor 5 en este caso). El MicroConverter emite un nivel bajo en P2.0 (Y1) y verifica si hay un nivel bajo en P2.4 a P2.7. En este caso, no se encuentra ningún valor bajo, por lo que devuelve P2.0 (Y1) a valor alto y pasa a P2.1 (Y2). El MicroConverter ahora conduce P2.1 (Y2) bajo y nuevamente verifica P2.4 a P2.7 para una condición baja. Esta vez encuentra que P2.5 (X2) está bajo, debido a que se presionó el interruptor 5. El MicroConverter ahora sabe que la interconexión de Y2 y X2 se ha acortado, por lo tanto, esto es 5.

Pero no necesita implementar el algoritmo usted mismo. En su lugar, puede usar Arduino Keypad lib. Los enlaces están a continuación:

Vea esta respuesta si necesita colocar los botones usted mismo. Explica cómo colocar botones de 4 pines en un tablero de un solo lado de manera que no necesite usar puentes. Estoy copiando el diseño XY de esa pregunta a continuación:

Disposición del teclado XY

Impresionante, esto es exactamente lo que estaba buscando! Es un concepto muy similar a un cubo LED. Haré la almohadilla yo mismo, pero el cableado parece bastante fácil. Lo probaré en escala primero. ¡Gracias por la respuesta detallada!
Me alegro de poder ayudar. Ahora que tiene suficiente reputación, considere votar mi respuesta haciendo clic en la flecha hacia arriba junto al conteo de votos y el botón de aceptar (la marca de verificación verde en la que hizo clic)
Por cierto, yo mismo estoy haciendo un control remoto Arduino de 32 botones, así que tuve que pasar por esta curva de aprendizaje hace unos días. Lo bueno es que todo está fresco en mi cabeza. Grabaré el tablero esta noche y compartiré el diseño aquí contigo si pasa las pruebas.
@ Bms85smb: acabo de probar y confirmo que Arduino Keypad lib funciona perfectamente con esta configuración.
¡Excelente! ¡Estoy emocionado de comenzar el mío!