Skip to content

Latest commit

 

History

37 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PiCalc-Casio (Supercalculadora Científica para RP2040) 🔬

PiCalc-Casio es un proyecto de ingeniería inversa, electrónica Maker y desarrollo de software que transforma la carcasa, la membrana de gomas y la estética de una calculadora científica estándar (como la Casio fx-82) en una supercalculadora avanzada de alta potencia.

El corazón del proyecto es una Raspberry Pi Pico (RP2040) ejecutando PiCalc OS, un sistema operativo a medida programado íntegramente en MicroPython. El firmware replica la experiencia de usuario y la fidelidad de interfaz de una Casio fx-991 ClassWiz, incorporando un motor algebraico avanzado propio.


📜 Términos de Uso y Derechos de Autor (Licencia)

© 2026. Todos los derechos reservados.

Este proyecto se publica bajo un modelo de Software Propietario de Uso Gratuito (Freeware).

  • Permitido: Se autoriza a cualquier usuario a descargar el código fuente, compilarlo, instalarlo y utilizarlo de forma estrictamente personal y gratuita en su propio hardware.
  • Prohibido: Queda totalmente prohibida la modificación, alteración, bifurcación (forking) con fines de distribución, copia total o parcial del motor matemático para otros proyectos, y la comercialización o reventa de este software o de dispositivos que lo incluyan sin la autorización expresa del autor original.

📱 Descripción General e Idea Principal

El objetivo central es actualizar las limitaciones de cómputo del hardware escolar tradicional mediante hardware de bajo coste. Al interceptar los pads del teclado y añadir una pantalla OLED de alta resolución camuflada bajo un plástico polarizado gris, el dispositivo mantiene un aspecto exterior idéntico al original mientras despliega un motor algebraico avanzado que prescinde totalmente de la función insegura eval().

🔐 El Módulo de Restricciones Académicas ("Modo Examen")

Para cumplir con las normativas escolares y de exámenes, el sistema integra variables globales de control (interruptores booleanos) que modifican por completo el comportamiento del motor matemático:

  • Modo Examen Activo (True): Capa por completo las funciones de cálculo avanzado (sistemas de ecuaciones, cálculo matricial, derivadas, integrales y CAS), devolviendo únicamente resultados aritméticos tradicionales con decimales o enteros simples exigidos en el aula.
  • Modo Examen Desactivado (False): Libera la potencia máxima del sistema (Cálculo analítico, complejos con cmath, simplificación de raíces, fracciones reducidas, etc.).
  • Indicador de Honestidad Visual: Cuando el Modo Examen está activo, la pantalla muestra una marca de agua o código fijo en la esquina superior (ej. [MODO R-1]) para que el profesorado pueda verificar visualmente y a distancia que el alumno rinde bajo las reglas permitidas.

🛠️ Especificaciones de Hardware (BOM)

Componente Descripción Notas de Integración
Cerebro Placa compatible con Raspberry Pi Pico (RP2040). 4MB de memoria Flash, puerto USB-C. Se usa sin los pines soldados para ahorrar espacio interno.
Pantalla Módulo OLED de 1.3" I2C. Controlador SH1106 o SSD1306 (128x64 píxeles).
Camuflaje Visual Lámina de plástico polarizado gris o filtro difusor. Colocada sobre el OLED para imitar el aspecto gris mate del LCD original apagado.
Cableado Cable de cobre esmaltado ultra fino. Reciclado del bobinado de un transformador de microondas para realizar conexiones internas sin obstruir las gomas del teclado.
Alimentación Portapilas AAA original. 2x pilas AAA en serie que entregan 3V directos conectados al pin 3V3 de la placa.

⚡ Estrategia de Ingeniería Inversa (Bypass del Teclado)

Dado que las calculadoras modernas utilizan una lámina plástica flexible impresa que no tolera el calor del soldador, se interceptan las señales mediante Bypass en la Placa Rígida Original:

  1. Se desuelda o raspa la alimentación del procesador nativo de la calculadora (la "gota de resina negra") para dejarlo inactivo y evitar interferencias eléctricas.
  2. Los cables esmaltados ultra finos se sueldan directamente a las pistas de cobre expuestas de la placa rígida original (filas y columnas).
  3. El otro extremo se redirige a los pines GPIO correspondientes de la Raspberry Pi Pico para realizar el escaneo matricial digital directo por software.

📈 Historial Completo de Desarrollo y Versiones

El firmware ha evolucionado a través de dos grandes etapas: la etapa de Simulación Estructurada (Betas y v1.0) y la etapa de Motor de Tokens y Parsing Avanzado (v3.0 a v4.3).

📐 Fase 1: Simulación Lineal y Bloqueo de Aula (Basados en Eval)

  • picalc_os_vBeta1 (El Concepto Base):
    • Diseño troncal para la Raspberry Pi Pico con escáner matricial clásico utilizando resistencias Pull-Down.
    • Integración del driver gráfico para la pantalla sh1106.py mediante I2C.
    • Estrategia de energía: Timer de inactividad de 3 minutos que apaga los píxeles de la OLED y activa machine.lightsleep() reduciendo el consumo de batería a 0.2mA.
  • picalc_os_vBeta1.1 (Testeo Multiplataforma):
    • Aislamiento de hardware mediante bloques try-except creando la Dualidad de Entorno: si detecta que corre en PC, deshabilita los pines físicos, simula la pantalla OLED dibujando un recuadro en la terminal y lee comandos desde el teclado de la computadora.
  • picalc_os_vBeta1.2 (Seguridad y Memorias):
    • Inclusión de un atajo de combinación por software (SHIFT79 al presionar IGUAL) para conmutar el MODO_EXAMEN.
    • Añadido sistema de almacenamiento en memoria rápida mediante variables asignables (STO_A, STO_B, STO_X, etc.).
  • picalc_os_vBeta1.3 / picalc.py (El Techo del Motor Lineal):
    • Incorporación de álgebra elemental y cálculo numérico: Solver de Newton-Raphson para buscar incógnitas, resolución de sistemas lineales por regla de Cramer, integrales por Regla de Simpson (100 intervalos) y descomposición en factores primos (PRIMOS).
    • Implementación de algoritmos analíticos básicos: extracción de factores de raíces no exactas (ej: devuelve 2*v(3) en vez de 3.46410) y redondeo por fracciones continuas de hasta 5 cifras de denominador en modo libre.
  • picalc_os_v1.0 (Producción Escolar):
    • Consolidación de la lógica lineal. Firmware blindado para el aula con tablas comparativas estrictas de lo permitido en Modo Examen vs Modo Avanzado.

🧠 Fase 2: El Motor de Arquitectura de Compiladores (Tokenización y RPN)

  • picalc_os_v3.0 / v3.0.1 (Adiós a Eval):
    • Reescritura completa desde cero: Se desecha eval() por seguridad, estabilidad de memoria RAM y fidelidad.
    • Implementación del algoritmo de ordenación Shunting-Yard (de Dijkstra) para procesar texto infijo, convertirlo a Notación Polaca Inversa (RPN) y evaluarlo mediante pilas de forma analítica.
    • Estructura basada en Tokens independientes: funciones como SIN(, COS(, MAT1( se guardan como un único elemento. Al presionar la tecla DEL, se borra la estructura completa de un solo golpe (comportamiento idéntico a Casio).
    • Inclusión de un límite estricto de almacenamiento de listas estadísticas (LIMITE_ESTADISTICA = 50) para prevenir desbordamientos de la memoria Heap del chip RP2040.
  • picalc_os_v3.1 (Protección Eléctrica del GPIO):
    • FIX CRÍTICO DE HARDWARE: Se rediseñó el método escanear_teclado(). Ahora, todos los pines de las filas se configuran en estado de Alta Impedancia (Input) en reposo. Al escanear, se conmuta una sola fila a la vez a Output HIGH. Esto previene cortocircuitos destructivos si el usuario presiona dos teclas de la misma columna simultáneamente.
    • Corrección del parser en el comando SOLVE, aislando los bloques lhs (izquierdo) y rhs (derecho) del signo = de manera segura sin romper los paréntesis internos.
  • picalc_os_v3.2 (Comportamiento de Fidelidad Casio):
    • Cambio de la sintaxis y separador de argumentos de punto y coma (;) a coma (,) para adaptarse al layout de botones físico disponible en la carcasa (Fila 3, Columna 6).
    • Modificación lúdica al presionar IGUAL: si el cálculo arroja un Error Sintaxis, el buffer de tokens no se borra. La expresión inválida permanece en pantalla permitiendo al usuario corregir el error con el cursor, idéntico a las calculadoras comerciales.
  • picalc_os_v4.0 / v4.1 / v4.2 (Expansión Avanzada de Modos):
    • Módulo Complejo (CMPLX): Integración nativa del módulo cmath de MicroPython cuando se activa el flag complejo. Entrada mediante el token de unidad imaginaria i (mapeado a 1j) y formateo estricto de salida sin paréntesis tipo Python (ej: muestra 2+3i, -i, 4-2i).
    • Módulo de Matrices (MAT): Creación de almacenamiento persistente para MatA, MatB y MatC (hasta 4x4). Implementación de operaciones analíticas: multiplicación matricial con validación previa de dimensiones (Error Dimension), transposición, determinantes y matrices inversas.
    • Filtro Anticolgaduras en Tablas (TABLE): Se fijó un límite absoluto de 45 filas máximas en el modo tabla de valores. El sistema estima por software la cantidad de pasos calculados antes de iniciar las iteraciones matemáticas para evitar la congelación de la pantalla o el desborde de memoria RAM.
  • picalc_os_v4.3 (Interfaz Gráfica Dinámica):
    • Navegación por Cursor Real: ENTRADA_TOKENS pasa de ser una lista estática a un buffer direccionable mediante un índice de cursor (CURSOR_POS). Las flechas de dirección mueven el cursor de forma fluida. Las inserciones de tokens y la acción de borrado (DEL actuando como backspace) se realizan exactamente en la posición del cursor (|).
    • Scroll Horizontal Centrado: El método de renderizado gráfico calcula dinámicamente la posición del cursor en caracteres y centra la vista de la pantalla OLED alrededor del cursor en lugar de fijar el extremo derecho.
    • Menú MODE Fx-991 ClassWiz: Al presionar la tecla MODE, la interfaz despliega el menú de cuadrícula icónico de la gama ClassWiz:
      1:COMP    2:CMPLX   3:STAT   4:BASE-N
      5:EQN     6:MATRIX  7:TABLE  8:VECTOR
      
      Permite la selección rápida mediante flechas de navegación o por digitación directa del número de modo.
  • picalc_os_v4.4 (Blindaje de Excepciones Críticas):
    • FIX CRÍTICO EN TOKENIZACIÓN: Se corrigió un fallo que aceptaba números con múltiples puntos decimales (ej: 1.2.3). El bucle de dígitos ahora cuenta los puntos estrictamente; un segundo punto dispara un ValueError, protegiendo al motor RPN de colgarse.
    • CONTROL DE DIVISIÓN POR CERO: El evaluador de pilas RPN ahora analiza si el denominador es menor a 1e-12 antes de ejecutar una división (a/b). Si se detecta, lanza un error controlado de división por cero explícito en la pantalla en lugar de propagar la excepción nativa de Python.
    • BLINDAJE ELÉCTRICO DEL MÓDULO SHIFT/2ND: Se protegió el método escanear_teclado() contra ruido eléctrico o lecturas incompletas en la matriz física. El toggle de la segunda función (MODO_2ND) ahora solo se activa si el token es exactamente "2ND" y valida que las coordenadas de fila y columna existan dentro de la matriz.
    • CORRECCIÓN EN MENÚ MODE: Se aisló la variable _SELECCION_MENU de la variable de estado MODO_CALC. Ahora las flechas IZQ/DER mueven la selección en pantalla de forma fluida sin pisar ni alterar el modo de cálculo actual hasta que el usuario presione efectivamente IGUAL.
  • picalc_os_v4.5 (Persistencia en Flash y Configuración Setup):
    • NUEVO MÓDULO DE PERSISTENCIA (JSON): Implementación de las funciones guardar_estado() y cargar_estado() utilizando la librería json (ujson en MicroPython). El sistema guarda de forma automática en la memoria no volátil de la Pico el estado del diccionario MEMORIA, el valor de ANS, el modo de cálculo actual y las variables de configuración, evitando que se borren los datos al apagar la calculadora.
    • INTERFAZ DE CONFIGURACIÓN (SETUP): Activación del comando cmd_setup() vinculado al botón físico SETUP. Despliega un menú interactivo en la pantalla OLED que permite al usuario alternar entre modos de ángulo (DEG/RAD), fijar la cantidad de decimales en pantalla (FIX de 0 a 9) y auditar el estado de salud de la memoria RAM.
    • CONTROL DE TIPOS EN BASE-N: Parche de estabilidad en _evaluar_entero(). Ahora se valida estrictamente que la pila RPN no intente convertir números complejos (complex) o indeterminaciones (NaN) a enteros. Expresiones inválidas como BIN(3+2i) ahora devuelven un error controlado: "No soporta complejos en BASE-N".
    • DOCUMENTACIÓN INTERNA Y PASO NEGATIVO: Limpieza y actualización cosmética de comentarios obsoletos heredados de versiones previas. Se documentó detalladamente la lógica de bifurcación en el rango del comando TABLE cuando se trabaja con un incremento o paso negativo.
  • picalc_os_v5.0 (Combinatoria, Avanzado en CMPLX y Formateo SCI/NORM):
    • MÓDULO DE COMBINATORIA (FACT, NPR, NCR): Inclusión de funciones de conteo y probabilidad en la capa de teclado 2ND. FACT(n) calcula el factorial de enteros no negativos (límite de n=170 para evitar overflow). NPR(n,r) y NCR(n,r) calculas permutaciones y combinaciones validando estrictamente que 0 <= r <= n.
    • FUNCIONES COMPLEJAS AVANZADAS: Integración de comandos CONJ() y ARG(). CONJ calcula el conjugado aritmético de un complejo ($a - bi$) y ARG extrae su argumento o ángulo de fase en el plano complejo, adaptándose de forma dinámica al formato de ángulos seleccionado.
    • CORRECCIÓN CRÍTICA EN ÁNGULOS (RADIANES REALES): Se solucionó un bug heredado de la v4.5 donde el flag MODO_ANGULOS = "RAD" se guardaba en la Flash pero era ignorado por el motor de evaluación. Ahora, las funciones SIN/COS/TAN y sus inversas procesan e interpretan los radianes de forma directa y nativa sin forzar conversiones a grados.
    • FORMATOS DE PANTALLA CIENTÍFICOS (SCI y NORM): Evolución del menú SETUP. Se añade soporte completo para visualización en notación científica (SCI con selección de 0 a 9 dígitos significativos) y regreso a formato decimal estándar (NORM 1 y NORM 2), emulando perfectamente las restricciones visuales de la Casio física.
  • picalc_os_v5.1 (Rediseño del Formateador de Pantalla y Fix en SCI/NORM):
    • CORRECCIÓN EN FORMATEO DE PANTALLA (SCI / NORM): Se reescribió la función fundamental formatear_numero_setup() corrigiendo fallos de desborde y falsos truncamientos visuales. Ahora el sistema procesa de forma precisa la separación de mantisa y exponente en notación científica (SCI) respetando estrictamente los dígitos significativos elegidos por el usuario de 0 a 9.
    • ESTABILIZACIÓN DEL DELIMITADOR DINÁMICO: Reparación del bug crítico vinculado a _LIMIT_SCI_NORM que generaba comportamientos inesperados en las salidas decimales estándar. Las transiciones entre el formato condensado y el formato expandido (NORM 1 y NORM 2) ahora responden a los umbrales matemáticos correctos sin pisotear la memoria temporal.
    • REGLAS DE TRUNCAMIENTO SEGURO: Optimización de la lógica para limpiar los restos flotantes redundantes (como los molestos .0) en números enteros grandes o aproximaciones muy cercanas a cero, garantizando una salida gráfica ultra limpia en la pantalla OLED.
  • picalc_os_v5.2 (Gestión Dinámica de Heap y Prevención de MemoryError):
    • MONITOREO DE RAM EN TIEMPO REAL: Integración del módulo de recolección de basura gc (Garbage Collector). Se diseñó la función interna MOSTRAR_MEM_DISP() para calcular de forma dinámica los bytes libres en el Heap del microcontrolador.
    • PREVENCIÓN DE DESBORDES DE PILA: El menú de estadísticas (STAT) y el generador de tablas de funciones (TABLE) ahora realizan un chequeo preventivo de memoria RAM disponible antes de poblar listas extensas, evitando congelamientos críticos o excepciones de tipo MemoryError.
    • OPTIMIZACIÓN MANUAL DEL RECOLECTOR: Inserción de llamadas explícitas a gc.collect() en los puntos de retorno de operaciones matriciales pesadas y limpiezas de búfer (AC), liberando bloques residuales de memoria muerta de manera inmediata.
  • picalc_os_v5.3 (Recolección Automática de Basura en el Bucle Principal):
    • RECOLECCIÓN AUTOMÁTICA EN INICIAR(): Se integraron llamadas estratégicas a gc.collect() directamente dentro del bucle de eventos principal (iniciar()). El sistema ahora fuerza la liberación instantánea de bloques de RAM huérfanos cada vez que se procesa una expresión con la tecla IGUAL o se limpia el búfer de entrada con la tecla AC.
    • MITIGACIÓN DE LA FRAGMENTACIÓN DEL HEAP: Esta rutina pasiva asegura que la memoria dinámica de la Raspberry Pi Pico se desfragmente de forma continua durante el uso cotidiano, eliminando los residuos que dejan atrás los cálculos pesados en los modos MATRIX, STAT y TABLE antes de que puedan provocar un desborde.
  • picalc_os_v5.4 (Editor de Matrices Interactivo y Entorno Gráfico OLED):
    • NUEVO EDITOR INTERACTIVO DE MATRICES (MATRIX EDIT): Implementación de un entorno de edición visual para el modo de cálculo matricial gestionado por el estado _MATEDIT_ESTADO. Permite al usuario seleccionar dimensiones (de 1x1 hasta 4x4) y editar cada celda individualmente moviéndose con el cursor físico en pantalla.
    • RUTINAS GRÁFICAS DE COMPORTAMIENTO CASIO: Integración de las funciones matedit_abrir(), matedit_ingresar() y matedit_renderizar(). El sistema dibuja la cuadrícula de la matriz elegida en la OLED, resalta la celda activa, previsualiza el valor actual y procesa la inserción de nuevas expresiones matemáticas dentro de la celda al presionar la tecla IGUAL.
    • CONTROL DE PARSEO DE CELDAS: Se enlazó el editor dinámico con el motor parser de la calculadora. Al confirmar un ingreso en una celda, el buffer ENTRADA_TOKENS es evaluado por el sistema, traduciendo variables o constantes antes de inyectar el valor numérico final en la matriz interna (MatA, MatB o MatC).
  • picalc_os_v5.5 (Distribuciones Estadísticas, Tabla Doble f(x)/g(x), Memoria A-Z y Conversión DMS):
    • MÓDULO DE DISTRIBUCIONES (DIST): Integración nativa de distribuciones de probabilidad accesibles desde el modo STAT o comandos directos. Incluye Distribución Normal (PDF/CDF), Binomial y Poisson, calculadas mediante aproximaciones polinomiales de alta precisión optimizadas para la RAM de la Pico.
    • TABLAS CON DOBLE FUNCIÓN ($f(x)$ y $g(x)$): Evolución del modo TABLE mediante el comando TABLE2. Ahora el sistema es capaz de evaluar y tabular dos funciones simultáneamente en una sola pasada. La estructura interna se rediseñó para almacenar filas del tipo (x, fx, gx_o_None), manteniendo la retrocompatibilidad absoluta con el formato clásico de tabla simple.
    • EXPANSION DE MEMORIA ALFABÉTICA (A-Z): Se rompió la limitación de las variables iniciales (A, B, C, X, Y). El diccionario global de variables ahora soporta casi todo el alfabeto (D, F, M, N, T, K, etc.), reservando estrictamente las letras E (constante de Euler) e I (unidad imaginaria) para evitar colisiones aritméticas en el parser. Toda la memoria extendida persiste en la Flash mediante JSON.
    • CONVERSIÓN SEXAGESIMAL (DMS): Implementación del sistema de conversión de Grados, Minutos y Segundos a decimales y viceversa (DMS <-> Decimal), emulando la mítica tecla de la burbuja de las calculadoras físicas para simplificar cálculos de topografía y geometría.
  • picalc_os_v5.6 (Historial de Cálculos, Notación ENG, Generador RAN#/RANINT# y Comando MOD):
    • SISTEMA DE HISTORIAL INTERACTIVO (HIST): Implementación de una pila FIFO para almacenar los últimos 20 cálculos (expresión y resultado). Accesible mediante la combinación 2ND + HIST, permite al usuario navegar por los registros usando las flechas IZQ/DER. Al presionar IGUAL sobre un registro viejo, el buffer ENTRADA_TOKENS se recarga automáticamente para permitir la reedición del cálculo. El historial se acopla al motor de persistencia JSON en la Flash (SAVE).
    • NOTACIÓN DE INGENIERÍA (ENG): Incorporación del formato de visualización SETUPENG en el motor de renderizado numérico. A diferencia de SCI, el modo ENG restringe los exponentes a múltiplos estrictos de 3 ($10^3, 10^6, 10^{-3}, 10^{-6}$, etc.), ajustando la mantisa entre 1 y 999 para facilitar la lectura directa de magnitudes electrónicas y físicas (mili, micro, kilo, mega).
    • GENERADORES ALEATORIOS CONFORME A CASIO: Inclusión de las funciones RAN# (devuelve un flotante pseudoaleatorio uniforme en el rango $[0, 1)$ usando la entropía del reloj del sistema) y RANINT#(a,b) (devuelve un entero aleatorio cerrado entre los límites definidos). Ambos comandos se encuentran completamente habilitados dentro del MODO_EXAMEN.
    • COMANDO ARITMÉTICO MOD(a,b): Se añadió la función de residuo o módulo formal al parser RPN. Funciona como un alias avanzado del operador %, pero permitiendo pasar como argumentos expresiones complejas o variables anidadas (ej: MOD(A^2, 7)) sin romper el flujo de tokens.
  • picalc_os_v5.7 (Arquitectura Modular y Optimización Crítica de RAM):
    • REFACTORIZACIÓN Y MODULARIZACIÓN: El sistema rompe la estructura de script único y se divide en múltiples módulos independientes. Esta arquitectura permite aplicar técnicas de lazy loading (carga perezosa) en MicroPython, manteniendo el script principal liviano y cargando los entornos pesados bajo demanda.
    • SOPORTE DE FRACCIONES PROPIAS E IMPROPIAS (ab/c): Implementación del motor de visualización y conversión de fracciones al estilo clásico Casio. El sistema procesa resultados en fracciones mixtas (propias) $a\frac{b}{c}$ e impropias $\frac{d}{e}$, permitiendo alternar la visualización en la OLED entre formato mixto, impropio o decimal puro con la tecla dedicada ab/c.
    • SISTEMA DE ECUACIONES SIMULTÁNEAS (EQN): Expansión del modo de ecuaciones agregando soporte para sistemas lineales de 2 incógnitas ($2 \times 2$) y 3 incógnitas ($3 \times 3$). El motor ejecuta un algoritmo de eliminación de Gauss-Jordan optimizado, validando la existencia de solución única (determinante no nulo) y permitiendo navegar las raíces ($X$, $Y$, $Z$) con las flechas.
    • MÓDULO DE VECTORES (VCTR): Integración completa del modo de cálculo vectorial para dimensiones 2D y 3D (guardados en los buffers VctA, VctB y VctC). Se programaron las funciones analíticas esenciales: producto escalar (DOT), producto vectorial (CROSS), determinación de magnitud (ABS) y ángulo entre vectores.
    • GESTIÓN EFICIENTE DEL HEAP: Al aislar los buffers intermedios de Gauss-Jordan y las matrices de paso en archivos externos, la memoria RAM del RP2040 se libera de inmediato al terminar las operaciones, impidiendo caídas catastróficas por fragmentación en cálculos consecutivos.

🚀 Cómo Empezar / Instalación

En PC (Entorno de Depuración Rápida)

  1. Descargá el archivo de la última versión estable (ubicado en src/picalc_os_v4_3.py).
  2. Ejecutalo desde tu terminal favorita usando Python 3:

python src/picalc_os_v4_3.py 3. Interactuá directamente tipeando los comandos. Podés tipear MODE para cambiar el estado global, usar las palabras clave de los alias para meter funciones y probar la velocidad del parser RPN.

En Hardware Real (Raspberry Pi Pico)

  1. Flasheá el firmware oficial de MicroPython en tu Raspberry Pi Pico.
  2. Conectá el módulo OLED SH1106 a los pines I2C definidos en el script (SDA: GPIO 4, SCL: GPIO 5).
  3. Cableá tu matriz de botones a los pines GPIO de Filas y Columnas configurados en la sección de hardware.
  4. Cargá el script dentro de la memoria flash de la placa usando Thonny IDE y renombralo estrictamente como main.py para que se ejecute en bucle infinito de forma automática al recibir energía.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages