![DIY Game Console Gamit ang Arduino: 4 na Hakbang DIY Game Console Gamit ang Arduino: 4 na Hakbang](https://i.howwhatproduce.com/images/001/image-2784-11-j.webp)
Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-23 15:12
![Image Image](https://i.howwhatproduce.com/images/001/image-2784-13-j.webp)
![](https://i.ytimg.com/vi/swgvl7hp-tA/hqdefault.jpg)
Sa tutorial na ito ipapakita ko sa iyo na paano ka makakagawa ng isang gaming console gamit ang Arduino nano. Kaya kung nais mong makita ang detalyadong video dito suriin ito sa aking youtube channel
Mga gamit
Kung bibili ka mula sa mga link na ito makakatulong sa aking bigyan ka ng maraming mga proyekto
1) ARDUINO NANO2) OLED DISPLAY3) PUSH BUTTONS4) WIRES
Hakbang 1: Paghihinang ng Lahat ng Mga Bahagi
![Enjoy !!! Enjoy !!!](https://i.howwhatproduce.com/images/001/image-2784-14-j.webp)
Kaya, pagkatapos makuha ang lahat ng mga bahagi kailangan mong maghinang ng lahat ng mga sangkap tulad ng ipinakita sa circuit diagram na ito
Hakbang 2: Ayusin ang Lahat ng mga Bagay sa Mga Lugar
Matapos ang paghihinang lahat ayusin ang lahat ng mga sangkap tulad nito upang mabigyan ito ng magandang hitsura
Hakbang 3: Programing
Kaya, sa wakas pagkatapos ng pagsunod sa lahat ng mga hakbang nang maayos oras na upang i-upload ang code sa ibaba sa Arduino
# isama
#include #include #include #include // # isama ang # tukuyin ang 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; uns unsigned char PROGMEM dioda16 = {0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0xF0, 0x3C, 0x00, 0x3C, 0x00, 0xFF, 0x00, 0x7F, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00}; hindi pinirmahang char PROGMEM bagyo = {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, 0x 0 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, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0x7F, 0xE0, 0x00, 0x01, 0x7F, 0xE0, 0x00, 0x01, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x1F, 0xFA, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x0, 0x0, 0x0, 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 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x 0, 0x 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, 0x07, 0xC8, 0x00, 0x00, 0x07, 0xC8, 0x00, 0x00, 0x07, 0xC8, 0x00, 0x80, 0x07, 0xC8, 0x00, 0x00, 0x07, 0xC8, 0x00, 0x80, 0x07, 0xC8, 0x00 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, 0x 00, 0x 0 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, bagyo, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (PUTI); 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 ("Kamatayan"); display.setFont (); display.setCursor (65, 42); display.println ("bituin"); display.setTextSize (0); display.setCursor (65, 55); display.println ("ni VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); 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); pagkaantala (500); pagkaantala (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; // bilis ng 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; unsigned mahabang pocetno = 0; unsigned mahabang odabrano = 0; unsigned mahabang trenutno = 0; unsigned mahabang nivovrije = 0; int poz = 30; void loop () {kung (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); kung (poc == 0) {pocetno = millis (); odabrano = random (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; } kung ((odabrano + pocetno) 0) {display.drawCircle (rx, ry, 2, 1); rx = rx-brzina;} kung (ispaljeno> 1) {display.drawCircle (rx2, ry2, 1, 1); rx2 = rx2-brzina;} kung (ispaljeno> 2) {display.drawCircle (rx3, ry3, 4, 1); rx3 = rx3-brzina;} kung (ispaljeno> 3) {display.drawCircle (rx4, ry4, 2, 1); rx4 = rx4-brzina;} kung (digitalRead (12) == 0 && poz> = 2) {poz = poz-2;} kung (digitalRead (11) == 0 && poz128) postoji = 0; kung (smjer == 0) {nep = nep + bkugle;} iba pa {nep = nep-bkugle;} kung (nep> = (64-promjer)) smjer = 1; kung (nep = nep-promjer && mety (centar-promjer) && metx = pozicija-8 && ry <= pozicija + 8) kung (rx4) {rx = 95; ry = -50; tono (9, 100, 100); zivoti = zivoti-1; } kung (ry2> = pozicija-8 && ry2 <= pozicija + 8) kung (rx24) {rx2 = -50; ry2 = -50; tono (9, 100, 100); zivoti = zivoti-1; } kung (ry3> = pozicija-8 && ry3 <= pozicija + 8) kung (rx34) {rx3 = -50; ry3 = -50; tono (9, 100, 100); zivoti = zivoti-1; } kung (ry4> = pozicija-8 && ry4 <= pozicija + 8) kung (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; tono (9, 100, 100); zivoti = zivoti-1; } kung (rx4 <1) {ispaljeno = 0; rx4 = 200;} kung (zivoti == 0) go = 1; } kung (go == 1) {kung (zivoti == 0) {tone (9, 200, 300); pagkaantala (300); tono (9, 250, 200); pagkaantala (200); tono (9, 300, 300); pagkaantala (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (PUTI); display.setCursor (7, 10); display.println ("GAME OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("iskor:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("antas:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("oras (s):"); display.setCursor (60, 50); display.println (trenutno / 1000); display.display (); kung (digitalRead (3) == 0) {tone (9, 280, 300); pagkaantala (300); tono (9, 250, 200); pagkaantala (200); tono (9, 370, 300); pagkaantala (300); ponovo (); }}} void ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; pumunta = 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; } mahabang readVcc () {// Basahin ang sanggunian ng 1.1V laban sa AVcc // itakda ang sanggunian sa Vcc at ang pagsukat sa panloob na sangguniang 1.1V # kung tinukoy (_ AVR_ATmega32U4_) || tinukoy (_ AVR_ATmega1280_) || tinukoy (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); tinukoy ang #elif (_AVR_ATtiny24_) || tinukoy (_ AVR_ATtiny44_) || tinukoy (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); tinukoy ang #elif (_AVR_ATtiny25_) || tinukoy (_ AVR_ATtiny45_) || tinukoy (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif pagkaantala (2); // Maghintay para sa Vref upang maayos ang ADCSRA | = _BV (ADSC); // Start conversion habang (bit_is_set (ADCSRA, ADSC)); // pagsukat uint8_t mababa = ADCL; // dapat basahin muna ang ADCL - pagkatapos ay i-lock nito ang ADCH uint8_t high = ADCH; // unlock ang parehong mahabang resulta = (mataas << 8) | mababa; resulta = 1125300L / resulta; // Kalkulahin ang Vcc (sa mV); 1125300 = 1.1 * 1023 * 1000 resulta ng pagbabalik; // Vcc in millivolts} void beep (int note, int duration) {// Play tone on buzzerPin tone (9, note, tagal); pagkaantala (tagal); noTone (9); antala (50); }
Hakbang 4: Tangkilikin !!
Binabati kita sa wakas ay nagawa mo ito kung gusto mo ito pagkatapos ay mag-subscribe sa aking youtube channel
Inirerekumendang:
Subukan ang Bare Arduino, Gamit ang Software ng Laro Gamit ang Capacitive Input at LED: 4 na Hakbang
![Subukan ang Bare Arduino, Gamit ang Software ng Laro Gamit ang Capacitive Input at LED: 4 na Hakbang Subukan ang Bare Arduino, Gamit ang Software ng Laro Gamit ang Capacitive Input at LED: 4 na Hakbang](https://i.howwhatproduce.com/images/001/image-1847-j.webp)
Subukan ang Bare Arduino, Gamit ang Software ng Laro Gamit ang Capacitive Input at LED: " Push-It " Interactive na laro gamit ang isang hubad na Arduino board, walang mga panlabas na bahagi o mga kable na kinakailangan (gumagamit ng isang capacitive 'touch' input). Ipinapakita sa itaas, ipinapakita ang pagtakbo nito sa dalawang magkakaibang board. Push-Mayroon itong dalawang layunin. Upang mabilis na maipakita / v
DIY Handheld Game Console Gamit ang RetroPie: 7 Hakbang
![DIY Handheld Game Console Gamit ang RetroPie: 7 Hakbang DIY Handheld Game Console Gamit ang RetroPie: 7 Hakbang](https://i.howwhatproduce.com/images/002/image-3922-j.webp)
DIY Handheld Game Console Gamit ang RetroPie: Panoorin ang nasa itaas na video upang mas maintindihan ang proyektong ito. Ayos lang Panahon na upang magsimula ka! Una sa lahat, gagamitin namin ang RetroPie. Nag-iiwan ito sa amin ng dalawang pagpipilian. Kung na-install na namin ang Raspbian sa aming SD card, maaari naming mai-install ang RetroP
Gumawa ng isang Game Console Gamit ang Iyong Raspberry Pi !: 6 Mga Hakbang
![Gumawa ng isang Game Console Gamit ang Iyong Raspberry Pi !: 6 Mga Hakbang Gumawa ng isang Game Console Gamit ang Iyong Raspberry Pi !: 6 Mga Hakbang](https://i.howwhatproduce.com/images/005/image-14235-j.webp)
Gumawa ng isang Game Console Gamit ang Iyong Raspberry Pi !: Nais mo bang maglaro ng mga retro game nang hindi nagbabayad para sa mamahaling mga lumang console? Magagawa mo lamang iyan sa Raspberry Pi. Ang Raspberry Pi ay isang " laki ng credit card na computer " may kakayahang iyon ng maraming mga cool na bagay. Maraming magkakaibang uri
Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang
![Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang](https://i.howwhatproduce.com/images/010/image-27318-j.webp)
Internet Clock: Display Date and Time With an OLED Gamit ang ESP8266 NodeMCU With NTP Protocol: Kumusta mga tao sa mga itinuturo na ito na magtatayo kami ng isang orasan sa internet na magkakaroon ng oras mula sa internet kaya't ang proyektong ito ay hindi mangangailangan ng anumang RTC upang tumakbo, kakailanganin lamang nito ang isang nagtatrabaho koneksyon sa internet At para sa proyektong ito kailangan mo ng isang esp8266 na magkakaroon ng
Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)
![Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan) Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)](https://i.howwhatproduce.com/images/003/image-8443-20-j.webp)
Kontrolin ang Arduino Gamit ang Smartphone Sa Pamamagitan ng USB Sa Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at Arduino upang makontrol ang lampara, ang kumbinasyon ay sa pamamagitan ng USB serial port. Ang layunin ng pagtuturo na ito ay upang ipakita ang pinakasimpleng solusyon sa malayo-pagkontrol ng iyong Arduino o c