สารบัญ:

Arduino Hangman ในมอร์ส: 9 ขั้นตอน
Arduino Hangman ในมอร์ส: 9 ขั้นตอน

วีดีโอ: Arduino Hangman ในมอร์ส: 9 ขั้นตอน

วีดีโอ: Arduino Hangman ในมอร์ส: 9 ขั้นตอน
วีดีโอ: IDEA#9 สร้างเครื่องส่งรหัสมอร์ส ด้วยBuzzer รหัสมอร์สที่นิยมใช้กันทั่วโลก ทุกคนควรรู้ 2024, มิถุนายน
Anonim
Arduino Hangman ในมอร์ส
Arduino Hangman ในมอร์ส

ในบทช่วยสอนนี้ ฉันจะแสดงวิธีตั้งค่า Arduino ของคุณเองเพื่อเล่น Hangman โดยส่งรหัสมอร์สด้วยไฟฉายธรรมดาหรือฟังก์ชันไฟฉายจากโทรศัพท์ของคุณ

สิ่งที่คุณต้องทำคือ: บอร์ด Arduino 10 ไฟ LED สายไฟเพื่อเชื่อมต่อทั้งหมด พิเศษ: องค์ประกอบ Piezo (เพื่อเพิ่มเสียง)

ขั้นตอนที่ 1: การตั้งค่าไฟ LED

การตั้งค่าไฟ LED
การตั้งค่าไฟ LED

เกม Morse นี้จะใช้ไฟ 4 ดวงเพื่อระบุตัวอักษร 4 ตัวในคำที่ต้องเดา และไฟ 5 ดวงเพื่อระบุชีวิตที่ผู้เล่นเหลือให้เดา ดังนั้นก่อนอื่นคุณจะต้องเชื่อมต่อ 9 LED -ไฟสว่างปกติตามภาพ

ขั้นตอนที่ 2: เพิ่มเซ็นเซอร์วัดแสงชั่วคราว

เราไม่สามารถทุ่มเงินที่ร้านค้าอิเล็กทรอนิกส์ได้ ดังนั้นฉันจึงตัดสินใจที่จะทำให้โครงการนี้ราคาถูก โดยใช้ไฟ LED ธรรมดาเป็นเซ็นเซอร์วัดแสงชั่วคราว

สิ่งที่คุณต้องทำคือเชื่อมต่อด้านบวกของไฟ LED เข้ากับพอร์ตแอนะล็อกพอร์ตใดพอร์ตหนึ่งของคุณ (ในกรณีของฉัน A0) และด้านลบกับพื้นของคุณ

ขั้นตอนที่ 3: เพิ่มพจนานุกรมของคุณ

เพิ่มพจนานุกรมของคุณ
เพิ่มพจนานุกรมของคุณ

อย่างแรกเลย เรามาเริ่มด้วยการเพิ่มพจนานุกรมประเภทหนึ่งเพื่อแปลตัวอักษรเป็นรหัสมอร์สที่เกี่ยวข้องกัน ในการทำเช่นนี้ เราเพียงแค่สร้างอาร์เรย์ขนาด 26 คูณ 5 โดยที่ช่องแรกของอาร์เรย์รองทุกช่องจะมีตัวอักษรและช่องถัดไปอีก 4 ช่องจะมีรหัสมอร์สที่สอดคล้องกันหรือเว้นวรรคหากไม่มีรหัสเหลืออยู่ ตัวอย่างเช่น ด้วยตัวอักษร s ช่องแรกมี 's' ช่องที่สอง สาม และสี่มี '.' และช่องสุดท้ายมี ' '

ขั้นตอนที่ 4: ทำให้ไฟสว่างขึ้นตามค่าเริ่มต้น

ทำให้ไฟสว่างขึ้นตามค่าเริ่มต้น
ทำให้ไฟสว่างขึ้นตามค่าเริ่มต้น
ทำให้ไฟสว่างขึ้นตามค่าเริ่มต้น
ทำให้ไฟสว่างขึ้นตามค่าเริ่มต้น

ในขั้นตอนนี้ เราตรวจสอบให้แน่ใจว่าไฟติดสว่างเมื่อโปรแกรมเริ่มทำงาน และมอร์สเป็นตัวอักษรที่แสดงเมื่อผู้ใช้เดาได้อย่างถูกต้อง (รหัสสำหรับการดำเนินการนี้จะถูกเขียนในขั้นตอนที่ 6) เรายังทำให้แน่ใจว่าจะมีแสงสว่างเพียงพอสำหรับชีวิตที่ผู้เล่นเหลืออยู่

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

ขั้นตอนที่ 5: การเพิ่มอินพุต

การเพิ่มอินพุต
การเพิ่มอินพุต

ตอนนี้เราจะเขียนรหัสเพื่อตรวจสอบว่าผู้เล่นกำลังส่องแสงบนไฟ LED ที่เชื่อมต่อกับพอร์ตแอนะล็อก A0 ของเราหรือไม่และหากต้องแปลเป็นตัวอักษรที่ถูกต้อง

เพื่อให้แน่ใจว่าค่าที่อ่านได้ถูกต้อง เราจะเฉลี่ยทุกๆ 20 ค่าที่อ่านได้จากไฟ LED และใช้ตัวเลขนั้นเพื่อติดตามว่าไฟดับหรือเปิดอยู่ ในการดำเนินการนี้ เมื่อเริ่มต้นโปรแกรม เราตั้งค่า NUM_AVG เป็นจำนวนครั้งที่ต้องการให้ตรวจสอบแสงก่อนที่จะหาค่าเฉลี่ย ยิ่งตัวเลขนี้สูงเท่าใด การอ่านก็จะยิ่งแม่นยำมากขึ้นเท่านั้น แต่ก็อาจทำให้เกิดความล่าช้าได้เช่นกัน

msBtnPushed แสดงถึงระยะเวลาที่ไฟเปิด for.lastPressed เป็นบูลีนที่ติดตามว่าไฟเปิดอยู่ในลูปก่อนหน้าหรือไม่

ขั้นตอนที่ 6: การจัดการอินพุต

การจัดการอินพุต
การจัดการอินพุต
การจัดการอินพุต
การจัดการอินพุต

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

ในการทำเช่นนี้ เราจำเป็นต้องมีสตริง wordToGuess ตั้งเป็นคำที่เราต้องการให้ผู้เล่นเดา โดยส่วนตัวฉันมีตัวสร้างตัวเลขสุ่มเพื่อตั้งค่าเป็นคำสุ่มในตอนเริ่มต้น แต่คุณสามารถตั้งค่าเป็นคำเดียวได้

เราต้องตรวจสอบให้แน่ใจว่าตัวนับเพิ่มขึ้นทีละหนึ่งวง มิฉะนั้น โปรแกรมทั้งหมดจะไม่ทำอะไรเลย นอกจากนี้ ฉันได้เพิ่มฟังก์ชันการหน่วงเวลา เพื่อให้แน่ใจว่ามีการวนซ้ำทุกมิลลิวินาที

PS: ฟังก์ชัน Serial.println ทั้งหมดใช้เพื่อการทดสอบเท่านั้น พวกเขาอาจถูกลบเมื่อเสร็จสิ้น

goodTimer และ badTimer เป็นเพียงค่าถ้าคุณวางแผนที่จะใช้องค์ประกอบ Piezo เพื่อเพิ่มเสียง หากคุณต้องการทำเช่นนั้น คุณต้องเพิ่มรหัสในภาพที่สองซึ่งเล่นเสียง

ขั้นตอนที่ 7: มอร์ซิ่งตัวอักษรที่เดาถูกต้อง

Morsing จดหมายที่เดาถูกต้อง
Morsing จดหมายที่เดาถูกต้อง

ตามที่ได้สัญญาไว้ก่อนหน้านี้ ในขั้นตอนนี้ เราจะทำไฟที่แสดงถึงตัวอักษรที่เดาได้ถูกต้อง มอร์ส จดหมายของพวกเขา

สำหรับสิ่งนี้ ฉันได้เขียนสองฟังก์ชัน: morseThis และ nextLetter มันใช้ตัวเลขที่เราได้ตั้งค่าไว้ก่อนหน้านี้ในอาร์เรย์ตัวจับเวลาของเรา และเปลี่ยนแปลงตามส่วนใดของรหัสมอร์สที่มันกำลังส่องแสงอยู่

หากตัวจับเวลาถึงเวลาที่ไฟควรติด ก็แค่เปิดไฟและรันโค้ดเพื่อตั้งเวลาใหม่ให้ปิดและเปิดไฟใหม่อีกครั้ง หากตัวจับเวลาไปถึงส่วนที่แสงควรถอยหลัง ปิดไฟแล้วตั้งรหัสเพื่อแสดงส่วนถัดไปของตัวอักษร หากไม่มีภาคต่อ ให้รีเซ็ตเป็นภาคแรก

ขั้นตอนที่ 8: ตรวจสอบการตั้งค่าและรีเซ็ตของเรา

ตรวจสอบการตั้งค่าและรีเซ็ตของเรา
ตรวจสอบการตั้งค่าและรีเซ็ตของเรา

แน่นอนว่าโปรแกรมจะไม่ทำงานหากไม่ได้ตั้งค่าไฟเป็นเอาต์พุตและอินพุต ฉันยังเพิ่มตัวสร้างตัวเลขสุ่มเพื่อเพิ่มคำจากรายการคำที่ฉันใส่ในอาร์เรย์ที่เรียกว่า wordToGuess

นอกจากนั้น เราควรเพิ่มฟังก์ชันรีเซ็ตและตรวจดูให้แน่ใจว่าค่าทั้งหมดถูกรีเซ็ตเป็นค่าเริ่มต้น

ขั้นตอนที่ 9: ตัวแปรทั้งหมดในภาพเดียว

ตัวแปรทั้งหมดในภาพเดียว
ตัวแปรทั้งหมดในภาพเดียว

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

ตอนนี้สนุกกับการเล่นเพชฌฆาตในมอร์ส!

แนะนำ: