Skip to content

Instantly share code, notes, and snippets.

@IoTeacher
Last active April 30, 2026 00:03
Show Gist options
  • Select an option

  • Save IoTeacher/e30b580e1eb3c9e76102ba926ac0e85a to your computer and use it in GitHub Desktop.

Select an option

Save IoTeacher/e30b580e1eb3c9e76102ba926ac0e85a to your computer and use it in GitHub Desktop.
### Rol
Actúa como un instructor mexicano con experiencia en arquitectura de computadoras, programación de sistemas, documentación técnica y diseño de actividades para GitHub Classroom.
### Tarea
Genera una plantilla completa de actividad para GitHub Classroom donde el estudiante diseñe una propuesta de práctica temática pequeña usando ARM64 Assembly, Bash, Python o C, creando una estructura real de repositorio con varios archivos y directorios.
### Contexto
- Idioma obligatorio de toda la salida: español mexicano.
- Tono: claro, académico, directo y entendible para estudiantes.
- Alcance del repositorio: proyecto completo.
- No existe plantilla inicial en GitHub Classroom.
- El docente publicará esta actividad en GitHub Classroom.
- El estudiante será quien complete la propuesta.
- El enfoque principal es documentación, planeación, estructura del repositorio y explicación del caso de uso.
- El proyecto debe ser pequeño porque los estudiantes pueden usar la versión gratuita de Codex u otra IA con límites de uso.
- Evita proyectos grandes, frameworks, APIs pagadas, bases de datos, nube, contenedores o dependencias complejas.
- ARM64 Assembly debe recomendarse solo para programas muy pequeños.
- La prioridad es documentar y justificar la idea antes de escribir mucho código.
### Instrucción Crítica de Salida
NO generes un único archivo Markdown con todo el contenido.
Debes generar una estructura real de repositorio con directorios y múltiples archivos.
La salida debe estar en formato plaintext forzado, usando bloques por archivo de esta forma exacta:
FILE: README.md
```markdown
contenido del archivo
````
FILE: docs/propuesta.md
```markdown
contenido del archivo
```
FILE: docs/caso_de_uso.md
```markdown
contenido del archivo
```
FILE: docs/estructura_repositorio.md
```markdown
contenido del archivo
```
FILE: docs/plan_de_pruebas.md
```markdown
contenido del archivo
```
FILE: scripts/run.sh
```bash
contenido del archivo
```
FILE: tests/test_plan.md
```markdown
contenido del archivo
```
Si el entorno permite crear archivos, crea físicamente esos directorios y archivos. Si no permite crear archivos, entrega el contenido separado exactamente con el formato `FILE: ruta/del/archivo`.
### Estructura Obligatoria del Repositorio
Debes crear esta estructura mínima:
```text
nombre-del-proyecto/
├── README.md
├── docs/
│ ├── propuesta.md
│ ├── caso_de_uso.md
│ ├── estructura_repositorio.md
│ └── plan_de_pruebas.md
├── src/
│ └── main.<ext>
├── scripts/
│ └── run.sh
└── tests/
└── test_plan.md
```
### Archivos que Debes Generar
#### 1. README.md
Debe incluir:
* Título de la actividad.
* Descripción general.
* Objetivo de aprendizaje.
* Lenguajes permitidos:
* ARM64 Assembly
* C
* Python
* Bash
* Reglas para mantener el proyecto pequeño.
* Entregables esperados.
* Instrucciones para el estudiante.
* Criterios generales de evaluación.
* Nota indicando que primero se documenta y luego, opcionalmente, se implementa un prototipo pequeño.
Usa ejemplos de posibles temas:
* “Mini Toolkit en ARM64”
* “Asistente de Estudio en Terminal”
* “Reporteador de Información del Sistema”
* “Organizador de Archivos”
* “Juego de Aprendizaje en Línea de Comandos”
#### 2. docs/propuesta.md
Debe ser una plantilla que el estudiante llenará.
Incluye secciones con instrucciones y espacios para completar:
* Nombre del proyecto.
* Lenguaje principal elegido.
* Justificación del lenguaje.
* Problema o necesidad que atiende.
* Descripción breve de la solución.
* Alcance mínimo.
* Alcance fuera del proyecto.
* Entradas esperadas.
* Salidas esperadas.
* Limitaciones.
* Riesgos técnicos.
* Criterios de éxito.
Aclara que ARM64 Assembly solo debe usarse para programas muy pequeños, por ejemplo:
* calculadora básica,
* conversor simple,
* lectura y escritura mínima en consola,
* manipulación básica de cadenas o números.
#### 3. docs/caso_de_uso.md
Debe ser una plantilla para describir el caso de uso.
Incluye:
* Usuario principal.
* Contexto del usuario.
* Situación inicial.
* Flujo principal paso a paso.
* Flujo alternativo.
* Errores posibles.
* Resultado esperado.
* Ejemplo de uso en terminal.
* Explicación de por qué el caso de uso es pequeño y viable.
#### 4. docs/estructura_repositorio.md
Debe explicar la estructura del repositorio.
Incluye:
* Árbol de directorios recomendado.
* Explicación de cada carpeta.
* Explicación de cada archivo.
* Reglas para nombrar archivos.
* Reglas para evitar desorden.
* Nota sobre mantener pocos archivos y funciones pequeñas.
Debe incluir este árbol:
```text
nombre-del-proyecto/
├── README.md
├── docs/
│ ├── propuesta.md
│ ├── caso_de_uso.md
│ ├── estructura_repositorio.md
│ └── plan_de_pruebas.md
├── src/
│ └── main.<ext>
├── scripts/
│ └── run.sh
└── tests/
└── test_plan.md
```
#### 5. docs/plan_de_pruebas.md
Debe ser una plantilla sencilla para que el estudiante documente pruebas.
Incluye:
* Objetivo del plan de pruebas.
* Casos de prueba en tabla.
* Entrada.
* Resultado esperado.
* Resultado obtenido.
* Estado.
* Pruebas manuales.
* Pruebas con errores.
* Pruebas mínimas por lenguaje.
* Criterios para considerar la práctica terminada.
No exijas frameworks de testing.
#### 6. scripts/run.sh
Debe ser un script Bash simple y seguro que sirva como plantilla.
Debe:
* Usar `#!/usr/bin/env bash`.
* Usar `set -euo pipefail`.
* Mostrar mensajes claros.
* Detectar de forma simple si existe algún archivo principal en `src/`.
* No instalar dependencias.
* No llamar APIs.
* No usar red.
* Incluir comentarios para que el estudiante lo adapte según su lenguaje.
#### 7. tests/test_plan.md
Debe ser una versión breve del plan de pruebas, enfocada en checklist.
Incluye:
* Checklist de pruebas mínimas.
* Checklist de documentación.
* Checklist de ejecución.
* Checklist de entrega final.
#### 8. src/main.<ext>
Debes incluir un archivo placeholder según el lenguaje recomendado por defecto.
Usa Python como ejemplo por defecto y crea:
FILE: src/main.py
```python
"""
Archivo inicial de ejemplo.
El estudiante puede reemplazar este archivo si elige C, Bash o ARM64 Assembly.
La prioridad de esta actividad es documentar primero la propuesta.
"""
def main():
print("Prototipo mínimo del proyecto. Reemplaza este mensaje con tu idea.")
if __name__ == "__main__":
main()
```
### Restricciones
* No uses frameworks.
* No uses bases de datos.
* No uses Docker.
* No uses servicios en la nube.
* No uses APIs externas.
* No incluyas dependencias complejas.
* No hagas proyectos grandes.
* No generes solamente un README.
* No pongas todo en un solo archivo.
* No uses inglés salvo nombres técnicos inevitables.
* No inventes credenciales, llaves API, tokens ni datos personales.
* Mantén el contenido apto para estudiantes principiantes o intermedios.
### Criterios de Calidad
Antes de finalizar, revisa que:
1. Existan varios archivos separados.
2. Exista el directorio `docs/`.
3. Exista el directorio `scripts/`.
4. Exista el directorio `tests/`.
5. Exista el directorio `src/`.
6. La actividad esté lista para GitHub Classroom.
7. El estudiante pueda completar la propuesta sin depender de herramientas externas.
8. El proyecto sea pequeño y viable.
9. Todo esté en español mexicano.
10. La salida esté en formato plaintext forzado con encabezados `FILE:`.
### Salida Esperada
Entrega únicamente los archivos del repositorio usando el formato `FILE: ruta/del/archivo`.
No agregues explicación antes ni después.
No agregues comentarios fuera de los archivos.
No generes un solo archivo Markdown.
No omitas directorios.
No omitas archivos obligatorios.
@IoTeacher
Copy link
Copy Markdown
Author

IoTeacher commented Apr 27, 2026

image

Prompt Final — Actividad GitHub Classroom con ARM64 Assembly, no optimizado



### Rol del modelo
Actúa como instructor mexicano experto en arquitectura de computadoras, sistemas embebidos, ARM64 Assembly y evaluación por competencias.

Tu respuesta debe estar orientada a estudiantes de nivel medio superior o superior, usando español mexicano claro, profesional y académico.

### Objetivo
Generar una actividad completa para GitHub Classroom centrada en:

1. Diseño y documentación técnica de un microproyecto.
2. Implementación mínima basada en ARM64 Assembly.
3. Evaluación por competencias mediante entregables medibles.

La actividad debe ser viable en un entorno académico con recursos limitados.

### Entregables obligatorios
Debes entregar EXACTAMENTE estos 6 archivos:

1. README.md
2. docs/propuesta.md
3. docs/caso_de_uso.md
4. docs/estructura_repositorio.md
5. docs/plan_de_pruebas.md
6. docs/reflexion_ia.md

No agregues archivos adicionales.

Aunque no debes generar archivos de código adicionales, la actividad debe especificar claramente que el estudiante deberá implementar posteriormente un microproyecto con ARM64 Assembly, incluyendo al menos una macro funcional.

### Formato estricto de salida
Para cada archivo, usa EXACTAMENTE este formato:

### FILE: <ruta/archivo>

[INICIO_ARCHIVO]
<contenido completo del archivo>
[FIN_ARCHIVO]

No escribas texto fuera de los bloques de archivo, excepto la sección final llamada “Checklist final”.

### Reglas obligatorias de formato
- No mezclar el contenido de diferentes archivos.
- No usar “etc.” ni resúmenes incompletos.
- Cada archivo debe estar completo.
- Usar español mexicano claro, profesional y académico.
- No incluir archivos adicionales.
- No incluir código fuente completo como archivo adicional.
- Si se menciona código, debe aparecer como descripción, fragmento breve o especificación dentro de los documentos permitidos.

### Restricciones técnicas del proyecto
El microproyecto que se proponga deberá cumplir:

- Núcleo obligatorio: ARM64 Assembly.
- Incluir al menos 1 macro funcional de Assembly.
- Puede incluir una capa opcional mínima en una de estas tecnologías:
  Bash, C++, Rust, Go, C#, Java o JavaScript.
- No usar Python.
- No usar frameworks pesados.
- No usar Docker.
- No usar Kubernetes.
- No usar servicios cloud adicionales.
- No usar APIs pagadas.
- No requerir base de datos obligatoria.
- Si aparece una base de datos, debe ser local y opcional.
- Máximo sugerido: aproximadamente 150 líneas de código funcional.
- Alcance: de 3 a 5 funcionalidades pequeñas.
- El proyecto debe poder ejecutarse o validarse en un entorno académico con recursos limitados, por ejemplo Linux en ARM64 real o emulación sencilla.

### Contenido mínimo por archivo

#### README.md
Debe incluir:
- Título de la actividad.
- Contexto académico.
- Objetivo general.
- Competencias a desarrollar.
- Instrucciones rápidas para el estudiante.
- Criterios de entrega.
- Restricciones técnicas resumidas.
- Rúbrica en tabla simple.

#### docs/propuesta.md
Debe incluir:
- Problema.
- Justificación.
- Alcance y límites.
- Arquitectura de alto nivel.
- Descripción del papel de ARM64 Assembly.
- Descripción de la macro obligatoria.
- Riesgos y mitigación.
- Supuestos.

#### docs/caso_de_uso.md
Debe incluir:
- Actor principal.
- Flujo principal.
- 2 escenarios alternos.
- Precondiciones.
- Postcondiciones.
- Criterios de aceptación.

#### docs/estructura_repositorio.md
Debe incluir:
- Árbol de carpetas esperado para el repositorio del estudiante.
- Descripción de archivos clave.
- Convenciones de nombres.
- Versionado simple.
- Indicación clara de dónde debería colocarse el archivo Assembly, aunque ese archivo no se entregue en esta respuesta.

#### docs/plan_de_pruebas.md
Debe incluir:
- Estrategia de pruebas.
- Casos de prueba en tabla con estas columnas:
  ID | Entrada | Resultado esperado | Criterio de éxito
- Cobertura mínima.
- Criterios de aprobación.
- Pruebas específicas para validar la macro de ARM64 Assembly.
- Pruebas para validar las 3 a 5 funcionalidades pequeñas.

#### docs/reflexion_ia.md
Debe incluir:
- Uso permitido de IA.
- Validación manual.
- Riesgos de IA.
- Aprendizajes esperados.
- Declaración de integridad académica.

### Criterios de calidad
La respuesta debe cumplir:

- Coherencia entre objetivo, implementación esperada y pruebas.
- Nivel técnico adecuado para estudiantes.
- Evaluación medible.
- Redacción clara y accionable.
- Cumplimiento de restricciones técnicas.
- Actividad viable para GitHub Classroom.
- Sin dependencias innecesarias.
- Sin contradicciones entre archivos.

### Validación interna obligatoria antes de responder
Antes de generar la respuesta final, verifica internamente:

- Están exactamente los 6 archivos solicitados.
- No se agregó ningún archivo adicional.
- Cada archivo cumple su contenido mínimo.
- La actividad exige ARM64 Assembly.
- La actividad exige al menos 1 macro funcional de Assembly.
- No se usa Python.
- No se propone stack pesado.
- No se propone Docker ni Kubernetes.
- No se proponen servicios cloud ni APIs pagadas.
- Se respeta el formato `### FILE:` + `[INICIO_ARCHIVO]` + `[FIN_ARCHIVO]`.
- No hay texto fuera de los bloques de archivo, excepto la checklist final.
- No se usa “etc.”.
- Todos los documentos son completos y accionables.

Si algo falla, regenera toda la respuesta antes de entregarla.

### Cierre obligatorio
Al final, después de los 6 archivos, agrega exactamente esta sección fuera de los bloques de archivo:

## Checklist final

- ✅ README.md
- ✅ docs/propuesta.md
- ✅ docs/caso_de_uso.md
- ✅ docs/estructura_repositorio.md
- ✅ docs/plan_de_pruebas.md
- ✅ docs/reflexion_ia.md

Marca con ✅ solo si todo está completo.


@IoTeacher
Copy link
Copy Markdown
Author

IoTeacher commented Apr 27, 2026

PRUEBAS TODAVIA EN REVISIÓN

Prompt corto — Actividad GitHub Classroom (ARM64)


## Rol
Actúa como instructor mexicano de arquitectura de computadoras y sistemas embebidos.

## Objetivo
Generar una actividad completa de GitHub Classroom + micropráctica técnica.

---

## Entrega obligatoria (EXACTAMENTE 6 archivos)

1) README.md  
2) docs/propuesta.md  
3) docs/caso_de_uso.md  
4) docs/estructura_repositorio.md  
5) docs/plan_de_pruebas.md  
6) docs/reflexion_ia.md  

---

## Formato estricto de salida

Usar EXACTAMENTE este formato por archivo:

### FILE: <ruta/archivo>

[INICIO_ARCHIVO]
<contenido completo>
[FIN_ARCHIVO]

---

## Reglas

- Español mexicano claro.
- No omitir ningún archivo.
- No escribir texto fuera de los bloques (excepto checklist final).
- Núcleo obligatorio: ARM64 Assembly con al menos 1 macro.
- Capa opcional mínima: Bash, C++, Rust, Go, C#, Java o JavaScript.
- No usar Python.
- Sin frameworks pesados.
- Sin Docker ni Kubernetes.
- Sin cloud adicional ni APIs pagadas.
- Implementación sugerida ≤150 líneas.
- Alcance: 3 a 5 funcionalidades pequeñas.

---

## Contenido mínimo requerido

README.md  
- Objetivo  
- Instrucciones  
- Criterios  
- Rúbrica breve  

docs/propuesta.md  
- Problema  
- Justificación  
- Alcance  
- Arquitectura  
- Riesgos  

docs/caso_de_uso.md  
- Actor  
- Flujo principal  
- 2 alternos  
- Criterios de aceptación  

docs/estructura_repositorio.md  
- Árbol  
- Descripción de archivos  

docs/plan_de_pruebas.md  
- Estrategia  
- Tabla de casos: entrada | esperado | éxito  

docs/reflexion_ia.md  
- Uso de IA  
- Validación manual  
- Riesgos  
- Aprendizaje  
- Integridad académica  

---

## Autovalidación

Antes de responder:

- Verificar que existen los 6 archivos.
- Verificar formato correcto.
- Verificar restricciones técnicas.

Si algo falla, regenerar TODO.

---

## Checklist final

- README.md
- docs/propuesta.md
- docs/caso_de_uso.md
- docs/estructura_repositorio.md
- docs/plan_de_pruebas.md
- docs/reflexion_ia.md

(Marcar con ✅ solo si todo está completo)

@IoTeacher
Copy link
Copy Markdown
Author

IoTeacher commented Apr 27, 2026

image

Vamos a calcularlo con precisión usando tarifas de GPT-5 mini:
Input: $0.25 / 1M tokens
Output: $2.00 / 1M tokens
Cached input: normalmente se cobra más barato (≈10% del input → ~$0.025 / 1M)


Vamos a calcularlo con precisión usando tarifas de GPT-5 mini:

  • Input: $0.25 / 1M tokens
  • Output: $2.00 / 1M tokens
  • Cached input: normalmente se cobra más barato (≈10% del input → ~$0.025 / 1M)

🧮 Tus métricas

  • Input: 117,012
  • Cached input: 3,584,000
  • Output: 41,901
  • Total facturable: se separa por tipo (no solo el total)

💸 Cálculo detallado

🟢 Input normal

117,012 / 1,000,000 × 0.25 = $0.0293

🟡 Cached input (mucho volumen aquí 👀)

3.584M × 0.025 ≈ $0.0896

🔴 Output

41,901 / 1,000,000 × 2.00 = $0.0838

📊 Total

0.0293 + 0.0896 + 0.0838 ≈ $0.2027 USD

👉 ≈ $0.20 USD


🔍 Lectura importante (esto es lo valioso)

  • Tu costo está bien optimizado

  • Aunque tienes 3.5M tokens, no explotó el precio porque:

    • eran cached (mucho más baratos)
  • El mayor costo real viene de:

    • output (~$0.08)
    • cached (~$0.09)

⚠️ Insight clave

Ese número grande:

(+ 3,584,000 cached)

significa que estás reutilizando contexto eficientemente (probablemente Codex iterando sobre lo mismo).

👉 Eso es bueno, pero:

  • si ese cache crece más → empieza a dominar el costo
  • si reduces output → bajas costo más rápido

🎯 Conclusión

👉 Tu ejecución costó aproximadamente:
💰 $0.20 USD

y está dentro de un uso bastante eficiente para un flujo con agente.


@IoTeacher
Copy link
Copy Markdown
Author

IoTeacher commented Apr 28, 2026

image

CODEX + Wokwi para practicas de microcontoladores.

Ejemplo: https://wokwi.com/projects/300124198602277389

Seleccione uno de el directorio de WokWi

  • Copiar JSON del diagrama, pues CODEX no tiene visión por computadora como Chatgtp, es un "Agente Developer Junior" (Uds. checan el prompt es similar a pseudocodigo) colocarlo en su bloque de comillas
  • Copiar código Micropython o CPP y colocarlo en su bloque de comillas formato
  • Breve descripción del diagrama imagen (puede usar Chatgpt que lo haga por Uds) colocarlo en su bloque de comillas
image

### Role
Act as an experienced Raspberry Pi Pico W (RP2040, MicroPython/C++) principal embedded systems engineer.

### Task
Generate a clean, well-structured repository and comprehensive documentation from the provided Raspberry Pi Pico W source code and hardware diagram, without modifying the core logic.

### Context
- Repository scope: whole project.
- Relevant files / functions:
  - Main firmware: provided below (`main.py` for MicroPython or `main.cpp` / `CMakeLists.txt` for Pico SDK).
  - Hardware definition: provided below (`diagram.json` from Wokwi).
- Known constraints:
  - Target board: Raspberry Pi Pico W (RP2040 with Wi-Fi).
  - Do NOT change program behavior.
  - Documentation-focused task.
  - No external network calls after setup.
  - Support either MicroPython or C/C++ Pico SDK depending on input code.

### Expected Output
1. Propose a clean repository structure adapted to Pico W:
   - For MicroPython: `/src`, `/lib`, `/docs`, `README.md`
   - For C/C++: `/src`, `/include`, `CMakeLists.txt`, `/docs`, `README.md`
2. Generate:
   - `README.md` (project overview, features, setup for Pico W, flashing instructions)
   - `docs/wiring.md` (clear explanation of connections and GPIO usage)
   - `docs/architecture.md` (code structure and modules explanation)
3. Include:
   - Components list (derived from diagram.json)
   - GPIO pin mapping table (Pico W pin names)
   - Instructions to run in Wokwi and on real hardware
   - If Wi-Fi is used: document setup without exposing credentials
4. Do NOT rewrite the main logic unless strictly necessary for clarity.
5. If helpful, normalize filenames (e.g., `main.py`, `boot.py`, `CMakeLists.txt`) while preserving code content.

### Guidance for Codex
1. Think step-by-step using Structured CoT (plan → code).
2. Run a self-critique loop: generate → review → improve once.
3. If diagram is unclear, infer cautiously and document assumptions.
4. Output ≤ 500 lines.
5. Never expose secrets or sensitive data.

### Setup Script (if needed)
# For C/C++ Pico SDK projects (skip if MicroPython)
# sudo apt update
# sudo apt install cmake gcc-arm-none-eabi build-essential
# git clone https://github.com/raspberrypi/pico-sdk
# export PICO_SDK_PATH=$PWD/pico-sdk

### Provided Code
```python
# PASTE YOUR MICROPYTHON CODE HERE
// OR PASTE YOUR C/C++ PICO SDK CODE HERE

#include <Keypad.h>

const uint8_t LEDS = 12;
const uint8_t ROWS = 4;
const uint8_t COLS = 4;

char keys[ROWS][COLS] = {
  { '1', '2', '3', 'A' },
  { '4', '5', '6', 'B' },
  { '7', '8', '9', 'C' },
  { '*', '0', '#', 'D' }
};

// Pins connected to LED1, LED2, LED3, ...LED12
uint8_t ledPins[LEDS] = { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 28, 27 };
uint8_t rowPins[ROWS] = { 26, 22, 21, 20 }; // Pins connected to R1, R2, R3, R4
uint8_t colPins[COLS] = { 19, 18, 17, 16 }; // Pins connected to C1, C2, C3, C4

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup() {
  for (uint8_t l = 0; l < LEDS; l++) {
    pinMode(ledPins[l], OUTPUT);
    digitalWrite(ledPins[l], LOW);
  }
}

void loop() {
  char key = keypad.getKey();

  if (key != NO_KEY) {
    switch (key) {
      case '1': digitalWrite(ledPins[0], HIGH);
        break;
      case '2': digitalWrite(ledPins[1], HIGH);
        break;
      case '3': digitalWrite(ledPins[2], HIGH);
        break;
      case '4': digitalWrite(ledPins[3], HIGH);
        break;
      case '5': digitalWrite(ledPins[4], HIGH);
        break;
      case '6': digitalWrite(ledPins[5], HIGH);
        break;
      case '7': digitalWrite(ledPins[6], HIGH);
        break;
      case '8': digitalWrite(ledPins[7], HIGH);
        break;
      case '9':
        for (uint8_t l = 0; l < 8; l++) {
          digitalWrite(ledPins[l], HIGH);
        }
        break;
      case '0':
        for (uint8_t l = 0; l < 8; l++) {
          digitalWrite(ledPins[l], LOW);
        }
        break;
      case 'A': digitalWrite(ledPins[8], HIGH);
        break;
      case 'B': digitalWrite(ledPins[9], HIGH);
        break;
      case 'C': digitalWrite(ledPins[10], HIGH);
        break;
      case 'D': digitalWrite(ledPins[11], HIGH);
        break;
      case '*':
        for (uint8_t l = 8; l < 12; l++) {
          digitalWrite(ledPins[l], HIGH);
        }
        break;
      case '#':
        for (uint8_t l = 8; l < 12; l++) {
          digitalWrite(ledPins[l], LOW);
        }
        break;
    }
  }

  delay(10);
}

Provided Hardware Diagram (Wokwi)

// PASTE diagram.json HERE
{
  "version": 1,
  "author": "Anderson Costa",
  "editor": "wokwi",
  "parts": [
    { "type": "wokwi-pi-pico", "id": "pico", "top": 118, "left": 348, "rotate": 90, "attrs": {} },
    {
      "type": "wokwi-resistor",
      "id": "rp1",
      "top": 349.55,
      "left": 19.2,
      "attrs": { "value": "1000" }
    },
    {
      "type": "wokwi-resistor",
      "id": "rp2",
      "top": 368.75,
      "left": 19.2,
      "attrs": { "value": "1000" }
    },
    {
      "type": "wokwi-resistor",
      "id": "rp3",
      "top": 426.35,
      "left": 19.2,
      "attrs": { "value": "1000" }
    },
    {
      "type": "wokwi-resistor",
      "id": "rp4",
      "top": 397.55,
      "left": 19.2,
      "attrs": { "value": "1000" }
    },
    { "type": "wokwi-membrane-keypad", "id": "keypad1", "top": -30.8, "left": -13.6, "attrs": {} },
    {
      "type": "wokwi-led",
      "id": "led1",
      "top": 20,
      "left": 420,
      "attrs": { "color": "blue", "label": "8" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r1",
      "top": 90,
      "left": 415,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led2",
      "top": 20,
      "left": 400,
      "attrs": { "color": "blue", "label": "7" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r2",
      "top": 90,
      "left": 395,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led3",
      "top": 20,
      "left": 380,
      "attrs": { "color": "blue", "label": "6" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r3",
      "top": 90,
      "left": 375,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led4",
      "top": 20,
      "left": 360,
      "attrs": { "color": "blue", "label": "5" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r4",
      "top": 90,
      "left": 355,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led5",
      "top": 20,
      "left": 340,
      "attrs": { "color": "blue", "label": "4" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r5",
      "top": 90,
      "left": 335,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led6",
      "top": 20,
      "left": 320,
      "attrs": { "color": "blue", "label": "3" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r6",
      "top": 90,
      "left": 315,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led7",
      "top": 20,
      "left": 300,
      "attrs": { "color": "blue", "label": "2" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r7",
      "top": 90,
      "left": 295,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led8",
      "top": 20,
      "left": 280,
      "attrs": { "color": "blue", "label": "1" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r8",
      "top": 90,
      "left": 275,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led9",
      "top": 20,
      "left": 440,
      "attrs": { "color": "red", "label": "A" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r9",
      "top": 90,
      "left": 435,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led10",
      "top": 20,
      "left": 460,
      "attrs": { "color": "red", "label": "B" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r10",
      "top": 90,
      "left": 455,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led11",
      "top": 20,
      "left": 480,
      "attrs": { "color": "red", "label": "C" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r11",
      "top": 90,
      "left": 475,
      "rotate": 90,
      "attrs": { "value": "220" }
    },
    {
      "type": "wokwi-led",
      "id": "led12",
      "top": 20,
      "left": 500,
      "attrs": { "color": "red", "label": "D" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r12",
      "top": 90,
      "left": 495,
      "rotate": 90,
      "attrs": { "value": "220" }
    }
  ],
  "connections": [
    [ "pico:GP0", "$serialMonitor:RX", "", [] ],
    [ "pico:GP1", "$serialMonitor:TX", "", [] ],
    [ "keypad1:C4", "pico:GP16", "green", [ "v15", "h132" ] ],
    [ "keypad1:C3", "pico:GP17", "green", [ "v25", "h182" ] ],
    [ "keypad1:C2", "pico:GP18", "green", [ "v35", "h204" ] ],
    [ "keypad1:C1", "pico:GP19", "green", [ "v45", "h222" ] ],
    [ "keypad1:R4", "pico:GP20", "green", [ "v55", "h240" ] ],
    [ "keypad1:R3", "pico:GP21", "green", [ "v65", "h260" ] ],
    [ "keypad1:R2", "pico:GP22", "green", [ "v75", "h286" ] ],
    [ "keypad1:R1", "pico:GP26", "green", [ "v85", "h299" ] ],
    [ "r1:1", "led1:A", "green", [ "h0" ] ],
    [ "r2:1", "led2:A", "green", [ "h0" ] ],
    [ "r3:1", "led3:A", "green", [ "h0" ] ],
    [ "r4:1", "led4:A", "green", [ "h0" ] ],
    [ "r5:1", "led5:A", "green", [ "h0" ] ],
    [ "r6:1", "led6:A", "green", [ "h0" ] ],
    [ "r7:1", "led7:A", "green", [ "h0" ] ],
    [ "r8:1", "led8:A", "green", [ "h0" ] ],
    [ "pico:GND.4", "led8:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led7:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led6:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led5:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led4:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led3:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led2:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led1:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led9:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led10:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led11:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GND.4", "led12:C", "black", [ "v-25", "h-22", "v-77", "h6" ] ],
    [ "pico:GP4", "r1:2", "green", [ "v-28", "h10", "v-20" ] ],
    [ "pico:GP5", "r2:2", "green", [ "v-36", "h8" ] ],
    [ "pico:GP6", "r3:2", "green", [ "v-26", "h7" ] ],
    [ "pico:GP7", "r4:2", "green", [ "v-36", "h-3" ] ],
    [ "pico:GP8", "r5:2", "green", [ "v-33", "h-13" ] ],
    [ "pico:GP9", "r6:2", "green", [ "v-23", "h-14", "v-11", "h-10" ] ],
    [ "pico:GP10", "r7:2", "green", [ "v-22", "h-16", "v-9" ] ],
    [ "pico:GP11", "r8:2", "green", [ "v-12", "h-17", "v-24", "h-18" ] ],
    [ "r9:1", "led9:A", "green", [ "h0" ] ],
    [ "r10:1", "led10:A", "green", [ "h0" ] ],
    [ "r11:1", "led11:A", "green", [ "h0" ] ],
    [ "r12:1", "led12:A", "green", [ "h0" ] ],
    [ "pico:GP3", "r9:2", "green", [ "v-20", "h10", "v-20", "h20", "v-13" ] ],
    [ "pico:GP2", "r10:2", "green", [ "v-15", "h20", "v-15", "h20", "v-22" ] ],
    [ "pico:GP27", "r12:2", "green", [ "v165", "h152" ] ],
    [ "pico:GP28", "r11:2", "green", [ "v155", "h104" ] ],
    [ "rp1:2", "keypad1:R1", "green", [ "h8.4", "v-48" ] ],
    [ "rp2:2", "keypad1:R2", "green", [ "h18", "v-67.2" ] ],
    [ "rp4:2", "keypad1:R3", "green", [ "h27.6", "v-96" ] ],
    [ "rp3:2", "keypad1:R4", "green", [ "h37.2", "v-124.8" ] ],
    [ "rp1:1", "rp2:1", "red", [ "v0" ] ],
    [ "rp2:1", "rp4:1", "red", [ "v0" ] ],
    [ "rp4:1", "rp3:1", "red", [ "v0" ] ],
    [ "rp3:1", "pico:3V3", "red", [ "v19.2", "h417.15" ] ]
  ],
  "dependencies": {}
}

(Optional) Visual Reference

// Briefly describe screenshot if needed

A wiring diagram showing a **Raspberry Pi Pico** connected to a **4x4 matrix keypad** and multiple **LEDs with resistors**. The keypad uses 8 GPIO pins (rows and columns), while each LED is individually connected to GPIO pins through current-limiting resistors. All components share common power (VCC) and ground (GND). The setup suggests reading keypad input and controlling LEDs accordingly.

End

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment