# Wokwi Libraries Integration Este proyecto utiliza los repositorios oficiales de Wokwi clonados localmente, lo que permite mantenerlos actualizados y compatibles con las últimas versiones. ## Repositorios Clonados ### 📦 wokwi-elements - **Ubicación**: `wokwi-libs/wokwi-elements/` - **Descripción**: Web Components para elementos electrónicos (LEDs, resistencias, botones, etc.) - **Repositorio**: https://github.com/wokwi/wokwi-elements - **Licencia**: MIT - **Versión actual**: 1.9.2 ### 🎮 avr8js - **Ubicación**: `wokwi-libs/avr8js/` - **Descripción**: Emulador de microcontroladores AVR8 (Arduino Uno, Mega, etc.) en JavaScript - **Repositorio**: https://github.com/wokwi/avr8js - **Licencia**: MIT - **Versión actual**: 0.21.0 ### 🚀 rp2040js - **Ubicación**: `wokwi-libs/rp2040js/` - **Descripción**: Emulador de Raspberry Pi Pico (RP2040) en JavaScript - **Repositorio**: https://github.com/wokwi/rp2040js - **Licencia**: MIT - **Uso**: Futuro soporte para Raspberry Pi Pico ### 📝 wokwi-features - **Ubicación**: `wokwi-libs/wokwi-features/` - **Descripción**: Documentación y tracking de features de Wokwi - **Repositorio**: https://github.com/wokwi/wokwi-features ## Configuración del Proyecto ### Frontend (Vite) El archivo [vite.config.ts](frontend/vite.config.ts) está configurado para usar los repositorios locales: ```typescript resolve: { alias: { 'avr8js': path.resolve(__dirname, '../wokwi-libs/avr8js/dist/esm'), '@wokwi/elements': path.resolve(__dirname, '../wokwi-libs/wokwi-elements/dist/esm'), }, } ``` El archivo [package.json](frontend/package.json) referencia los paquetes locales: ```json { "dependencies": { "@wokwi/elements": "file:../wokwi-libs/wokwi-elements", "avr8js": "file:../wokwi-libs/avr8js" } } ``` ## Actualizar las Librerías de Wokwi Para mantener tu proyecto actualizado con las últimas versiones de Wokwi: ### Opción 1: Actualizar todas las librerías (Recomendado) ```bash cd e:\Hardware\wokwi_clon # Script para actualizar todos los repositorios ./update-wokwi-libs.bat ``` ### Opción 2: Actualizar manualmente cada repositorio ```bash cd e:\Hardware\wokwi_clon\wokwi-libs # Actualizar wokwi-elements cd wokwi-elements git pull origin main npm install npm run build # Actualizar avr8js cd ../avr8js git pull origin main npm install npm run build # Actualizar rp2040js cd ../rp2040js git pull origin main npm install npm run build ``` ### Opción 3: Actualizar a una versión específica ```bash cd e:\Hardware\wokwi_clon\wokwi-libs\wokwi-elements # Ver versiones disponibles git tag -l # Cambiar a una versión específica git checkout v1.9.2 # Recompilar npm install npm run build ``` ## Script de Actualización Automática Se ha creado un script [update-wokwi-libs.bat](update-wokwi-libs.bat) para facilitar las actualizaciones: ```batch @echo off echo ======================================== echo Actualizando Wokwi Libraries echo ======================================== echo. cd wokwi-libs echo [1/3] Actualizando wokwi-elements... cd wokwi-elements git pull origin main npm install npm run build cd .. echo. echo [2/3] Actualizando avr8js... cd avr8js git pull origin main npm install npm run build cd .. echo. echo [3/3] Actualizando rp2040js... cd rp2040js git pull origin main npm install npm run build cd .. echo. echo ======================================== echo Actualizacion completada! echo ======================================== pause ``` ## Ventajas de Este Enfoque ### ✅ Ventajas 1. **Actualización Fácil**: Un simple `git pull` en cada repo te da las últimas mejoras 2. **Compatible con Wokwi**: Si Wokwi agrega nuevos elementos o mejoras a avr8js, automáticamente estarán disponibles 3. **Control de Versiones**: Puedes hacer checkout a versiones específicas si necesitas estabilidad 4. **Desarrollo**: Puedes modificar el código fuente si necesitas hacer debugging o agregar features 5. **Sin Dependencia de npm**: No dependes de que publiquen en npm ### ⚠️ Consideraciones 1. **Espacio en Disco**: Los repositorios clonados ocupan más espacio (~200MB) 2. **Compilación**: Debes compilar los repositorios después de actualizarlos 3. **Tiempo de Build**: La primera instalación toma más tiempo ## Componentes Wokwi Disponibles ### Elementos Básicos - `wokwi-led` - LED de colores (red, green, blue, yellow, white, orange) - `wokwi-resistor` - Resistencia con código de colores - `wokwi-pushbutton` - Botón pulsador - `wokwi-slide-switch` - Interruptor deslizante - `wokwi-potentiometer` - Potenciómetro ### Placas - `wokwi-arduino-uno` - Arduino Uno R3 - `wokwi-arduino-mega` - Arduino Mega 2560 - `wokwi-arduino-nano` - Arduino Nano - `wokwi-pi-pico` - Raspberry Pi Pico - `wokwi-esp32-devkit-v1` - ESP32 DevKit v1 ### Pantallas - `wokwi-lcd1602` - LCD 16x2 con I2C - `wokwi-neopixel` - LED RGB direccionable - `wokwi-7segment` - Display de 7 segmentos ### Sensores - `wokwi-dht22` - Sensor de temperatura y humedad - `wokwi-hc-sr04` - Sensor ultrasónico de distancia - `wokwi-pir-motion-sensor` - Sensor de movimiento PIR - `wokwi-photoresistor-sensor` - Fotoresistor (LDR) ### Otros - `wokwi-servo` - Servo motor - `wokwi-membrane-keypad` - Teclado matricial 4x4 - `wokwi-ir-receiver` - Receptor infrarrojo - `wokwi-ds1307` - Reloj de tiempo real (RTC) ## Uso de los Componentes ### Ejemplo: LED ```tsx import { LED } from './components/components-wokwi/LED'; ``` ### Ejemplo: Arduino Uno ```tsx import { ArduinoUno } from './components/components-wokwi/ArduinoUno'; ``` ### Ejemplo: Botón ```tsx import { Pushbutton } from './components/components-wokwi/Pushbutton'; console.log('Presionado!')} onRelease={() => console.log('Liberado!')} /> ``` ## Troubleshooting ### Error: "Module not found: @wokwi/elements" Asegúrate de que los repositorios estén compilados: ```bash cd wokwi-libs/wokwi-elements npm install npm run build ``` ### Error: "Cannot find module 'avr8js'" Verifica que el alias en `vite.config.ts` esté correcto y que avr8js esté compilado. ### Los componentes no se muestran Asegúrate de importar `@wokwi/elements` en tus componentes: ```tsx import '@wokwi/elements'; ``` ## Referencias - [Wokwi Elements Documentation](https://elements.wokwi.com/) - [AVR8js Documentation](https://github.com/wokwi/avr8js/tree/main/demo) - [Wokwi Simulator](https://wokwi.com) - [Web Components Guide](https://developer.mozilla.org/en-US/docs/Web/Web_Components)