Dicey
ภาพรวม
สวัสดีทุกคน!
ขณะที่นั่งอยู่ที่โต๊ะคอมพิวเตอร์นี้ ฉันนึกขึ้นได้จากหนังสือ Arduino ที่ฉันมี ว่าโปรแกรมเมอร์หลายคนได้ใช้ฟังก์ชันในตัวที่ชื่อ random สำหรับโปรเจกต์จำนวนมากที่ต้องการการทำงาน การกระทำ หรือการเคลื่อนไหวที่ไม่สามารถคาดเดาได้ โดยการใช้ฟังก์ชันนี้ใน `sketch` สำหรับสร้างตัวเลขสุ่มอย่างง่าย ฉันได้ปรับเปลี่ยนโค้ดให้กลายเป็นโปรเจกต์เล็กๆ ที่สนุกสนาน ซึ่งทำหน้าที่เหมือนการทอยลูกเต๋า ฉันไม่เคยใช้ random มาก่อน และพบว่ามันมีประโยชน์มากในการเพิ่ม "ชีวิตชีวา" ให้กับโปรเจกต์ของคุณ
โปรเจกต์นี้ยอดเยี่ยมสำหรับผู้เริ่มต้นที่กำลังเรียนรู้การใช้ฟังก์ชันที่สร้างขึ้นเอง (homemade functions) `sketch` ที่คุณเคยรันไปแล้วนั้นสร้างขึ้นจากฟังก์ชันที่มีอยู่แล้วให้คุณใช้งาน เช่น pinMode, digitalWrite,delay และอื่นๆ อีกมากมาย. ในโค้ดนี้มีฟังก์ชันที่สร้างขึ้นเองหลายตัว เช่น "one" ถึง "six" เป็นต้น
ลองจินตนาการว่าฉันกำลังส่งสูตรคุกกี้ช็อกโกแลตชิปให้ญาติคนหนึ่ง ฉันเขียนส่วนผสมทุกอย่างลงไปพร้อมคำแนะนำเกี่ยวกับลำดับการผสมและการอบ ฉันหยุดคิดและตัดสินใจว่าฉันต้องการให้คุกกี้เหล่านี้อร่อยเกินกว่าที่คาดไว้ ฉันตัดสินใจทำช็อกโกแลตชิปที่ทำด้วยมือเองก่อนที่จะนำไปผสม "สูตร" เล็กๆ สำหรับช็อกโกแลตชิปนี้ก็เหมือนกับฟังก์ชันที่สร้างขึ้นเองใน Arduino `Uno` จะอ่าน "สูตร" จากบนลงล่าง แต่ก็จะอ่าน "สูตร" เล็กๆ ที่แยกออกมาจาก `loop` ด้วย "สูตร" นั้นคือฟังก์ชันที่สร้างขึ้นเอง ในโค้ดง่ายๆ ที่ฉันเขียน ฟังก์ชันที่สร้างขึ้นเองที่ชื่อ "one" จะเปิดไฟ `LED` หนึ่งดวงเมื่อตัวเลขสุ่มเป็น 1 ในทำนองเดียวกัน เมื่อตัวเลขสุ่มเป็นหก, ห้า หรือตัวเลขอื่นใด ฟังก์ชันที่เชื่อมโยงกับตัวเลขสุ่มนั้นจะเปิดไฟ `LED` ในจำนวนที่ถูกต้อง ฟังก์ชันที่สร้างขึ้นเองช่วยประหยัดเวลาได้มาก และช่วยจัดระเบียบ `sketch` ของคุณให้ดียิ่งขึ้น
การตั้งค่าวงจร
เอาล่ะ มาตั้งค่าวงจรกัน นำ `LED` มาเรียงบน `breadboard` โดยให้ขาที่ยาวหันไปทางขวา (ขาด้านนี้จะเชื่อมต่อกับ `pin`) เพื่อเชื่อมต่อ `LED` เราจะใช้ `pin` 1-6 เพื่อความง่าย ในการใช้ไดอะแกรม `LED` ทางด้านซ้ายจะเชื่อมต่อกับ `pin` 6, `LED` ถัดไปกับ `pin` 5, ไล่ไปทางขวา `LED` สุดท้ายจะเชื่อมต่อกับ `pin` 1 ขาที่สั้นของ `LED` แต่ละดวงจะเชื่อมต่อกับ `resistor` ขนาด 220 `Ohm` ขาอีกข้างของ `resistor` จะเชื่อมต่อกับสาย `ground` นำสายไฟมาเชื่อมต่อ `ground` เข้ากับ `Uno` ของคุณ เป็นอันเสร็จสิ้น! วงจรควรมีลักษณะประมาณนี้
ตอนนี้อัปโหลดโค้ดแล้วสนุกได้เลย!
รายละเอียดทางเทคนิคเพิ่มเติม
เครื่องสร้างความน่าจะเป็นแบบดิจิทัล
Dicey คือเครื่องกำเนิดตัวเลขสุ่มแบบฮาร์ดแวร์ที่จำลองการทำงานของลูกเต๋า 6 หน้ามาตรฐานโดยใช้ LED matrix หรือจอแสดงผลตัวเลข
- True Random Seed: ใช้
analog pinที่ "ไม่ได้เชื่อมต่อ" เพื่อรวบรวมสัญญาณรบกวนทางไฟฟ้าในบรรยากาศเป็นseedสำหรับฟังก์ชันrandomSeed()สิ่งนี้ทำให้มั่นใจได้ว่าการ "ทอย" ทุกครั้งจะไม่สามารถคาดเดาได้ทางสถิติ - Visual "Roll" Animation: เมื่อกดปุ่ม
Arduinoจะวนแสดงตัวเลขอย่างรวดเร็วเป็นเวลา 2 วินาที (จำลองการทอยลูกเต๋า) ก่อนจะหยุดที่ผลลัพธ์สุดท้าย ซึ่งเพิ่มความรู้สึกสนุกสนานและเหมือนกลไกให้กับอุปกรณ์ดิจิทัล
การโต้ตอบกับผู้ใช้
- Automatic Power-Down: มี
timerที่จะหรี่จอแสดงผลหลังจากไม่มีการใช้งาน 10 วินาที เพื่อประหยัดแบตเตอรี่ในระหว่างการเล่นเกมตั้งโต๊ะที่ยาวนาน