กลับไปหน้ารวมไฟล์
connect-4-playing-machine-da5a33.md

Introduction

คำแนะนำเหล่านี้อธิบายเกี่ยวกับการสร้าง การประกอบ และการทำงานของเกม Connect 4 ที่สร้างขึ้นเพื่อใช้งานกับไมโครคอนโทรลเลอร์ Arduino เกมประกอบด้วยกระดานเกมที่ซื้อมา ชิ้นส่วนที่พิมพ์ด้วย 3D printed และชิ้นส่วนอิเล็กทรอนิกส์ เพื่อสร้างเครื่องจักรที่สามารถเล่นเกมได้ โดยควบคุมด้วย Arduino และสามารถเล่นได้โดย computer หรือ human players

การสร้างเกมที่เสร็จสมบูรณ์

มุมมอง CAD

วิดีโอการเล่นเกม

Wiring

มีวงจรย่อย 6 วงจรที่เกี่ยวข้องกับโปรเจกต์นี้ ได้แก่

  • Microswitch
  • Piezo buzzer
  • Servo
  • Keypad
  • Stepper motor
  • LCD with Serial Interface
  • วงจรเหล่านี้แต่ละวงมีการอธิบายไว้อย่างแพร่หลายบนอินเทอร์เน็ต ดังนั้นรายละเอียดจะไม่ถูกกล่าวซ้ำในที่นี้

    มีแผนผังวงจรที่เหมาะกับ hardware ของผมโดยเฉพาะรวมอยู่ด้วย hardware บางชิ้นของผมไม่มีใน Fritzing ดังนั้นองค์ประกอบบางอย่างจึงเป็นการแสดงแทนส่วนประกอบที่ใช้

    Assembly

    มีคำแนะนำการประกอบฉบับเต็มอยู่ในไฟล์ดาวน์โหลดของโปรเจกต์นี้

    Set-up

    เมื่อการเดินสายไฟเสร็จสมบูรณ์และได้โหลด sketch แล้ว เมนู set-up จะถูกใช้เพื่อรับค่าสำหรับ keyboard, servo และ column selector (แม้ว่าปุ่มจะไม่ทำงานหากไม่มีค่า ดังนั้นอาจจำเป็นต้องใช้ sketch เริ่มต้นเพื่อค้นหาค่าบางอย่าง ใช้ analogRead() บน pin A0 และส่งค่าเหล่านั้นไปยัง serial interface ตามที่อธิบายไว้ในหน้าเว็บต่างๆ)

    Keypad: การกดปุ่มจะแสดงแรงดันไฟฟ้าบน pin A0 และค่าเหล่านี้ควรถูกป้อนลงใน sketch ใน keyValues array จากนั้นค่าเหล่านี้จะถูกใช้เพื่อระบุปุ่มที่ถูกกด

    Servo: ใช้ปุ่มเพื่อย้าย servo ไปยังตำแหน่งศูนย์กลางและตำแหน่งสำหรับหยอดตัวนับ (counters) ป้อนค่าเหล่านี้ลงในตัวแปร servoCentre, servoRed และ servoYellow ใน sketch

    Selector: ใช้ปุ่มเพื่อนับ steps จากตำแหน่งอ้างอิงไปยัง column 1 และจำนวน steps ระหว่าง columns ป้อนค่าเหล่านี้ลงในตัวแปร referenceSteps และ stepsPerColumn ใน sketch

    Test

    จากนั้นสามารถใช้เมนู test เพื่อย้ายเครื่องจักรและหยอดตัวนับด้วยตนเองได้ ทดสอบการทำงานอย่างละเอียดและแก้ไขปัญหาต่างๆ ก่อนที่จะเล่นเกม

    Gameplay

    เกมนี้เล่นโดยผู้เล่นสองคน แต่ละคนสามารถเป็นได้ทั้ง human หรือ computer player ผู้เล่นคนแรกจะเล่นเม็ดสีแดงเสมอ ประเภทของเกมจะถูกเลือกจากเมนู Play computer player จะเล่นเกมในเชิงรับ ไม่ได้มี strategy ใดๆ :) เมื่อผู้เล่นคนใดชนะ จะมีการเล่นเพลงและแสดงข้อความ หากเกมเสมอหรือถูกยกเลิก ก็จะมีการแสดงข้อความ

    Conclusion

    ผมสนุกมากกับการออกแบบและสร้างโปรเจกต์นี้ มันมีองค์ประกอบที่หลากหลาย และการทำให้บางส่วนถูกต้องนั้นต้องใช้ความพยายามหลายครั้งเพื่อให้ได้การออกแบบขั้นสุดท้าย การปรับปรุงสองประการที่ผมจะทำคือ column selector ค่อนข้างช้า การใช้เกียร์ที่ใหญ่ขึ้นจะช่วยแก้ปัญหานั้นได้ อีกอย่างคือการใช้ playing algorithm ที่ดีขึ้น ซึ่งปัจจุบันเล่นเกมในเชิงรับมากโดยไม่มี strategy ที่แท้จริง ดังนั้นจึงมีช่องว่างสำหรับการปรับปรุงอย่างแน่นอน แม้จะมีข้อจำกัดด้าน memory resources ของ Arduino Uno ก็ตาม

    EXPANDED TECHNICAL DETAILS

    Game Logic & Mechanical Actuation

    โปรเจกต์นี้สร้างหุ่นยนต์ทางกายภาพที่สามารถเล่นเกม "Connect 4" คลาสสิกกับ human ได้

    • AI Algorithm: Arduino รัน "MiniMax" หรือ heuristic grid-search algorithm เพื่อคำนวณการเดินตาที่ดีที่สุดครั้งต่อไป โดยจะติดตามสถานะของ grid ขนาด 6x7 ใน RAM ภายในของมัน
    • Mechanical Drop: Stepper Motor หรือ Servo จะเคลื่อนย้ายกลไกจ่ายเหรียญไปตามด้านบนของกระดาน เพื่อหย่อนชิ้นส่วนลงใน column ที่เลือก

    Vision & Feedback

    • Opponent Move Detection: ใช้ IR sensor array หรือ camera แบบง่ายเพื่อตรวจจับว่า human player ได้วางเหรียญไว้ที่ใด
    • Interaction: LCD จะแสดงข้อความเช่น "Thinking..." หรือ "I Win!" ซึ่งแสดงให้เห็นถึงการรวม game theory, mechanical engineering และ embedded logic เข้าด้วยกัน

    ข้อมูล Frontmatter ดั้งเดิม

    title: "Connect 4 Playing Machine"
    description: "A 3D printed machine controlled by an Arduino that plays Connect 4."
    author: "markbennettuk"
    category: "Motors & Robotics"
    tags:
      - "game"
      - "toys"
      - "entertainment system"
    views: 6655
    likes: 3
    price: 2450
    difficulty: "Intermediate"
    components:
      - "1x LCD 16x2 with serial interface"
      - "1x Microswitch with long lever"
      - "1x 3D Printer (generic)"
      - "4x Resistor 2k ohm"
      - "1x Stepper Motor with 28BYJ-48 controller board"
      - "1x Breadboard power supply"
      - "23x Nuts, bolts and washers, 2mm and 3mm"
      - "1x Breadboard (generic)"
      - "1x Adhesive"
      - "1x Paint, Red and Yellow"
      - "1x 12 key keypad"
      - "1x Resistor 10k ohm"
      - "1x Arduino UNO"
      - "1x Standard sized servo"
      - "1x Resistor 100 ohm"
      - "30x Jumper wires (generic)"
      - "1x Grab and Go Connect 4 Game"
      - "3x Resistor 5k ohm"
      - "1x Buzzer, Piezo"
    tools: []
    apps:
      - "1x Arduino IDE"
    downloadableFiles:
      - "https://projects.arduinocontent.cc/ece87f22-2e93-4bad-84d6-f5b9fd8ff02e.c"
      - "https://projects.arduinocontent.cc/ece87f22-2e93-4bad-84d6-f5b9fd8ff02e.c"
    documentationLinks: []
    passwordHash: "466eadbe1cea81fb357521b5d1d34ec7499f721510796672d9a85249d369bea2"
    encryptedPayload: "U2FsdGVkX1+DffeH/wSe0hgn6ll1jO+bPTenF/ptgEaIcZIwRoDNaV8GRkbgmWUBthtdKVWkuAq2As6EBnBw6xAdL4y7PrDU1xVvD6xUY24="
    seoDescription: "3D printed Connect 4 playing machine controlled by Arduino. DIY robotic gaming project."
    videoLinks:
      - "https://www.youtube.com/embed/b77iU9QXHFI"
    heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/connect-4-playing-machine-da5a33_cover.jpg"
    lang: "th"