فهرست مطالب:
- تدارکات
- مرحله 1: لحیم کاری همه اجزاء
- مرحله 2: همه چیز را در مکان ها مرتب کنید
- مرحله 3: برنامه نویسی
- مرحله 4: لذت ببرید !
تصویری: کنسول بازی DIY با استفاده از آردوینو: 4 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:52
در این آموزش قصد دارم به شما نشان دهم که چگونه می توانید با استفاده از Arduino nano یک کنسول بازی بسازید. بنابراین اگر می خواهید ویدیوی دقیق را در مورد آن ببینید ، آن را در کانال یوتیوب من ببینید
تدارکات
اگر از این پیوندها خرید کنید به من کمک می کند تا پروژه های بیشتری به شما ارائه دهم
1) ARDUINO NANO2) صفحه نمایش OLED3) دکمه های فشار 4) سیم
مرحله 1: لحیم کاری همه اجزاء
بنابراین ، پس از به دست آوردن تمام قطعات ، باید همه اجزا را همانطور که در این نمودار نشان داده شده لحیم کنید
مرحله 2: همه چیز را در مکان ها مرتب کنید
بعد از لحیم کاری همه چیز را طوری تنظیم کنید که ظاهر زیبایی به آن بدهد
مرحله 3: برنامه نویسی
بنابراین ، سرانجام پس از انجام صحیح تمام مراحل ، زمان بارگذاری کد زیر در Arduino فرا رسیده است
#عبارتند از
#شامل #شامل #شامل #شامل # 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؛ توایع بدون علامت کاراکتر PROGMEM dioda16 = {مقدار 0x00، مقدار 0x00، مقدار 0x00، مقدار 0x00، 0x1C، مقدار 0x00، 0x3F، 0xF0، 0x3C، مقدار 0x00، 0x3C، مقدار 0x00، از 0xFF، مقدار 0x00، 0x7F، از 0xFF، 0x7F، از 0xFF، از 0xFF، مقدار 0x00، 0x3C ، 0x00 ، 0x3C ، 0x00 ، 0x1F ، 0xF0 ، 0x1C ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00} ؛ const unsigned char PROGMEM طوفان = {0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x7F 0xFE ، 0x04، مقدار 0x00، مقدار 0x00، 0x20، مقدار 0x00، مقدار 0x00، 0x04، مقدار 0x00، مقدار 0x00، 0x20، مقدار 0x00، مقدار 0x00، 0x04، مقدار 0x00، مقدار 0x00، 0x60، مقدار 0x00، مقدار 0x00، 0x02، مقدار 0x00، مقدار 0x00، 0x40، مقدار 0x00، مقدار 0x00، 0x02 ، مقدار 0x00، مقدار 0x00، 0x40، مقدار 0x00، مقدار 0x00، 0x01 موجود، مقدار 0x00، مقدار 0x00، 0x40، مقدار 0x00، مقدار 0x00، 0x01 موجود، مقدار 0x00، مقدار 0x00، 0x40، مقدار 0x00، مقدار 0x00، 0x01 موجود، مقدار 0x00، مقدار 0x00، 0x7F، 0xE0، مقدار 0x00، 0x01 موجود، مقدار 0x00 ، 0x00، 0x7F، 0xFF، 0xFF، 0xFF، 0x00، 0x00، 0x7F، 0xFF، 0xFF، 0xFF، 0x00، 0x00، 0xD7، 0xFF، 0xFF، 0xE1، 0x00، 0x01 0x0x، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF، 0xBF 0xBF ، 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، 0x0B، 0x90، 0x1F، 0x7C، 0x03، 0xF0، 0x0F، 0xC0، 0xFC، 0x0F، 0x07، 0x90، 0x0D، 0x43، 0xC0، 0x03، 0x07، 0x90، 0x05، 0x64، مقدار 0x00، مقدار 0x00، 0xCF، 0x10، 0x07، 0xFC، مقدار 0x00، مقدار 0x00، 0x26، 0x10، 0x01 موجود، 0x80، مقدار 0x00، مقدار 0x00، 0x10، 0x20، 0x01 موجود، مقدار 0x00، مقدار 0x00، مقدار 0x00، 0x0E، 0x40، 0x01 موجود، 0x80، 0x07، 0xF0، 0x01 موجود، 0x80، مقدار 0x00، 0x80، 0x07، 0xC8، مقدار 0x00، 0x80، مقدار 0x00، 0x80، 0x0B، 0xE8، مقدار 0x00، 0x80، مقدار 0x00، 0x87، 0x97، 0xE9، 0xE0، 0x80، مقدار 0x00، 0x87، 0xDF، 0xEF، 0xA0، 0x80، مقدار 0x00، 0x4B، از 0xFF، از 0xFF، 0xA0، 0x80، مقدار 0x00، 0x6B، 0xDF، 0xFB، 0xA3، مقدار 0x00، مقدار 0x00، 0x24، 0x97، 0xE8، 0x24، مقدار 0x00، مقدار 0x00، 0x1E، 0x1F، 0xC0، 0x2C، مقدار 0x00، مقدار 0x00، 0x07، 0xF8، 0x1F، 0xF0، مقدار 0x00، مقدار 0x00، مقدار 0x00، 0x0F، 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 ، طوفان ، 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 ("vs") ؛ display.setCursor (0 ، 0) ؛ float voltaza = readVcc ()/1000؛ display.println (ولتازا) ؛؛ 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 nivo = 1 ؛ int centar = 95؛ pocetno طولانی بدون علامت = 0؛ odabrano طولانی بدون علامت = 0؛ trenutno طولانی بدون امضا = 0؛ nivovrije طولانی بدون امضا = 0؛ int poz = 30؛ void loop () {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 = تصادفی (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 ؛ تن (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؛ } if (rx4 <1) {ispaljeno = 0؛ rx4 = 200؛} if (zivoti == 0) go = 1؛ } if (go == 1) {if (zivoti == 0) {tone (9، 200، 300)؛ تأخیر (300) ؛ تن (9 ، 250 ، 200) ؛ تأخیر (200) ؛ تن (9 ، 300 ، 300) ؛ تأخیر (300) ؛ زیووتی = 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 (bodovi) ؛ display.setCursor (7 ، 40) ؛ display.println ("سطح:")؛ display.setCursor (44 ، 40) ؛ display.println (nivo) ؛ 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 ؛ postoji = 0؛ nep = 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 ؛ زیووتی = 5 ؛ poc = 0؛ ispaljeno = 0؛ nivo = 1 ؛ pocetno = 0؛ odabrano = 0 ؛ trenutno = 0 ؛ nivovrije = 0 ؛ } long 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) ؛ #دیگر 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) | کم؛ result = 1125300L / result؛ // محاسبه Vcc (در میلی ولت) ؛ 1125300 = 1.1*1023*1000 نتیجه بازگشت ؛ // Vcc بر حسب میلی ولت} بوق خالی (int note ، int duration) {// پخش آهنگ در buzzerPin tone (9 ، توجه داشته باشید ، مدت زمان) ؛ تاخیر (مدت زمان) ؛ noTone (9) ؛ تأخیر (50) ؛ }
مرحله 4: لذت ببرید !
تبریک می گویم ؟ شما در نهایت موفق شدید پس اگر دوست داشتید ، در کانال یوتیوب من مشترک شوید
توصیه شده:
کنسول بازی دستی DIY با استفاده از RetroPie: 7 مرحله
کنسول بازی دستی DIY با استفاده از RetroPie: برای درک بهتر این پروژه ، ویدیوی بالا را تماشا کنید. خوب. زمان شروع کار است! اول از همه ، ما قصد داریم از RetroPie استفاده کنیم. این امر دو گزینه پیش روی ما می گذارد. اگر قبلاً Raspbian را روی کارت SD خود نصب کرده ایم ، می توانیم RetroP را نصب کنیم
با استفاده از تمشک پای خود یک کنسول بازی بسازید!: 6 مرحله
با استفاده از تمشک پای خود یک کنسول بازی بسازید !: آیا می خواهید بدون پرداخت هزینه کنسول های قدیمی گران قیمت ، بازی های یکپارچهسازی با سیستمعامل انجام دهید؟ شما می توانید همین کار را با رزبری پای انجام دهید. رزبری پای یک & quot؛ رایانه به اندازه کارت اعتباری & quot؛ که قادر به انجام بسیاری از چیزهای جالب است. انواع مختلفی وجود دارد
کنترل کننده بازی مبتنی بر آردوینو - کنترل کننده بازی Arduino PS2 - بازی Tekken With DIY Arduino Gamepad: 7 مرحله
کنترل کننده بازی مبتنی بر آردوینو | کنترل کننده بازی Arduino PS2 | بازی Tekken With DIY Arduino Gamepad: سلام بچه ها ، بازی کردن همیشه سرگرم کننده است اما بازی با کنترلر بازی سفارشی DIY خود سرگرم کننده تر است. بنابراین ما در این دستورالعمل یک کنترلر بازی با استفاده از arduino pro micro ایجاد می کنیم
کنسول بازی Handheld Recalbox با استفاده از 2.2 TFT: 6 مرحله
کنسول بازی Handheld Recalbox با استفاده از 2.2 TFT: دستورالعمل های DIY یک کنسول بازی recalbox دستی با استفاده از TFT LCD 2.2 اینچی و دکمه های Raspberry Pi 0 W و GPIO. برای نمایش کامل مراحل مربوطه می توانید این ویدیوی یوتیوب را مشاهده کنید: تمام قطعات را دریافت کنید. B قطعات را با هم لحیم کنید
کنسول بازی Ardubaby Mini با 500 بازی: 10 مرحله
Ardubaby Mini Game Console با 500 بازی: اعتبار به سازنده (کوین بیتس) ، Arduboy یک کنسول بازی 8 بیتی بسیار موفق است. هزاران بازی توسط علاقه مندان نوشته شده بود که آنها را آزادانه در انجمن انجمن Arduboy به اشتراک گذاشتند تا افراد بیشتری بتوانند نحوه کد نویسی را یاد بگیرند. سخت افزار