¡Descarga Informe de electrónica y más Guías, Proyectos, Investigaciones en PDF de Electrónica solo en Docsity!
UNIVERSIDAD MAYOR DE SAN ÁNDRES
FACULTAD DE INGENIERÍA
CARRERA DE INGENIERÍA ELECTRÓNICA
DOCENTE: ING. JUAN CARLOS MAMANI COLQUE
ALUMNO: CUSSI QUISPE SERGIO
SEMESTRE: 2 - 2025
LA PAZ - BOLIVIA
INDICE
- TITULO.................................................................................................................................................
- OBJETIVOS...........................................................................................................................................
- 2.1. Objetivo general
- 2.2. Objetivos específicos
- FUNDAMENTO TEÓRICO
- 3.1. Arduino y su aplicación en proyectos interactivos
- 3.2. Pantallas OLED y librerías gráficas (Adafruit_SSD1306 y Adafruit_GFX)
- 3.3. Comunicación Serial y Bluetooth
- 3.4. Generación de sonido en Arduino (buzzer y función tone())
- 3.5. Juegos retro y lógica básica de programación
- MATERIALES Y EQUIPO
- 4.1. Hardware
- 4.2. Software
- COSTOS DEL PROYECTO
- METODOLOGÍA / DESARROLLO EXPERIMENTAL
- 6.1.1. Representación gráfica: de binario a hexadecimal
- 6.1.2. 6. Resultados y Gráficas
- 6.1.3. 8. Conclusiones
- 6.1.4. 10. Bibliografía
3.3. Comunicación Serial y Bluetooth
El puerto serial permite que Arduino se comunique con la PC o con otros dispositivos. Cuando
se usa un módulo Bluetooth (como el HC-05 o HC-06), se puede enviar y recibir datos de
manera inalámbrica desde el celular. Para eso se emplea la librería SoftwareSerial , que crea un
puerto serial en pines diferentes al principal, de modo que se pueda usar simultáneamente el
monitor serial y el módulo Bluetooth.
3.4. Generación de sonido en Arduino (buzzer y función tone())
Un buzzer es un pequeño parlante que puede emitir sonidos simples. En Arduino se usa la
función tone(pin, frecuencia) para generar una señal cuadrada con la frecuencia deseada
(por ejemplo 440 Hz = nota musical La). Combinando diferentes frecuencias y duraciones se
pueden crear melodías, efectos de juegos o alertas.
3.5. Juegos retro y lógica básica de programación
Los juegos retro son sencillos y se basan en lógica básica:
- Sprites : pequeños gráficos que representan personajes u objetos.
- Colisiones : detección de choques entre objetos (ejemplo: nave y asteroide).
- Puntaje : contar los puntos obtenidos por el jugador.
- Vidas : número de oportunidades que tiene el jugador antes de perder.
- Niveles : aumentar la dificultad progresivamente.
Con estas bases se pueden crear videojuegos simples en Arduino con pantalla y sonido.
4. MATERIALES Y EQUIPO
4.1. Hardware
- Arduino Uno R
- Pantalla OLED SSD1306 (128x32)
- Módulo Bluetooth HC-05 o HC- 06
- Buzzer pasivo
- LEDs indicadores (x2)
- Resistencias 220Ω
- Botones pulsadores (x3)
- Protoboard y cables jumper
4.2. Software
- Arduino IDE
- Librerías: Adafruit_GFX, Adafruit_SSD1306, SoftwareSerial
- Simuladores: Wokwi y Tinkercad 5. COSTOS DEL PROYECTO COMPONENTE CANTIDAD
PRECIO
UNITARIO (Bs) Subtotal (Bs) Arduino UNO R3 1 90 90 Pantalla OLED 128 X 32 2 70 140 Modulo Bluetooth 1 45 45 Buzzer 1 5 5 LEDs 2 1.5 3 Resistencias 5 0.5 2. Botones 3 2 6 Protoboard 1 25 25 Cables Jumper 1 (juego) 20 20 Cables 1 (2 metros) 4 4 Costo total estimado: 340.5 Bs
6. METODOLOGÍA / DESARROLLO EXPERIMENTAL
5.1 Diseño del menú principal
El menú principal del juego se implementó para permitir al usuario seleccionar entre las opciones “Star” (juego) y “Música”. La interfaz gráfica del menú se muestra en la pantalla OLED , la cual trabaja con una matriz de píxeles que pueden estar encendidos (1) o apagados (0). 6.1.1. Representación gráfica: de binario a hexadecimal
- Inicialmente, cada píxel se representa con un bit , donde 0 = apagado y 1 = encendido.
- Cada fila de la pantalla se puede codificar como una secuencia de 8 bits. Por ejemplo:
} } } // Colisión disparos enemigos con jugador int naveX = 4, naveY = poz; int naveAncho = 12, naveAlto = 8; // Hitbox reducida if (ry > 0 && rx >= naveX && rx <= naveX + naveAncho) { if (ry >= naveY && ry <= naveY + naveAlto) { tone(9, 100, 100); zivoti--; // Resta una vida rx = 95; ry = 0; // Reset proyectil } }
- Sistema de puntaje, vidas y niveles progresivos. // Sistema de niveles progresivos if ((trenutno - nivovrije) > 30000) { // Cada 30 segundos nivovrije = trenutno; nivo++; // Aumenta nivel // Aumenta velocidad de proyectiles cada 3 niveles if (nivo % 3 == 0) { velocidadProyectiles = min(velocidadProyectiles + 1, 4); } // Disparos adicionales y menor diámetro cada 2 niveles if (nivo % 2 == 0) { bkugle++; if (promjer > 4) promjer--; } najmanja = max(300, najmanja - 50); najveca = max(600, najveca - 50); } // Puntaje display.setCursor(0, 0); display.print("Pnt:"); display.print(bodovi); // Vidas display.setCursor(35, 0); display.print("Vid:"); display.print(zivoti); // Nivel display.setCursor(70, 0); display.print("Niv:"); display.print(nivo);
5.3 Implementación de la música
- Reproducción de la Marcha Imperial usando buzzer. void primeraSeccion() { beep(a, 500); beep(a, 500);
beep(a, 500); beep(f, 350); beep(cH, 150); beep(a, 500); beep(f, 350); beep(cH, 150); beep(a, 650); delay(500); beep(eH, 500); beep(eH, 500); beep(eH, 500); beep(fH, 350); beep(cH, 150); beep(gS, 500); beep(f, 350); beep(cH, 150); beep(a, 650); delay(500); checkVolverMenu(); } void segundaSeccion() { beep(aH, 500); beep(a, 300); beep(a, 150); beep(aH, 500); beep(gSH, 325); beep(gH, 175); beep(fSH, 125); beep(fH, 125); beep(fSH, 250); delay(325); beep(cSH, 250); beep(dSH, 500); beep(dH, 325); beep(cSH, 175); beep(cH, 125); beep(b, 125); beep(cH, 250); delay(350); checkVolverMenu(); }
- Control para volver al menú desde botones o Bluetooth. void checkVolverMenu() { // Verificar si quieren volver al menú durante la música if (digitalRead(4) == LOW || digitalRead(5) == LOW || digitalRead(6) == LOW) { estado = 0; return; } if (bluetooth.available()) { char c = bluetooth.read(); if (c == 'D' || c == 'd'||c == 'W' || c == 'w'||c == 'S' || c == 's') { estado = 0; return;
Sin corrección
6.1.2. 6. Resultados y Gráficas
- Capturas de pantalla del simulador Wokwi/Tinkercad mostrando el juego y menú.
- Imagen del circuito físico funcionando.
- Imagen de la aplicación 6.1.3. 8. Conclusiones
- El proyecto permitió integrar hardware y software en un sistema interactivo.
- La pantalla OLED y la librería Adafruit facilitaron la visualización de gráficos y menús.
- El buzzer y los LEDs añadieron retroalimentación audiovisual, enriqueciendo la
experiencia.
- El control por Bluetooth mostró la viabilidad de interfaces inalámbricas simples.
- Se comprobó que la simulación previa reduce errores antes de la implementación física. 6.1.4. 10. Bibliografía
- Adafruit Industries. Adafruit SSD1306 Library Documentation.
- Arduino.cc. Referencia de funciones Arduino.
- Simon Monk. Programming Arduino: Getting Started with Sketches.
- Recursos en línea: Wokwi