Taula de continguts:

Consola de jocs de bricolatge amb Arduino: 4 passos
Consola de jocs de bricolatge amb Arduino: 4 passos

Vídeo: Consola de jocs de bricolatge amb Arduino: 4 passos

Vídeo: Consola de jocs de bricolatge amb Arduino: 4 passos
Vídeo: How to Build Sim Racing Cockpit Works with Any Game/Console 2024, De novembre
Anonim
Image
Image

En aquest tutorial us mostraré que com podeu fer una consola de jocs mitjançant Arduino nano. Així que si voleu veure-hi un vídeo detallat, mireu-lo al meu canal de youtube

Subministraments

Si compreu aquests enllaços, m’ajudarà a donar-vos més projectes

1) ARDUINO NANO2) PANTALLA OLED3) PULSADORS 4) FILS

Pas 1: soldar tots els components

A gaudir !!!
A gaudir !!!

Per tant, després d'obtenir tots els components, heu de soldar tots els components tal com es mostra en aquest diagrama de circuits

Pas 2: organitzeu totes les coses dels llocs

Després de soldar tot, organitzeu tots els components d'aquesta manera per donar-li un aspecte agradable

Pas 3: Programació

Per tant, finalment, després de seguir tots els passos correctament, és hora de penjar el codi següent a Arduino

#incloure

#include #include #include #include // # include #define OLED_RESET 4 Adafruit_SSD1306 display (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, 0xFF, 0x3, 0x3, 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, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x1x, 0x1x,, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x0x, 0x0x,, 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, 0x0, 0x0, 0x0, 0x0 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0x00, 0x00, 0x00 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0x00, 0x0 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0x6, 0x6, 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xFx, 0xFx, 0xF 0xF8, 0x00, 0x00}; void setup () {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, tempesta, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (BLANC); display.setCursor (65, 14); display.println ("xWing"); display.setFont (); display.setCursor (65, 17); display.setTextSize (0); display.println ("vs"); display.setCursor (0, 0); float voltaza = readVcc () / 1000; display.println (voltaza);; display.setFont (& FreeSans9pt7b); display.setCursor (65, 39); display.println ("Mort"); display.setFont (); display.setCursor (65, 42); display.println ("estrella"); display.setTextSize (0); display.setCursor (65, 55); display.println ("per VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); pit (a, 500); pit (a, 500); bip (a, 500); bip (f, 350); bip (cH, 150); pit (a, 500); bip (f, 350); bip (cH, 150); bip (a, 650); retard (500); retard (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; // velocitat de 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; poc signat llarg pocetno = 0; unsigned long odabrano = 0; unsigned long trenutno = 0; unsigned long nivovrije = 0; int poz = 30; bucle buit () {if (go == 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); if (poc == 0) {pocetno = millis (); odabrano = aleatori (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; to (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozicija-8 && ry2 <= pozicija + 8) if (rx24) {rx2 = -50; ry2 = -50; to (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozicija-8 && ry3 <= pozicija + 8) if (rx34) {rx3 = -50; ry3 = -50; to (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozicija-8 && ry4 <= pozicija + 8) if (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; to (9, 100, 100); zivoti = zivoti-1; } if (rx4 <1) {ispaljeno = 0; rx4 = 200;} if (zivoti == 0) go = 1; } if (go == 1) {if (zivoti == 0) {tone (9, 200, 300); retard (300); to (9, 250, 200); retard (200); to (9, 300, 300); retard (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (BLANC); display.setCursor (7, 10); display.println ("GAME OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("puntuació:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("nivell:"); 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) {tone (9, 280, 300); retard (300); to (9, 250, 200); retard (200); to (9, 370, 300); retard (300); ponovo (); }}} void ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; anar = 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 () {// Llegiu la referència 1.1V contra AVcc // estableix la referència a Vcc i la mesura a la referència interna 1.1V #if definit (_ AVR_ATmega32U4_) || definit (_ AVR_ATmega1280_) || definit (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif definit (_AVR_ATtiny24_) || definit (_ AVR_ATtiny44_) || definit (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif definit (_AVR_ATtiny25_) || definit (_ AVR_ATtiny45_) || definit (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif delay (2); // Espereu que Vref resolgui ADCSRA | = _BV (ADSC); // Inicieu la conversió mentre (bit_is_set (ADCSRA, ADSC)); // mesurant uint8_t baix = ADCL; // primer ha de llegir ADCL: després bloqueja ADCH uint8_t high = ADCH; // desbloqueja els dos resultats llargs = (alt << 8) | baix; resultat = 1125300L / resultat; // Calculeu Vcc (en mV); 1125300 = 1,1 * 1023 * 1000 resultat de retorn; // Vcc en milivolts} bip buit (nota int, durada int) {// To de reproducció en to de timbre Pin (9, nota, durada); retard (durada); noTone (9); retard (50); }

Pas 4: gaudiu !

Felicitats? finalment ho vau fer així que si us va agradar, subscriviu-vos al meu canal de youtube

Recomanat: