Arduino : ทำเกมทายลูกเต๋าเล่นกันดีกว่า

Thana Hongsuwan
2 min readFeb 26, 2020

--

บทความนี้ จะสอนทำของสนุกๆ เล่นกัน โดยครั้งนี้เลือกทำเกมทายลูกเต๋าครับ ก่อนอื่นก็มาเตรียมอุปกรณ์กันก่อน

อุปกรณ์ตัวแรกที่ขาดไม่ได้ นั่นก็คือบอร์ด Arduino UNO R3 นั่นเอง จะใช้ของแท้ ของเลียนแบบ บอร์ดไหนตามชอบเลยครับ สำหรับผมชอบบอร์ดนี้ครับ ที่ชอบเพราะมันมีพอร์ตเป็น Micro USB ซึ่งผมจะเสียบทิ้งไว้กับเครื่อง 1 เส้นอยู่แล้ว จะเอาบอร์ดไหนมาเสียบก็ใช้เส้นนี้ สะดวกดี เพราะถ้าใช้บอร์ด UNO R3 แบบเดิมๆ มันต้องใช้สาย USB Type B อีกเส้น มันค่อนข้างน่ารำคาญสำหรับผม

นอกจากนั้นบอร์ดนี้ยังใช้ไมโครคอนโทรลเลอร์เบอร์ ATmega328P ซึ่งเป็นตัวที่ใหม่กว่า โดยจะมี Analog เพิ่มมาอีก 2 พอร์ต คือ A6 และ A7 และยังมีความสามารถอื่นๆ เพิ่มเติมเข้ามา ซึ่งจะไม่กล่าวถึงในที่นี้ ข้อเสียของบอร์ดนี้ (ไม่รู้เรียกว่าข้อเสียหรือเปล่า) คือ บอร์ดนี้จะใช้ UART-USB เบอร์ CH340G ทำให้ต้องติดตั้ง Driver เพิ่ม

อุปกรณ์ตัวต่อมา คือ Prototype Shield ครับ หน้าตาก็จะเป็นแบบนี้

ที่เลือกใช้ Shield แทนที่จะใช้ Protoboard เพราะต้องการคุณสมบัติในการเคลื่อนย้ายสะดวก เวลาเอาไปเล่นในที่ต่างๆ แค่เสียบกับแหล่งจ่ายไปที่อาจจะเป็น Power Bank ก็สามารถทำงานได้แล้ว

ที่เหลือก็เป็นอุปกรณ์ย่อยๆ โดยมีรายการดังนี้

  • LED 7 Segment จำนวน 1 ตัว
  • สวิตซ์ปุ่มกด (Tact Switch) จำนวน 2 ตัว
  • R 220 โอห์ม จำนวน 1 ตัว
  • สายไฟแข็ง 22 AWG

สำหรับวงจรก็ต่อตามนี้

รูปจาก https://circuitdigest.com/microcontroller-projects/digital-dice-using-arduino

หรือแสดงการต่อกับ Protoboard ได้ดังนี้

รูปจาก https://www.youtube.com/watch?v=TAAykK6NioU

สำหรับเนื่องจากต่อบน Prototype Shield เมื่อต่อเสร็จก็มีรูปร่างหน้าตาตามนี้ ใส่ได้พอดี พกพาสะดวก

เมื่อต่อวงจรเรียบร้อย ก็มาเขียนโปรแกรม ตามนี้ครับ

  • ส่วนของ numeral เป็น Pattern การแสดงผลของ 7 Segment สำหรับตัวเลข 0–9
  • สำหรับ hooray_bit เป็น Pattern การแสดงผล เมื่อทายถูก
  • segmentPins เป็นขาที่ต่อกับ 7 Segment ถ้าต่อไม่ตรงกับโปรแกรมก็แก้ไขเอาครับ
  • GUESS_BUTTON_PIN เป็นขาที่ต่อกับปุ่มทาย เลขโดยเมื่อกดเลขที่จะทายจะเปลี่ยนตั้งแต่ 1–6
  • START_BUTTON_PIN เป็นขาที่ต่อกับปุ่มทอย เมื่อกดปุ่มนี้ก็จะสุ่มตัวเลข

ใน loop() จะมี 2 ฟังก์ชัน คือ handle_guess_button(); การทำงาน คือ จะรับปุ่ม guess จากนั้นจะแสดงผลตัวเลข โดยเริ่มจาก 1–6 หากกดอีกก็จะกลับมา 1 ใหม่

อีกฟังก์ชันหนึ่ง คือ handle_start_button(); จะแสดงการ random (LED วิ่งวนเป็นวงกลม) จากนั้นทำการ random ตัวเลข และตรวจสอบว่าตรงกับเลขที่ทายหรือไม่ หากตรง ก็ไปเรียกใช้ฟังก์ชัน hooray() หากไม่ตรงก็เรียกใช้ฟังก์ชัน boo()

สำหรับฟังก์ชัน output_result ใช้ในการแสดงผลตัวเลขออก 7 Segment

ก็ขอจบบทความนี้ลงแต่เพียงเท่านี้ ก็ลองเอาไปต่อ หรือ ประยุกต์กันดูนะครับ

--

--

Thana Hongsuwan
Thana Hongsuwan

Written by Thana Hongsuwan

Maker สมัครเล่น สนใจเทคโนโลยีด้าน Hardware เช่น Arduino, ESP8266, ESP32, Internet of Things, Raspberry P, Deep Learning

No responses yet