สารบัญ:

Arduino VGA Console พร้อมห้าเกม: 4 ขั้นตอน
Arduino VGA Console พร้อมห้าเกม: 4 ขั้นตอน

วีดีโอ: Arduino VGA Console พร้อมห้าเกม: 4 ขั้นตอน

วีดีโอ: Arduino VGA Console พร้อมห้าเกม: 4 ขั้นตอน
วีดีโอ: ez debug vga led 2024, กรกฎาคม
Anonim
Image
Image
Arduino VGA Console พร้อมห้าเกม
Arduino VGA Console พร้อมห้าเกม
Arduino VGA Console พร้อมห้าเกม
Arduino VGA Console พร้อมห้าเกม

ใน Instructables ก่อนหน้าของฉัน ฉันได้ทำซ้ำเกมอาร์เคดคลาสสิกยอดนิยมบางเกมในเวอร์ชันที่เรียบง่าย โดยใช้ Arduino เปล่าและส่วนประกอบอื่นๆ บางส่วน ต่อมาฉันรวมห้าคนเข้าด้วยกันในร่างเดียว ที่นี่ฉันจะแสดงให้เห็นว่าคุณสามารถสร้างคอนโซลอย่างง่ายที่สามารถเล่น Pong, Breakout, Bomber, Tetris และของเล่นวาดรูปที่ได้รับแรงบันดาลใจจาก Etch-a-Sketch คอนโซลนี้ยังสามารถใช้เพื่อเล่น Snake และอีกสองเกมที่เขียนโดยผู้เขียนคนอื่น: Bit Ninja โดย Sandro Maffiodo aka "Smaffer" และ Stacker โดย Nikita Kurylev

คุณสมบัติหลักคือการสร้างสัญญาณ VGA ด้วยไลบรารี VGAx ดังนั้นคอนโซลจึงต้องการจอภาพ VGA เป้าหมายของฉันตามปกติคือการหลีกเลี่ยง "ส่วนประกอบพิเศษ" เพื่อสร้างมัน คุณไม่จำเป็นต้องมี IC หรือโล่ที่รองรับ! ส่วนประกอบเดียวคือโพเทนชิโอมิเตอร์สองตัว ห้าปุ่ม ตัวต้านทานไม่กี่ตัว และขั้วต่อ DSUB15 (VGA) ลำโพงเพียโซเป็นตัวเลือก คุณสามารถดูว่าเกมเหล่านี้มีลักษณะอย่างไรในรูปภาพในหน้านี้

ไลบรารี VGAx อนุญาตให้ใช้สี่สีที่มีความละเอียด 120 x 60 พิกเซล ไม่มากแต่เพียงพอสำหรับคอนโซลเกมย้อนยุคนี้ กราฟิกเป็นแบบดิบ แต่ด้วยการใช้โพเทนชิออมิเตอร์ เกมจึงดำเนินไปอย่างราบรื่น มีเอฟเฟกต์เสียงที่เรียบง่ายด้วย

ขั้นตอนที่ 1: วิธีสร้างคอนโซล Arduino VGA ของคุณเอง

วิธีสร้างคอนโซล Arduino VGA ของคุณเอง
วิธีสร้างคอนโซล Arduino VGA ของคุณเอง
วิธีสร้างคอนโซล Arduino VGA ของคุณเอง
วิธีสร้างคอนโซล Arduino VGA ของคุณเอง

ก่อนอื่นให้ดาวน์โหลดรหัส ArduinoVGAgame.ino และ/หรือ Snake.ino ที่ด้านล่างของหน้านี้ แล้วคัดลอกลงในพีซีของคุณในไดเร็กทอรีที่มีชื่อเดียวกัน ดาวน์โหลดไลบรารี VGAx จากลิงค์นี้บน GitHub วิธีที่ง่ายที่สุดคือคัดลอกลงในโฟลเดอร์ย่อยซอฟต์แวร์ Arduino ชื่อ "ไลบรารี" เพื่อให้จดจำได้ทันที

สำคัญ: ไลบรารีนี้ใช้งานได้กับ Arduno IDE 1.6.4 แต่ไม่สามารถทำงานร่วมกับเวอร์ชันเก่าหรือใหม่กว่าได้อย่างสมบูรณ์

อัปโหลดรหัสในบอร์ด Arduino ของคุณ (ฉันทดสอบทั้ง Uno และ Nano) คำเตือนสำหรับหน่วยความจำเหลือน้อยเป็นเรื่องปกติ หากคุณไม่มีข้อผิดพลาดอื่น ๆ ทุกอย่างก็เรียบร้อย และคุณสามารถเริ่มสร้างคอนโซลของคุณเองได้ทันที

สำหรับสิ่งนี้คุณต้อง:

  • Arduino Uno Rev. 3 หรือ Arduino Nano 3.x (ATmega328)
  • ขั้วต่อ DSUB15 เช่น ขั้วต่อ VGA ตัวเมีย หรือสาย VGA ที่จะตัด
  • ตัวต้านทาน: 2 x 68 Ohm และ 2 x 470 Ohm และ 5 x 1 ถึง 2 kOhm
  • โพเทนชิโอมิเตอร์เชิงเส้น 10 kOhm สองตัว (ค่าที่คล้ายกันก็ใช้ได้เช่นกัน)
  • ห้าปุ่ม
  • สายเคเบิลบางส่วน
  • กล่องสวยหนึ่งหรือสองกล่องสำหรับใส่ส่วนประกอบทั้งหมด

คณะ:

  • เขียงหั่นขนมหรือกระดานแถบ
  • ลำโพงเพียโซ

มีการรายงานแผนผังที่ด้านบนของขั้นตอนนี้ พร้อมด้วยตัวอย่างของ "คอนโซล" ที่เสร็จสิ้นแล้ว

แผนผังแสดงวิธีเชื่อมต่อปุ่มและโพเทนชิออมิเตอร์ โดยเฉพาะอย่างยิ่ง คุณต้องเชื่อมต่อห้าปุ่มกับพิน 5, 10, 11, 12 และ 13 ตามลำดับ การดำเนินการที่ดำเนินการโดยแต่ละปุ่มมีอธิบายไว้ในตารางด้านขวาบนในแผนผัง ทางด้านซ้ายจะแสดงวิธีเชื่อมต่อโพเทนชิออมิเตอร์ (คุณต้องมีโพเทนชิโอมิเตอร์สองตัวเพื่อยึด A1 และ A2) ลำโพงต้องเชื่อมต่อกับขาอนาล็อก A0

ฉันวางบอร์ด Arduino พร้อมขั้วต่อ VGA ในกล่องไม้ ซึ่งมีโพเทนชิออมิเตอร์สำหรับผู้เล่นตัวแรกและปุ่มสี่ปุ่มด้วย ในขณะที่โพเทนชิออมิเตอร์ของผู้เล่นตัวที่สองและปุ่มเริ่มต้นอยู่ในกล่องแยกและเล็กกว่า

หากคุณชอบของเล่นชิ้นนี้และตัดสินใจที่จะทำซ้ำ ฉันขอขอบคุณหากคุณเขียนความคิดเห็นหรือส่งรูปภาพในส่วนความคิดเห็นด้านล่าง

ขั้นตอนที่ 2: เกมจากผู้เขียนคนอื่น

Sandro Maffiodo เพิ่งเปิดตัวเกม BitNinja คุณสามารถหาข้อมูลเพิ่มเติมได้ที่นี่ และดาวน์โหลดโค้ดได้ที่นี่

ในการใช้คอนโซลของฉัน คุณเพียงแค่ทำการแมปปุ่มในโค้ดของเขาใหม่ดังนี้:

#define BTN_UP 11 (แทนที่จะเป็น 13)

#define BTN_LEFT 10 (แทนที่จะเป็น 12)

#define BTN_RIGHT 12 (แทนที่จะเป็น 11)

Stacker จาก Nikita Kurylev มีให้ที่นี่ ข้อมูลเพิ่มเติมที่นี่

อีกครั้ง คุณต้องทำการแมปปุ่มเดียว ในส่วนต่าง ๆ ของรหัส: เพียงแทนที่ digitalRead(2) ด้วย digitalRead(13)

ขั้นตอนที่ 3: ภาคผนวก 1: รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวควบคุม

ภาคผนวก 1: รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวควบคุม
ภาคผนวก 1: รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวควบคุม
ภาคผนวก 1: รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวควบคุม
ภาคผนวก 1: รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวควบคุม
ภาคผนวก 1: รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวควบคุม
ภาคผนวก 1: รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวควบคุม
ภาคผนวก 1: รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวควบคุม
ภาคผนวก 1: รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวควบคุม

คุณสามารถรับรู้ตัวควบคุมได้หลายวิธี ขึ้นอยู่กับวัสดุที่มีอยู่และรสนิยมของคุณ

ฉันชอบที่จะตระหนักถึงพวกเขาด้วยกล่องไม้ (ดูภาพในหน้านี้) กล่องหลักสำหรับ Arduino, ขั้วต่อ VGA และปุ่มเครื่องเล่นและโพเทนซิโอมิเตอร์ตัวแรก วินาที (เล็กกว่า) หนึ่งอันสำหรับปุ่มและวงล้อของผู้เล่นคนที่สอง (จำเป็นสำหรับพงษ์และของเล่นวาดรูป) ความเป็นไปได้อีกประการหนึ่งคือการใส่ทุกอย่างลงในกล่องที่ใหญ่ขึ้นเพียงกล่องเดียว

ก่อนอื่นฉันแนะนำให้เชื่อมต่อพอร์ต VGA ในภาพแรกและภาพที่สอง คุณสามารถดูรายละเอียดบางอย่างได้: สังเกตตัวต้านทาน 470 โอห์มสองตัวสำหรับสีแดงและสีเขียวที่เชื่อมต่อกับพิน 6 และ 7 ตามลำดับ และ 68 โอห์มสองตัวสำหรับพิน 3 และ 9 สำหรับสัญญาณการซิงโครไนซ์แนวนอนและแนวตั้ง

คุณสามารถเลือกการผสมสีต่างๆ ได้ขึ้นอยู่กับพินที่คุณเชื่อมต่อบนตัวเชื่อมต่อ VGA DSUB15 พิน 1, 2 และ 3 แสดงถึงสีแดง เขียว น้ำเงิน (RGB) ตามลำดับ ฉันเชื่อมต่อหมุด 1 และ 2 ดังนั้นฉันจึงมีการผสมสีดังต่อไปนี้: (0, 0) = สีดำ; (1, 0) = สีแดง; (0, 1) = สีเขียว; (1, 1) = สีเหลือง

สำหรับความเป็นไปได้ที่แตกต่างกันทั้งหมด ฉันแนะนำให้อ่านรายละเอียดในหน้าที่คุณดาวน์โหลดไลบรารี VGAx

ทันทีที่ขั้วต่อ VGA พร้อม คุณสามารถเตรียมสายเคเบิลอื่นๆ ทั้งหมดสำหรับปุ่ม ล้อเลื่อน และลำโพง (ดูรูปที่ 2)

ตอนนี้ เพียงแค่รวมทุกอย่างเข้าด้วยกัน: จำไว้ว่าหมุดแต่ละปุ่มจะต้องต่อกับกราวด์ผ่านตัวต้านทาน 1 หรือ 2 kOhm ไม่เช่นนั้นเมื่อปุ่มเปิดอยู่ สถานะของพินอาจไม่ได้กำหนดไว้ ซึ่งหมายความว่าหากไม่ได้เชื่อมต่อพิน คุณสามารถมีแรงดันไฟฟ้าแบบสุ่ม (คงที่) ที่พินซึ่งสามารถเปิดใช้งานได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับแผนผังในขั้นตอนที่สองของคำแนะนำนี้

ขั้นตอนสุดท้ายคือการแก้ไขทุกอย่างให้เข้าที่ ฉันใช้ปืนกาวร้อน แต่คุณสามารถใช้วิธีที่คุณต้องการได้

ขั้นตอนที่ 4: ภาคผนวก 2: ข้อควรพิจารณาบางประการเกี่ยวกับขีดจำกัดหน่วยความจำ

เป็นเรื่องน่าทึ่งที่ Arduino ธรรมดาสามารถสร้างสัญญาณ VGA และเกมเหล่านี้ทั้งหมดเข้าด้วยกันได้ คอขวดที่แท้จริงคือการขาด SRAM ไมโครคอนโทรลเลอร์ AVR มีพื้นที่จัดเก็บและจัดการตัวแปรเพียง 2048 ไบต์ และไลบรารี VGAx จะจัดเก็บตัวแปรหน้าจอในเฟรมบัฟเฟอร์ขนาด 120x60 พิกเซล โดยที่แต่ละพิกเซลต้องการ 2 บิต (4 สี) รวมเป็น 1800 ไบต์ ซึ่งหมายความว่าเหลือเพียง 248 ไบต์สำหรับตัวแปรแบบร่าง นอกจากนี้ จากประสบการณ์ของผม ผู้ใช้ควรปล่อยว่างอย่างน้อย 100 ไบต์เพื่อหลีกเลี่ยงความไม่เสถียร การใช้หน่วยความจำแบบไดนามิกที่สูงกว่า 1950 ไบต์ ไมโครคอนโทรลเลอร์เริ่มแสดงพฤติกรรมที่แปลกและคาดเดาไม่ได้

ซึ่งหมายความว่าตัวแปรทั้งหมดจะต้องใช้ร่วมกันระหว่างเกมต่างๆ และทำให้โค้ดอ่านไม่ได้และแก้จุดบกพร่องได้ยาก ไม่ใช่แค่เรื่องที่จะ "เพิ่มเกมใหม่" ให้กับภาพสเก็ตช์ก่อนหน้านี้ แต่โค้ดทั้งหมดต้องได้รับการแก้ไขและเพิ่มประสิทธิภาพอย่างล้ำลึก

นอกจากนี้ ฉันต้องใช้รูปแบบตัวแปรขั้นต่ำที่เป็นไปได้ เช่น สำหรับพิกัดทั้งหมดที่ฉันต้องใช้ "ไบต์" แทน "int" หรือในกรณีอื่น ฉันต้องใช้ "int" มากกว่า "float"

สุดท้ายนี้ ความรู้ของฉันไปที่ Sandro Maffiodo aka Smaffer ผู้สร้างไลบรารี VGAx และเกม BitNinja ที่ยอดเยี่ยม ถ้าไม่มีห้องสมุดนี้ โครงการนี้ก็ไม่สามารถเกิดขึ้นได้

ขอขอบคุณ Nikita Kurylev สำหรับเกม Stacker ที่เรียบง่าย แต่ตลก

แนะนำ: