สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: บัดกรีส่วนประกอบทั้งหมด
- ขั้นตอนที่ 2: จัดเรียงทุกสิ่งในสถานที่
- ขั้นตอนที่ 3: การเขียนโปรแกรม
- ขั้นตอนที่ 4: สนุก!!
วีดีโอ: DIY เกมคอนโซลโดยใช้ Arduino: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ในบทช่วยสอนนี้ ฉันจะแสดงให้คุณเห็นว่าคุณสามารถสร้างเกมคอนโซลโดยใช้ Arduino nano ได้อย่างไร ดังนั้นหากคุณต้องการดูวิดีโอแบบละเอียดลองดูที่ช่อง youtube ของฉัน
เสบียง
หากคุณซื้อจากลิงค์นี้ มันจะช่วยให้ฉันเสนอโครงการเพิ่มเติมให้คุณ
1) ARDUINO NANO2) จอแสดงผล OLED3) ปุ่มกด4) สายไฟ
ขั้นตอนที่ 1: บัดกรีส่วนประกอบทั้งหมด
ดังนั้นหลังจากได้รับส่วนประกอบทั้งหมดแล้ว คุณต้องบัดกรีส่วนประกอบทั้งหมดตามที่แสดงในแผนภาพวงจรนี้
ขั้นตอนที่ 2: จัดเรียงทุกสิ่งในสถานที่
หลังจากบัดกรีทุกอย่างแล้ว จัดเรียงส่วนประกอบทั้งหมดแบบนี้เพื่อให้ดูดี
ขั้นตอนที่ 3: การเขียนโปรแกรม
ในที่สุดหลังจากทำตามขั้นตอนทั้งหมดอย่างถูกต้องก็ถึงเวลาอัปโหลดโค้ดด้านล่างไปยัง Arduino
#รวม
#include #include #include #include //#include #define 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 เป็น = 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; ค่าคงที่ int fH = 698; const int fSH = 740; const int gH = 784; const int gSH = 830; const int aH = 880; const ถ่านที่ไม่ได้ลงชื่อ PROGMEM dioda16 = { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0xF0, 0x3C, 0x00, 0x3C, 0x00, 0xFF, 0x00, 0x7F, 0xFF, 0x7F, 0xFF00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF00, 0xFF00, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00 }; const ถ่านที่ไม่ได้ลงชื่อ PROGMEM พายุ = { 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, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30000, 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, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x1F, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x1F, 0xE1, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x06, 0E, 0E, 0x06, 0E, 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, 0xF8, 0x09, 0xD0, 0x0B, 0x90x7, 0x1F 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x0026, 0x00, 0x00 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC8, 0x00, 0x80, 0x80 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0xA00, 0x80, 0B 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF00, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF00, 0x00, 0x00, 0x00 0xF8, 0x00, 0x00 }; การตั้งค่าเป็นโมฆะ () { pinMode (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("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); เสียงบี๊บ (chH, 150); เสียงบี๊บ (a, 500); เสียงบี๊บ (f, 350); เสียงบี๊บ (chH, 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 อิสปาลเจโน=0; int nivo=1; int centar=95; pocetno แบบยาวที่ไม่ได้ลงนาม=0; odabrano ยาวที่ไม่ได้ลงนาม=0; trenutno ยาวที่ไม่ได้ลงนาม=0; nivovrije ยาวที่ไม่ได้ลงนาม=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=มิลลิส(); odabrano= สุ่ม(400, 1200); poc=1; } trenutno=millis(); //nivoi if((trenutno-nivovrije)>50000) { nivovrije=trenutno; นิโว=นิโว+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); ซิโวติ=ซิโวติ-1; } if(ry2>=pozicija-8 && ry2<=pozicija+8) if(rx24) { rx2=-50; ry2=-50; โทน (9, 100, 100); ซิโวติ=ซิโวติ-1; } if(ry3>=pozicija-8 && ry3<=pozicija+8) if(rx34) { rx3=-50; ry3=-50; โทน (9, 100, 100); ซิโวติ=ซิโวติ-1; } if(ry4>=pozicija-8 && ry4<=pozicija+8) if(rx44) { rx4=200; ry4=-50; อิสปาลเจโน=0; โทน (9, 100, 100); ซิโวติ=ซิโวติ-1; } if(rx4<1){ ispaljeno=0; rx4=200;} if(zivoti==0) go=1; } if(go==1) { if(zivoti==0){ โทน(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("จบเกม!"); 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 () { metx=0; mety=0; postoji=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; นเวกา=1200; พรอมเจอร์=12; rx4=95; ry4=0; ซิโวติ=5; poc=0; อิสปาลเจโน=0; นิโว=1; โปเชตโน=0; โอดาบราโน=0; เตรนัทโน=0; นิโวริเย=0; } readVcc แบบยาว () { // อ่านค่าอ้างอิง 1.1V เทียบกับ AVcc // ตั้งค่าการอ้างอิงเป็น 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); #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, ระยะเวลา int) {// เล่นเสียงบนเสียงกริ่งพิน (9, บันทึก, ระยะเวลา); ล่าช้า(ระยะเวลา); noTone(9); ล่าช้า (50); }
ขั้นตอนที่ 4: สนุก!!
ยินดีด้วย ? ในที่สุดคุณก็ทำสำเร็จ ดังนั้นถ้าคุณชอบก็กดติดตามช่อง youtube ของฉัน
แนะนำ:
เลนส์มาโคร DIY พร้อม AF (แตกต่างจากเลนส์มาโคร DIY อื่นๆ ทั้งหมด): 4 ขั้นตอน (พร้อมรูปภาพ)
เลนส์มาโคร DIY พร้อม AF (แตกต่างจากเลนส์มาโคร DIY อื่นๆ ทั้งหมด): ฉันเคยเห็นคนจำนวนมากทำเลนส์มาโครด้วยเลนส์คิทมาตรฐาน (ปกติคือ 18-55 มม.) ส่วนใหญ่เป็นเลนส์ที่ติดกล้องไปด้านหลังหรือถอดองค์ประกอบด้านหน้าออก มีข้อเสียสำหรับทั้งสองตัวเลือกนี้ สำหรับติดเลนส์
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
สร้างระบบ DIY Hydroponic ขนาดเล็กและสวนสมุนไพร Hydroponic DIY พร้อมการแจ้งเตือน WiFi: 18 ขั้นตอน
สร้างระบบ DIY Hydroponic ขนาดเล็กและสวนสมุนไพร Hydroponic DIY พร้อมการแจ้งเตือน WiFi: ในบทช่วยสอนนี้ เราจะแสดงวิธีสร้างระบบ #DIY #hydroponics ระบบไฮโดรโปนิกส์ DIY นี้จะรดน้ำตามรอบการรดน้ำแบบไฮโดรโปนิกส์แบบกำหนดเองโดยเปิด 2 นาทีและปิด 4 นาที นอกจากนี้ยังจะติดตามระดับน้ำในอ่างเก็บน้ำ ระบบนี้
คอนโทรลเลอร์เกม DIY จาก Arduino - คอนโทรลเลอร์เกม Arduino PS2 - เล่น Tekken ด้วย DIY Arduino Gamepad: 7 ขั้นตอน
คอนโทรลเลอร์เกม DIY จาก Arduino | คอนโทรลเลอร์เกม Arduino PS2 | การเล่น Tekken ด้วย DIY Arduino Gamepad: สวัสดีทุกคน การเล่นเกมนั้นสนุกอยู่เสมอ แต่การเล่นด้วยตัวควบคุมเกม DIY ของคุณเองนั้นสนุกกว่า ดังนั้นเราจะสร้างคอนโทรลเลอร์เกมโดยใช้ Arduino pro micro ในคำแนะนำนี้