Arduino ব্যবহার করে DIY গেম কনসোল: 4 টি ধাপ
Arduino ব্যবহার করে DIY গেম কনসোল: 4 টি ধাপ
Anonim
Image
Image

এই টিউটোরিয়ালে আমি আপনাকে দেখাতে যাচ্ছি যে কিভাবে আপনি Arduino nano ব্যবহার করে একটি গেমিং কনসোল তৈরি করতে পারেন। সুতরাং আপনি যদি এর উপর বিস্তারিত ভিডিও দেখতে চান তাহলে আমার ইউটিউব চ্যানেলে এটি দেখুন

সরবরাহ

আপনি যদি এই লিঙ্কগুলি থেকে কিনেন তবে এটি আপনাকে আরও প্রকল্প দিতে সাহায্য করবে

1) ARDUINO NANO2) OLED DISPLAY3) PUSH BUTTONS4) WIRES

ধাপ 1: সমস্ত উপাদান সোল্ডারিং

উপভোগ করুন !!!
উপভোগ করুন !!!

সুতরাং, সমস্ত উপাদান পাওয়ার পরে আপনাকে এই সার্কিট ডায়াগ্রামে দেখানো সমস্ত উপাদানগুলি সোল্ডার করতে হবে

ধাপ 2: সব জায়গায় জিনিস সাজান

সবকিছু সোল্ডার করার পরে এটিকে একটি সুন্দর চেহারা দেওয়ার জন্য এর মতো সমস্ত উপাদানগুলি সাজান

ধাপ 3: প্রোগ্রামিং

সুতরাং, অবশেষে সমস্ত ধাপ সঠিকভাবে অনুসরণ করার পরে নীচের কোডটি আরডুইনোতে আপলোড করার সময় এসেছে

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত # #অন্তর্ভুক্ত #OLED_RESET 4 নির্ধারণ করুন 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, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00}; const স্বাক্ষর না করা চর প্রোগ্রাম ঝড় = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,,,,,,,,,,, 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}; অকার্যকর সেটআপ () {পিনমোড (3, INPUT_PULLUP); পিনমোড (12, INPUT_PULLUP); পিনমোড (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 ("বনাম"); 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 (); বিপ (একটি, 500); বিপ (একটি, 500); বিপ (একটি, 500); বিপ (f, 350); বিপ (সিএইচ, 150); বিপ (একটি, 500); বিপ (f, 350); বিপ (সিএইচ, 150); বিপ (একটি, 650); বিলম্ব (500); বিলম্ব (500); } int metx = 0; int মেটি = 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; // বুলেটের গতি 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 কেন্দ্র = 95; স্বাক্ষরবিহীন দীর্ঘ পোসেটনো = 0; স্বাক্ষরবিহীন দীর্ঘ ওডাব্রানো = 0; স্বাক্ষরবিহীন দীর্ঘ trenutno = 0; স্বাক্ষরবিহীন দীর্ঘ নিভোভ্রিজে = 0; int poz = 30; অকার্যকর লুপ () {যদি (যান == 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; 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; } যদি ((odabrano+pocetno) 0) {display.drawCircle (rx, ry, 2, 1); rx = rx-brzina;} যদি (ispaljeno> 1) {display.drawCircle (rx2, ry2, 1, 1); rx2 = rx2-brzina;} যদি (ispaljeno> 2) {display.drawCircle (rx3, ry3, 4, 1); rx3 = rx3-brzina;} যদি (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;} 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; } যদি (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 ("গেম ওভার!"); 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 (); যদি (digitalRead (3) == 0) {স্বর (9, 280, 300); বিলম্ব (300); স্বর (9, 250, 200); বিলম্ব (200); স্বর (9, 370, 300); বিলম্ব (300); পোনোভো (); }}} অকার্যকর পোনোভো () {metx = 0; মেটি = 0; পোস্টোজি = 0; nep = 8; smjer = 0; যান = 0; rx = 95; ry = 0; rx2 = 95; ry2 = 0; rx3 = 95; ry3 = 0; bodovi = 0; ব্রজিনা = 3; // brizna neprijateljevog metka bkugle = 1; নাজমঞ্জ = 600; নাজভেকা = 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 () {// AVcc এর বিপরীতে 1.1V রেফারেন্স পড়ুন // Vcc তে রেফারেন্স সেট করুন এবং অভ্যন্তরীণ 1.1V রেফারেন্সের পরিমাপ #if সংজ্ঞায়িত (_ 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); #শেষ বিলম্ব (2); // Vref ADCSRA নিষ্পত্তির জন্য অপেক্ষা করুন | = _BV (ADSC); // রূপান্তর শুরু করুন যখন (bit_is_set (ADCSRA, ADSC)); // uint8_t কম = ADCL পরিমাপ; // প্রথমে ADCL পড়তে হবে - তারপর ADCH uint8_t high = ADCH লক করে; // দীর্ঘ ফলাফল = (উচ্চ << 8) | কম; ফলাফল = 1125300L / ফলাফল; // Vcc গণনা করুন (এমভি তে); 1125300 = 1.1*1023*1000 রিটার্ন ফলাফল; // Vcc in millivolts} void beep (int note, int duration) {// buzzerPin স্বরে প্লে টোন বিলম্ব (সময়কাল); noTone (9); বিলম্ব (50); }

ধাপ 4: উপভোগ করুন !

অভিনন্দন? আপনি অবশেষে এটি তৈরি করেছেন তাই যদি আপনি এটি পছন্দ করেন তবে আমার ইউটিউব চ্যানেলটি সাবস্ক্রাইব করুন

প্রস্তাবিত: