תוכן עניינים:
וִידֵאוֹ: קונסולת משחקים DIY באמצעות Arduino: 4 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
במדריך זה אני הולך להראות לך כיצד תוכל להכין קונסולת משחקים באמצעות Arduino nano. אז אם אתה רוצה לראות עליו סרטון מפורט, בדוק אותו בערוץ היוטיוב שלי
אספקה
אם תקנה מהקישורים האלה זה יעזור לי לתת לך עוד פרויקטים
1) ARDUINO NANO2) OLED DISPLAY3) לחצני PUSH4) WIRES
שלב 1: הלחמת כל הרכיבים
לכן, לאחר קבלת כל הרכיבים עליך להלחם את כל הרכיבים כפי שמוצג בתרשים המעגל הזה
שלב 2: מסדרים את כל הדברים במקומות
לאחר הלחמה הכל לסדר את כל הרכיבים כך לתת לו מראה יפה
שלב 3: תכנות
אז, סוף סוף לאחר ביצוע כל השלבים כראוי הגיע הזמן להעלות את הקוד למטה ל- Arduino
#לִכלוֹל
#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, 0x00,, 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, 0x7, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 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, 0x0, 0x0,, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 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, 0x1, 0x,, 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, 0x0, 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, 0x0, 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 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, 0xB0, 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x00}; הגדרת חלל () {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, storm, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (לבן); display.setCursor (65, 14); display.println ("xWing"); display.setFont (); display.setCursor (65, 17); display.setTextSize (0); display.println ("לעומת"); display.setCursor (0, 0); צף voltaza = readVcc ()/1000; display.println (voltaza);; display.setFont (& FreeSans9pt7b); display.setCursor (65, 39); display.println ("מוות"); display.setFont (); display.setCursor (65, 42); display.println ("כוכב"); display.setTextSize (0); display.setCursor (65, 55); display.println ("מאת VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); צפצוף (a, 500); צפצוף (a, 500); צפצוף (a, 500); צפצוף (f, 350); ביפ (cH, 150); צפצוף (a, 500); צפצוף (f, 350); צפצוף (cH, 150); צפצוף (a, 650); עיכוב (500); עיכוב (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; // מהירות הכדור 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 level = 1; int centar = 95; pocetno ארוך ללא חתום = 0; odabrano ארוך ללא סימן = 0; trenutno ארוך ללא חתום = 0; nivovrije ארוך ללא חתימה = 0; int poz = 30; לולאת void () {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); אם (poc == 0) {pocetno = millis (); odabrano = אקראי (400, 1200); poc = 1; } trenutno = מיליס (); // nivoi if ((trenutno-nivovrije)> 50000) {nivovrije = trenutno; רמה = רמה+1; brzina = brzina+1; // brizna neprijateljevog metka if (רמה % 2 == 0) {bkugle = bkugle+1; promjer = promjer-1; } נג'מנג'ה = נג'מניה -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; אם (smjer == 0) {nep = nep+bkugle;} אחרת {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; טון (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozicija-8 && ry2 <= pozicija+8) if (rx24) {rx2 = -50; ry2 = -50; טון (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozicija-8 && ry3 <= pozicija+8) if (rx34) {rx3 = -50; ry3 = -50; טון (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozicija-8 && ry4 <= pozicija+8) if (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; טון (9, 100, 100); zivoti = zivoti-1; } אם (rx4 <1) {ispaljeno = 0; rx4 = 200;} אם (zivoti == 0) go = 1; } if (go == 1) {if (zivoti == 0) {טון (9, 200, 300); עיכוב (300); טון (9, 250, 200); עיכוב (200); טון (9, 300, 300); עיכוב (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (לבן); display.setCursor (7, 10); display.println ("GAME OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("ציון:"); display.setCursor (44, 30); display.println (בודובי); display.setCursor (7, 40); display.println ("רמה:"); display.setCursor (44, 40); display.println (רמה); display.setCursor (7, 50); display.println ("זמן (ים):"); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); if (digitalRead (3) == 0) {טון (9, 280, 300); עיכוב (300); טון (9, 250, 200); עיכוב (200); טון (9, 370, 300); עיכוב (300); ponovo (); }}} void ponovo () {metx = 0; mety = 0; פוסטוג'י = 0; נפ = 8; smjer = 0; ללכת = 0; rx = 95; ry = 0; rx2 = 95; ry2 = 0; rx3 = 95; ry3 = 0; בודובי = 0; brzina = 3; // brizna neprijateljevog metka bkugle = 1; נג'מניה = 600; najveca = 1200; promjer = 12; rx4 = 95; ry4 = 0; zivoti = 5; poc = 0; ispaljeno = 0; רמה = 1; pocetno = 0; odabrano = 0; trenutno = 0; nivovrije = 0; } readVcc ארוך () {// קרא התייחסות 1.1V מול AVcc // הגדר את ההפניה ל- Vcc ואת המדידה להתייחסות הפנימית 1.1V #אם מוגדר (_ AVR_ATmega32U4_) || מוגדר (_ AVR_ATmega1280_) || מוגדר (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif מוגדר (_AVR_ATtiny24_) || מוגדר (_ AVR_ATtiny44_) || מוגדר (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif מוגדר (_AVR_ATtiny25_) || מוגדר (_ AVR_ATtiny45_) || מוגדר (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif עיכוב (2); // המתן עד ש- Vref יסדיר את ADCSRA | = _BV (ADSC); // התחל המרה בעוד (bit_is_set (ADCSRA, ADSC)); // מדידת uint8_t נמוך = ADCL; // חייב לקרוא ADCL תחילה - לאחר מכן הוא נועל ADCH uint8_t high = ADCH; // פותח את שתי התוצאות הארוכות = (גבוה << 8) | נָמוּך; תוצאה = 1125300L / תוצאה; // חשב Vcc (ב- mV); 1125300 = 1.1*1023*1000 תוצאת החזרה; // Vcc במיליוולט} צפצוף ריק (int note, int duration) {// צליל השמעה על צליל BuzzerPin (9, הערה, משך); עיכוב (משך); noTone (9); עיכוב (50); }
שלב 4: תהנו !
מזל טוב ? סוף סוף הצלחת, אז אם אהבת את זה אז הירשם לערוץ היוטיוב שלי
מוּמלָץ:
לגו קונסולת משחקים ניידת עם פולשי שטח: 4 שלבים
לגו קונסולת משחקים ניידת עם Space Invaders: חשבת פעם להיות מפתחת משחקים ולבנות קונסולת משחקים משלך שתוכל לשחק בה תוך כדי תנועה? כל מה שאתה צריך זה קצת זמן, חומרה Lego bricksa Mini-Calliope (ניתן להזמין באתר זה https://calliope.cc/en) וכמה מיומנויות
קונסולת משחקים כף יד DIY באמצעות RetroPie: 7 שלבים
קונסולת משחקים כף יד DIY באמצעות RetroPie: צפו בסרטון הנ"ל כדי להבין טוב יותר את הפרויקט הזה. בסדר גמור. הגיע הזמן שתתחיל! קודם כל, אנחנו הולכים להשתמש ב- RetroPie. זה משאיר לנו שתי אפשרויות. אם כבר התקנו את Raspbian בכרטיס ה- SD שלנו, נוכל להתקין את RetroP
הכינו קונסולת משחקים רטרו ניידת משלכם! שהיא גם טאבלט Win10 !: 6 שלבים (עם תמונות)
צור משלך משחקי רטרו נייד משלך! …… שהוא גם לוח Win10!: בפרויקט זה אראה לך כיצד ליצור קונסולת משחקים רטרו ניידת שיכולה לשמש גם כטאבלט של Windows 10. הוא יכלול 7 " HDMI LCD עם מסך מגע, LattePanda SBC, PCB מסוג Type C PD ועוד כמה משלימים
קונסולת משחקים כף יד DIY פטל אפס אפס: 6 שלבים (עם תמונות)
קונסולת משחקים כף יד של Raspberry Pi Zero: בפרויקט זה אראה לכם כיצד השתמשתי ב- Raspberry Pi Zero, סוללות NiMH, מעגל הגנה לפריקת יתר תוצרת בית, lcd אחורי ומגבר שמע ליצירת קונסולת משחקים כף יד שיכולה לשחק משחקי רטרו. בואו נתחיל
קונסולת משחקים כף יד Recalbox באמצעות 2.2 TFT: 6 שלבים
קונסולת משחקים מסוג Recalbox כף יד באמצעות 2.2 TFT: הוראות לביצוע עשה זאת בעצמך של קונסולת משחקים כף יד באמצעות 2.2 "TFT LCD וכפתורי Raspberry Pi 0 W ו- GPIO. תוכל לצפות בסרטון יוטיוב זה להדגמה מלאה של השלבים המעורבים: א. קבל את כל החלקים. ב. הלחמו את החלקים יחד