กลับไปหน้ารวมไฟล์
mastermind-arduino-guess-secret-code-1b98dd.md

โปรเจกต์นี้มันคือเกม Master Mind นั่นแหละ แต่คราวนี้ให้ Arduino เป็นฝ่ายทายรหัสลับที่เราตั้งไว้แทน! ในแต่ละรอบที่น้องกดส่งคำตอบ (ใช้ปุ่ม 1, 2, 3 ในการใส่รหัส) อัลกอริทึมมันจะหาว่ารหัสไหนบ้างที่ยังเป็นไปได้ แล้วก็สุ่มเลือกมาทายหนึ่งตัว จบเกมเมื่อน้องกดยืนยันว่า Arduino ทายถูก หรือเมื่อเหลือรหัสที่เป็นไปได้แค่ตัวเดียวเท่านั้น

Logic Deduction Algorithms: Arduino Mastermind

เกม Arduino ส่วนใหญ่เน้นเรื่องรีเฟล็กซ์ทางกายภาพ (แบบหลบพิกเซลบนจอ OLED) แต่ Arduino Mastermind เน้นไปที่แก่น Computer Science ซะมากกว่า มันบังคับให้โปรแกรมเมอร์ต้องสร้างอาร์เรย์รหัสลับแบบสุ่ม รับอินพุตผู้ใช้ที่ซับซ้อน และคิดคะแนนตรรกะ "สีและตำแหน่ง" แบบคณิตศาสตร์ เพื่อจำลองเกมกระดานไขรหัสชื่อดังจากยุค 70s

button_led_basic_interaction_1772681969235.png

การสร้างอาร์เรย์รหัสลับ (Cryptographic Array)

เกมเริ่มต้นด้วยการให้ Arduino ทำหน้าที่เป็น "ผู้ตั้งรหัส"

  1. ใช้ randomSeed(analogRead(0)) เพื่อดึงสัญญาณรบกวนอิเล็กทรอนิกส์จากจักรวาลมาเป็นเมล็ดสุ่ม ถ้าข้ามขั้นนี้ไป Arduino จะสร้างรหัส "สุ่ม" แบบเดิมเป๊ะทุกครั้งที่เปิดเครื่อง!
  2. random(1, 7) สร้างตัวเลข 4 ตัว (เช่น 4, 1, 6, 2 แทน สีเขียว, แดง, น้ำเงิน, เหลือง)
  3. Arduino จะเก็บเมทริกซ์ตัวเลขมหึมานี้ไว้ในหน่วยความจำ: int secretCode[4];

ตรรกะการให้คะแนนแบบสองทาง (Dual-Feedback Scoring Logic)

ผู้เล่นใช้โพเทนชิโอมิเตอร์หรือปุ่มกดเพื่อทายชุดสี 4 สี (เช่น 1, 1, 1, 1 = แดง, แดง, แดง, แดง)

  • ส่วนที่ยากที่สุดในโค้ด C++ คือเครื่องมือคิดคะแนนทางคณิตศาสตร์
  • หมุดแดง (Red Pin) หมายถึง: ผู้เล่นทายถูกสีและตำแหน่งเป๊ะ
  • หมุดขาว (White Pin) หมายถึง: ผู้เล่นทายถูกสี แต่ตำแหน่งผิด
  • วิธีการทำงาน: Arduino ใช้ลูป for ซ้อนกันแบบน่ากลัว
for(int i=0; i<4; i++) {
  if (guess[i] == secretCode[i]) {
    redPins++;
    flagged[i] = true; // ป้องกันการนับสีเดียวกันซ้ำ!
  }
}
  • มันจะคำนวณผลและแสดงผลผ่าน LED RGB หรือส่งออกไปยัง จอ LCD 16x2 ที่สวยงาม: Red: 1, White: 2. Guesses remaining: 6!

โครงสร้างเกม (Game Architecture)

  • Arduino Uno/Mega
  • จอ LCD 16x2 แบบ I2C (จำเป็นมากสำหรับการพิมพ์ประวัติการทายและคะแนนทั้งหมด เหมือนเกมกระดานตัวจริงเป๊ะ)
  • โพเทนชิโอมิเตอร์ 4 ตัว หรือ ปุ่มกด 4 ปุ่ม ทำหน้าที่เป็นล็อคคอมบิเนชันขนาดใหญ่ที่ผู้ใช้หมุนเพื่อทายสี!
  • LED RGB หรือ NeoPixels มาตรฐาน เพื่อแสดงภาพชุดสีที่ผู้เล่นกำลังทายอยู่ในตอนนั้น

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

apps:
  - "1x Arduino IDE"
author: "zaffaroby"
category: "Gadgets, Games & Toys"
components:
  - "1x Buzzer, Piezo"
  - "3x Resistor 10k ohm"
  - "17x Jumper wires (generic)"
  - "3x Tactile Switch, Top Actuated"
  - "1x Alphanumeric LCD, 16 x 2"
  - "1x Arduino UNO"
  - "1x Resistor 221 ohm"
  - "1x Perma-Proto Breadboard Half Size"
description: "มาทำให้ Arduino ของเราเล่นเกม Mastermind ได้แบบเทพๆ กัน! โปรเจคนี้จะสอนให้บอร์ดของเราคิดวิเคราะห์และเดารหัสลับแบบวัยรุ่นสุดเจ๋ง งานง่ายแต่หล่อ ใช้ทั้งเซนเซอร์และอินเตอร์รัพต์ จัดไป!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX18VBqTLr1a7DiLZu5ZKB8xEnWOJzI+P1f7RFfjG2Ic8rST1w6V6b8hbdFIxtLjba+qLN1Q/lVQFi0Ma3kxDd1zvkpZW94WfhWM="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/mastermind-arduino-guess-secret-code-1b98dd_cover.jpg"
lang: "en"
likes: 0
passwordHash: "88f96e09f0f430229b675900984c57cda19368214385b7cf674f0fd589506dcf"
price: 870
seoDescription: "Learn how to build an Arduino project to play the Mastermind game and guess secret codes automatically."
tags:
  - "mastermind"
  - "secret code"
  - "games"
title: "Mastermind - งานเดาโค้ดลับตึงๆ กับ Arduino"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/rVcAbOEf1HY"
views: 5712