Tabla de contenido:

Consola de juegos de bricolaje con Arduino: 4 pasos
Consola de juegos de bricolaje con Arduino: 4 pasos

Video: Consola de juegos de bricolaje con Arduino: 4 pasos

Video: Consola de juegos de bricolaje con Arduino: 4 pasos
Video: Consola Retro Con ATtiny85 y Arduino | Multiples Juegos 2024, Noviembre
Anonim
Image
Image

En este tutorial, te mostraré cómo puedes hacer una consola de juegos usando Arduino nano. Entonces, si desea ver un video detallado, compruébelo en mi canal de youtube

Suministros

Si compras desde estos enlaces, me ayudará a darte más proyectos.

1) ARDUINO NANO2) PANTALLA OLED3) PULSADORES4) CABLES

Paso 1: Soldar todos los componentes

¡¡¡Disfrutar!!!
¡¡¡Disfrutar!!!

Entonces, después de obtener todos los componentes, debe soldar todos los componentes como se muestra en este diagrama de circuito

Paso 2: Organice todas las cosas en lugares

Después de soldar todo, coloque todos los componentes de esta manera para darle un aspecto agradable.

Paso 3: programación

Entonces, finalmente, después de seguir todos los pasos correctamente, es hora de cargar el siguiente código en Arduino.

#incluir

#include #include #include #include // #include #define OLED_RESET 4 Pantalla Adafruit_SSD1306 (OLED_RESET); const int c = 261; const int d = 294; const int e = 329; const int f = 349; const int g = 391; const int gS = 415; const int a = 440; const int aS = 455; const int b = 466; const int cH = 523; const int cSH = 554; const int dH = 587; const int dSH = 622; const int eH = 659; const int fH = 698; const int fSH = 740; const int gH = 784; const int gSH = 830; const int aH = 880; const unsigned char PROGMEM dioda16 = {0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0xF0, 0x3C, 0x00, 0x3C, 0x00, 0xFF, 0x00, 0x7F, 0xFF, 0x7F, 0x3Cx, 0xFF, 0x7F, 0x3Cx, 0xFF, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00}; const unsigned char PROGMEM storm = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0Fx00, 0x7, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30,, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0xFA, 0x1F, 080, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x0x06, 0x06, 0x70, 0x0x06,, 0xC0, 0x03, 0x06, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xF8, 0x00, 0x00, 0x1D, 0xC0, 0x03, 0x70, 0x00, 0x80, 0x0C, 0x60, 0x05, 0xB0, 0x07, 0xF0, 0x08, 0x90, 0x09, 0x10, 0x1F, 0xF8, 0x09, 0xD0, 0x03x1 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0x, 0xFC, 0x10, 0x07, 0x, 0xFC, 0 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC8, 0x00, 0x00, 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0x80, 0xA0, 0 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF0, 0xF0, 0x1F, 0xF0, 0xF0 0xF8, 0x00, 0x00}; configuración vacía () {pinMode (3, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); pinMode (11, INPUT_PULLUP); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); display.clearDisplay (); display.setTextSize (0); display.drawBitmap (6, 11, tormenta, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (BLANCO); display.setCursor (65, 14); display.println ("xWing"); display.setFont (); display.setCursor (65, 17); display.setTextSize (0); display.println ("frente a"); display.setCursor (0, 0); flotar voltaza = readVcc () / 1000; display.println (voltaza);; display.setFont (& FreeSans9pt7b); display.setCursor (65, 39); display.println ("Muerte"); display.setFont (); display.setCursor (65, 42); display.println ("estrella"); display.setTextSize (0); display.setCursor (65, 55); display.println ("por VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); bip (a, 500); bip (a, 500); bip (a, 500); bip (f, 350); bip (cH, 150); bip (a, 500); bip (f, 350); bip (cH, 150); bip (a, 650); retraso (500); retraso (500); } int metx = 0; int mety = 0; int postoji = 0; int nep = 8; int smjer = 0; int go = 0; int rx = 95; int ry = 0; int rx2 = 95; int ry2 = 0; int rx3 = 95; int ry3 = 0; int bodovi = 0; int brzina = 3; // velocidad de la bala int bkugle = 1; int najmanja = 600; int najveca = 1200; int promjer = 10; int rx4 = 95; int ry4 = 0; int zivoti = 5; int poc = 0; int ispaljeno = 0; int nivo = 1; int centar = 95; pocetno largo sin signo = 0; odabrano largo sin firmar = 0; trenutno largo sin firmar = 0; unsigned long nivovrije = 0; int poz = 30; bucle vacío () {if (ir == 0) {display.clearDisplay (); display.drawPixel (50, 30, 1); display.drawPixel (30, 17, 1); display.drawPixel (60, 18, 1); display.drawPixel (55, 16, 1); display.drawPixel (25, 43, 1); display.drawPixel (100, 43, 1); display.drawPixel (117, 52, 1); display.drawPixel (14, 49, 1); display.drawPixel (24, 24, 1); display.drawPixel (78, 36, 1); display.drawPixel (80, 57, 1); display.drawPixel (107, 11, 1); display.drawPixel (150, 11, 1); display.drawPixel (5, 5, 1); display.drawPixel (8, 7, 1); display.drawPixel (70, 12, 1); display.drawPixel (10, 56, 1); display.drawPixel (70, 25, 1); si (poc == 0) {pocetno = millis (); odabrano = aleatorio (400, 1200); poc = 1; } trenutno = millis (); // nivoi if ((trenutno-nivovrije)> 50000) {nivovrije = trenutno; nivo = nivo + 1; brzina = brzina + 1; // brizna neprijateljevog metka if (nivo% 2 == 0) {bkugle = bkugle + 1; promjer = promjer-1; } najmanja = najmanja-50; najveca = najveca-50; } if ((odabrano + pocetno) 0) {display.drawCircle (rx, ry, 2, 1); rx = rx-brzina;} if (ispaljeno> 1) {display.drawCircle (rx2, ry2, 1, 1); rx2 = rx2-brzina;} if (ispaljeno> 2) {display.drawCircle (rx3, ry3, 4, 1); rx3 = rx3-brzina;} if (ispaljeno> 3) {display.drawCircle (rx4, ry4, 2, 1); rx4 = rx4-brzina;} if (digitalRead (12) == 0 && poz> = 2) {poz = poz-2;} if (digitalRead (11) == 0 && poz128) postoji = 0; if (smjer == 0) {nep = nep + bkugle;} else {nep = nep-bkugle;} if (nep> = (64-promjer)) smjer = 1; if (nep = nep-promjer && mety (centar-promjer) && metx = pozicija-8 && ry <= pozicija + 8) if (rx4) {rx = 95; ry = -50; tono (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozicija-8 && ry2 <= pozicija + 8) if (rx24) {rx2 = -50; ry2 = -50; tono (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozicija-8 && ry3 <= pozicija + 8) if (rx34) {rx3 = -50; ry3 = -50; tono (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozicija-8 && ry4 <= pozicija + 8) if (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; tono (9, 100, 100); zivoti = zivoti-1; } si (rx4 <1) {ispaljeno = 0; rx4 = 200;} si (zivoti == 0) ir = 1; } si (ir == 1) {si (zivoti == 0) {tono (9, 200, 300); retraso (300); tono (9, 250, 200); retraso (200); tono (9, 300, 300); retraso (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (BLANCO); display.setCursor (7, 10); display.println ("¡JUEGO TERMINADO!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("puntuación:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("nivel:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("hora (s):"); display.setCursor (60, 50); display.println (trenutno / 1000); display.display (); if (digitalRead (3) == 0) {tono (9, 280, 300); retraso (300); tono (9, 250, 200); retraso (200); tono (9, 370, 300); retraso (300); ponovo (); }}} void ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; ir = 0; rx = 95; ry = 0; rx2 = 95; ry2 = 0; rx3 = 95; ry3 = 0; bodovi = 0; brzina = 3; // brizna neprijateljevog metka bkugle = 1; najmanja = 600; najveca = 1200; promjer = 12; rx4 = 95; ry4 = 0; zivoti = 5; poc = 0; ispaljeno = 0; nivo = 1; pocetno = 0; odabrano = 0; trenutno = 0; nivovrije = 0; } long readVcc () {// Lee la referencia 1.1V contra AVcc // establece la referencia a Vcc y la medida a la referencia interna 1.1V # si está definida (_ AVR_ATmega32U4_) || definido (_ AVR_ATmega1280_) || definido (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif definido (_AVR_ATtiny24_) || definido (_ AVR_ATtiny44_) || definido (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif definido (_AVR_ATtiny25_) || definido (_ AVR_ATtiny45_) || definido (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif delay (2); // Espere a que Vref se establezca ADCSRA | = _BV (ADSC); // Iniciar la conversión mientras (bit_is_set (ADCSRA, ADSC)); // midiendo uint8_t low = ADCL; // debe leer ADCL primero - luego bloquea ADCH uint8_t high = ADCH; // desbloquea ambos long result = (high << 8) | bajo; resultado = 1125300L / resultado; // Calcular Vcc (en mV); 1125300 = 1,1 * 1023 * 1000 devuelve el resultado; // Vcc en milivoltios} void beep (nota int, duración int) {// Toca tono en buzzerPin tone (9, nota, duración); retraso (duración); noTone (9); retraso (50); }

Paso 4: ¡¡¡Disfruta !

Felicidades ? finalmente lo lograste, así que si te gustó, suscríbete a mi canal de youtube

Recomendado: