6 de julio de 2026 · 10 min

Consola de juegos con Arduino: una OLED, dos botones y un runner adictivo

Armá una mini consola portátil con un Nano y una pantalla OLED, con juego completo incluido para copiar y jugar hoy mismo. El proyecto que más engancha a los que 'no les interesa la electrónica'.

arduinooledjuegosprincipiantesproyectos

Si querés que alguien se enganche con la electrónica —un hijo, un alumno, vos mismo— no hay proyecto más efectivo que este: una consola que se juega. Nada convence más que apretar un botón que vos soldaste y ver saltar un personaje que vos programaste. Y el hardware es mínimo: un Nano, una OLED y dos pulsadores.

Lista de compra

ComponenteCantidadPara qué
Arduino Nano1La consola
OLED SSD1306 128x64 I2C1La pantalla
Pulsadores2Saltar / reiniciar
Buzzer activo 5V1Sonido (opcional)
Protoboard1Montaje
Cables dupont1 juegoConexionado

Conexionado

El juego: “Cablecito Runner”

Un clásico runner: tu personaje corre y tenés que saltar los obstáculos. La velocidad sube de a poco, el puntaje también, y el récord queda guardado mientras haya alimentación. Librerías: Adafruit SSD1306 y Adafruit GFX.

#include <Wire.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 oled(128, 64, &Wire, -1);

const int BTN_SALTO = 2, BTN_RESET = 3, BUZZER = 8;
const int PISO = 54;

float jugadorY = PISO, velY = 0;
int obstX = 128, obstAlto = 12;
float velocidad = 3;
int puntos = 0, record = 0;
bool jugando = true;

void bip(int ms) { digitalWrite(BUZZER, HIGH); delay(ms); digitalWrite(BUZZER, LOW); }

void reiniciar() {
  jugadorY = PISO; velY = 0;
  obstX = 128; velocidad = 3; puntos = 0;
  jugando = true;
}

void setup() {
  pinMode(BTN_SALTO, INPUT_PULLUP);
  pinMode(BTN_RESET, INPUT_PULLUP);
  pinMode(BUZZER, OUTPUT);
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  oled.setTextColor(SSD1306_WHITE);
}

void loop() {
  if (jugando) {
    // salto (solo desde el piso)
    if (digitalRead(BTN_SALTO) == LOW && jugadorY >= PISO) {
      velY = -6.2;
      bip(8);
    }
    // fisica
    velY += 0.45;
    jugadorY += velY;
    if (jugadorY > PISO) { jugadorY = PISO; velY = 0; }

    // obstaculo
    obstX -= velocidad;
    if (obstX < -8) {
      obstX = 128 + (puntos * 7) % 40;   // separacion variable
      obstAlto = 8 + (puntos * 5) % 14;  // altura variable
      puntos++;
      if (velocidad < 7) velocidad += 0.15;
    }

    // colision (cajas de 8x12 jugador vs 8xobstAlto obstaculo)
    bool choca = (obstX < 18) && (obstX + 8 > 10) &&
                 (jugadorY + 12 > 64 - obstAlto);
    if (choca) {
      jugando = false;
      if (puntos > record) record = puntos;
      bip(300);
    }
  } else if (digitalRead(BTN_RESET) == LOW) {
    reiniciar();
  }

  // dibujo
  oled.clearDisplay();
  oled.drawLine(0, 63, 127, 63, SSD1306_WHITE);            // piso
  oled.fillRect(10, (int)jugadorY, 8, 12, SSD1306_WHITE);  // jugador
  oled.fillRect(obstX, 64 - obstAlto, 8, obstAlto, SSD1306_WHITE);
  oled.setTextSize(1);
  oled.setCursor(70, 0);
  oled.print(puntos);
  oled.print(" R:");
  oled.print(record);
  if (!jugando) {
    oled.setTextSize(2);
    oled.setCursor(16, 20);
    oled.print("PERDISTE");
  }
  oled.display();
  delay(30);
}

Cargalo y listo: botón A salta, botón B reinicia después de perder. La dificultad sube sola.

Qué se aprende sin darse cuenta

Este proyecto es un caballo de Troya educativo. Adentro del jueguito hay: física simulada (gravedad y velocidad en velY += 0.45), detección de colisiones (el corazón de todo videojuego), máquina de estados (jugando / perdido) y generación pseudoaleatoria con módulo. Los mismos conceptos de cualquier motor de juegos, en 90 líneas.

Errores comunes

  1. Pantalla en negro: dirección I2C 0x3C vs 0x3D. El clásico de todas las OLED.
  2. El salto responde “a veces”: botón cableado sin GND común o sin INPUT_PULLUP. El pin flotante hace magia negra.
  3. Parpadeo o lentitud: si agregaste dibujos, recordá que el Nano redibuja toda la pantalla cada ciclo. Menos píxeles por cuadro = más fluido.
  4. Se resetea al sonar el buzzer: buzzer pasivo de baja impedancia directo al pin. El activo que linkeamos consume poco; si usás otro, ponele una resistencia de 100 Ω en serie.

Para llevarlo más lejos

El kit consola

Nano, OLED, pulsadores, buzzer y protoboard: todo en electronicabyp.com.ar con envío a toda Argentina. Es EL kit de arranque para chicos — pedilo armado por WhatsApp.


¿Necesitás los componentes de esta guía? Los encontrás en electronicabyp.com.ar — hacemos envíos a toda Argentina. Para cotizaciones por cantidad, escribinos por WhatsApp.