กลับไปหน้ารวมไฟล์
dicey-b3f181.md

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 วินาที เพื่อประหยัดแบตเตอรี่ในระหว่างการเล่นเกมตั้งโต๊ะที่ยาวนาน

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

title: "Dicey"
description: "Easy Arduino dice project, great for beginners learning how to create homemade functions."
author: "Englishscone"
category: "Lights & LEDs"
tags:
  - "lights"
  - "toys"
  - "data collection"
views: 8201
likes: 12
price: 2450
difficulty: "Easy"
components:
  - "6x Resistor 221 ohm"
  - "14x Jumper wires (generic)"
  - "1x Arduino UNO"
  - "1x Breadboard (generic)"
  - "6x LED (generic)"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/394122da-b7b6-459f-9a57-aef59808f8ce.ino"
documentationLinks: []
passwordHash: "660579749a4064ecf01e08fac34385c8441df0fac4cf66cf8f5f119ac8760fc1"
encryptedPayload: "U2FsdGVkX19JjGNFgXVtLZUIGG0FPDNAoUI9CKe046/Ckj82OQEJGmVvuPC0YzRezY/rSbV6gRX0kY53u/cJ8ddw5yYAaRn4EQ0+tVELKxI="
seoDescription: "Easy Arduino dice project for beginners learning to build homemade functions."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/dicey-b3f181_cover.jpg"
lang: "th"