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

การสร้างอาร์เรย์รหัสลับ (Cryptographic Array)
เกมเริ่มต้นด้วยการให้ Arduino ทำหน้าที่เป็น "ผู้ตั้งรหัส"
- ใช้
randomSeed(analogRead(0))เพื่อดึงสัญญาณรบกวนอิเล็กทรอนิกส์จากจักรวาลมาเป็นเมล็ดสุ่ม ถ้าข้ามขั้นนี้ไป Arduino จะสร้างรหัส "สุ่ม" แบบเดิมเป๊ะทุกครั้งที่เปิดเครื่อง! random(1, 7)สร้างตัวเลข 4 ตัว (เช่น4, 1, 6, 2แทน สีเขียว, แดง, น้ำเงิน, เหลือง)- 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 มาตรฐาน เพื่อแสดงภาพชุดสีที่ผู้เล่นกำลังทายอยู่ในตอนนั้น