
สารบัญ:
- ขั้นตอนที่ 1: รวบรวมชิ้นส่วนทั้งหมด.
- ขั้นตอนที่ 2: การเชื่อมต่อจอแสดงผล OLED
- ขั้นตอนที่ 3: เชื่อมต่อ Buzzer
- ขั้นตอนที่ 4: การเชื่อมต่อฮาร์ดแวร์ทั้งหมดเสร็จสมบูรณ์.
- ขั้นตอนที่ 5: รวมไลบรารีและการเริ่มต้นโปรโตคอลการแสดงผล
- ขั้นตอนที่ 6: ทำนองเพลงเมโลดี้.
- ขั้นตอนที่ 7: เล่นเพลงระหว่างการเริ่มต้น.
- ขั้นตอนที่ 8: แปลงรูปภาพเป็นบิตแมป.
- ขั้นตอนที่ 9: การปรับความละเอียดตามจอแสดงผลของคุณ
- ขั้นตอนที่ 10: การสร้าง Bitmap Array.
- ขั้นตอนที่ 11: การแสดงรูปภาพตามลำดับ
- ขั้นตอนที่ 12: รหัสทั้งหมด:
- ขั้นตอนที่ 13: ผลลัพธ์:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12



สวัสดีและยินดีต้อนรับสู่ความสนุกที่สอนได้! ฉันหวังว่าทุกท่านคงสบายดีและมีสุขภาพแข็งแรง โปรเจ็กต์เล็กๆ แต่น่าทึ่งนี้เกี่ยวกับการเล่นเพลงธีม PUBG และแม้แต่การสร้างแอนิเมชั่นเกมโดยใช้ Arduino
ส่วนประกอบที่ใช้นั้นหาได้ง่ายมากและประกอบบนเขียงหั่นขนมได้ง่ายมาก ฉันจะแบ่งปันกระบวนการสร้างและเขียนโค้ดทั้งหมดในคำแนะนำนี้ อยู่ต่อจนจบ!
ฉันขอแนะนำอย่างยิ่งให้คุณดูวิดีโอเพื่อรับแนวคิดของโครงการ:) หากคุณชอบโปรดกดไลค์และแชร์วิดีโอ พิจารณาสมัครรับข้อมูลจากช่องของฉันหากคุณสนุกกับงานสร้างของฉัน ขอบคุณ!
ดังนั้นโดยไม่ชักช้าเรามาเริ่มกันเลย!
ขั้นตอนที่ 1: รวบรวมชิ้นส่วนทั้งหมด.

โครงสร้างส่วนใหญ่ประกอบด้วย Arduino Nano ซึ่งเป็นแกนหลักสำหรับโครงการนี้ คุณสามารถใช้ Arduino รุ่นอื่นๆ ได้ เช่น Arduino Uno, Arduino Pro Mini, Arduino Mega เป็นต้น เพื่อแสดงภาพเคลื่อนไหวและรูปภาพ ฉันตัดสินใจใช้จอแสดงผล OLED ขนาด 0.96 นิ้ว ที่มีความละเอียด 128 x 64 พิกเซล จอแสดงผลนี้สามารถเชื่อมต่อกับ Arduino กับโปรโตคอล I2C ที่ต้องการเพียงสองสายสำหรับข้อมูลและนาฬิกา ซึ่งจะช่วยลดจำนวนการเชื่อมต่อและทำให้โปรเจ็กต์มีขนาดกะทัดรัดมากขึ้น สำหรับการเล่นเมโลดี้ของธีม PUBG ฉันใช้ออด 5V ซึ่งฉันเชื่อมต่อพินบวกกับพินดิจิทัล 6 ของ Arduino และกราวด์ไปที่กราวด์ของ Arduino
นี่คือรายการชิ้นส่วนที่จำเป็นสำหรับโครงการ:
- Arduino Nano (หรือบอร์ด Arduino อื่น ๆ ที่คุณเลือก)
- โมดูลแสดงผล OLED ขนาด 0.96 นิ้ว
- ออด 5V
- สายจัมเปอร์
- เขียงหั่นขนม
- สายการเขียนโปรแกรม Arduino
ขั้นตอนที่ 2: การเชื่อมต่อจอแสดงผล OLED



จำเป็นต้องมีการเชื่อมต่อทั้งหมด 4 รายการเพื่อให้จอแสดงผล OLED เชื่อมต่อจาก Arduino:
Vcc 5V ของ Arduino
Gnd Gnd ของ Arduino
SDA A4 ของ Arduino
SCK A5 ของ Arduino
พิน A4 และ A5 ของ Arduino รองรับอินพุตแบบอะนาล็อกได้หลากหลายรวมถึงพินสำหรับการสื่อสาร I2C ที่นี่เราใช้พินสำหรับโปรโตคอล I2C เพื่อเชื่อมต่อกับโมดูลการแสดงผล
ลิงค์ไปยังห้องสมุด Adafruit ที่ใช้ในโครงการนี้:
ขั้นตอนที่ 3: เชื่อมต่อ Buzzer


ออด 5V มีขั้วจ่ายบวกและลบ
พินบวก D6 ของ Arduino (พินดิจิตอล 6) (คุณสามารถใช้พินดิจิทัลของ Arduino ได้)
พินลบ Gnd ของ Arduino
เรากำลังจะสร้างโทนเสียงที่ต้องการบนพินดิจิตอล D6 ซึ่งเสียงกริ่งจะเล่นเพลง
ขั้นตอนที่ 4: การเชื่อมต่อฮาร์ดแวร์ทั้งหมดเสร็จสมบูรณ์.


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

โปรแกรมทั้งหมดถูกแบ่งออกเป็น 3 องค์ประกอบ:
- โปรแกรมหลักประกอบด้วยการเริ่มต้นและลำดับของการแสดงภาพและทำนอง
- ไฟล์ "pitches.h" ประกอบด้วยรายการโน้ตดนตรีและความถี่ที่เกี่ยวข้อง
- ไฟล์ "pictures.h" ประกอบด้วยบิตแมปของภาพที่จะแสดง
ขั้นตอนการแปลงภาพเป็นอาร์เรย์บิตแมปสำหรับจอแสดงผล OLED จะกล่าวถึงในขั้นตอนต่อไป
ฉันจะแนบรหัสทั้งหมดพร้อมกับคำแนะนำนี้เพื่อให้คุณใช้:)
ขั้นตอนที่ 6: ทำนองเพลงเมโลดี้.


ฉันค้นหาโน้ตพื้นฐานบนอินเทอร์เน็ตที่ประกอบด้วยเพลงธีม PUBG แล้วเพิ่มลงในอาร์เรย์เมโลดี้
ด้วยการใช้เวลามากในการเล่นและเล่นซ้ำลำดับเมโลดี้ ฉันจึงสร้างอาร์เรย์ระยะเวลาที่เกี่ยวข้องกับระยะเวลาที่แต่ละโน้ตต้องเล่น การรวมกันของเมโลดี้อาร์เรย์และอาร์เรย์ระยะเวลาประกอบด้วยข้อมูลที่สมบูรณ์ในการเล่นเพลง
ขั้นตอนที่ 7: เล่นเพลงระหว่างการเริ่มต้น.

มีโน้ตทั้งหมด 63 ตัวที่ฉันใช้ประกอบเป็นลำดับเมโลดี้ การใช้ for loop และวนซ้ำผ่านโน้ตและอาเรย์ของระยะเวลาโดยมีการหยุดที่กำหนดไว้ล่วงหน้าระหว่างโน้ตแต่ละตัว ลำดับทั้งหมดจะเล่นเพียงครั้งเดียว เนื่องจากโค้ดชิ้นนี้อยู่ ในการตั้งค่าโมฆะ () ที่น่าสนใจคือไม่มีโค้ดใดสำหรับโปรเจ็กต์นี้ที่ใช้ void loop() ของโค้ด arduino เพราะฉันตั้งใจจะเล่นและแสดงภาพเพียงครั้งเดียว แน่นอนถ้าคุณต้องการลำดับการทำซ้ำนั้นจะต้องใส่ในฟังก์ชัน void loop()
ขั้นตอนที่ 8: แปลงรูปภาพเป็นบิตแมป.

ตอนนี้ ส่วนที่น่าสนใจของโครงการคือกระบวนการแปลงภาพเป็นอาร์เรย์บิตแมปสำหรับจอแสดงผล OLED ตามความหนาแน่นของพิกเซล สำหรับสิ่งนี้ ฉันพบเครื่องมือออนไลน์ของนายอำเภอที่ช่วยให้เราสร้างบิตแมปที่กำหนดเองได้
ลิงค์สำหรับสมัครออนไลน์นี้คือ
ขอบคุณผู้สร้างที่น่าทึ่งของแอปพลิเคชันนี้ มันทำให้งานของฉันง่ายขึ้นมาก
เมื่อไปที่ลิงก์ คุณต้องอัปโหลดภาพที่คุณต้องการสร้างบิตแมปก่อน สิ่งหนึ่งที่ควรทราบในที่นี้คือ คุณควรพยายามเลือกภาพที่มีคอนทราสต์ของสีไม่มากนัก ลองใช้ภาพที่มีสีทึบสองสามสี โดยไม่มีการไล่ระดับสีเพื่อให้ได้ผลลัพธ์ที่ดีขึ้น
ขั้นตอนที่ 9: การปรับความละเอียดตามจอแสดงผลของคุณ

ในขั้นตอนต่อไป เราต้องปรับขนาดภาพตามความละเอียดของการแสดงผล สำหรับจอแสดงผล OLED ของเรา กว้าง 28 พิกเซล และสูง 64 พิกเซล ซึ่งผมได้ปรับตามภาพแล้ว ปรับเกณฑ์ความสว่างเพื่อให้แน่ใจว่าภาพมีความชัดเจนมาก (นี่คือข้อดีของการใช้ภาพที่มีสีทึบ ยิ่งมีการไล่ระดับสีมากขึ้น คุณภาพของภาพในการแสดงภาพขาวดำจะลดลงตามเกณฑ์ความสว่าง).
ขั้นตอนต่อไปคือการปรับให้พอดีกับภาพบนหน้าจอโดยรักษาสัดส่วนไว้เหมือนเดิมและปรับความสมมาตรซึ่งมีตัวเลือกอยู่แล้ว คุณสามารถสำรวจตัวเลือกเหล่านี้เพื่อให้ได้ผลลัพธ์ของภาพที่ต้องการ สำหรับการอ้างอิง คุณยังได้รับตัวเลือกการแสดงตัวอย่างที่น่าทึ่งอีกด้วย!
ขั้นตอนที่ 10: การสร้าง Bitmap Array.

หลังจากปรับพารามิเตอร์รูปภาพแล้ว ในขั้นตอนถัดไปให้เลือกโค้ด Arduino เป็นรูปแบบเอาต์พุตแล้วคลิกสร้างเพื่อรับอาร์เรย์บิตแมปที่ต้องการ!
ที่นั่น! คุณได้แปลงรูปภาพของคุณเป็นอาร์เรย์บิตแมปที่ต้องการเรียบร้อยแล้ว ฉันได้ทำตามขั้นตอนนี้ทั้งหมด 7 ภาพและบันทึกไว้
ขั้นตอนที่ 11: การแสดงรูปภาพตามลำดับ



สำหรับการแสดงรูปภาพ ฉันใช้ฟังก์ชัน Arduino millis() เพื่อเรียกใช้ฟังก์ชัน draw() ซึ่งโดยพื้นฐานแล้วคือชุดคำสั่งเพื่อล้างการแสดงผล พล็อตอาร์เรย์บิตแมปไปยัง OLED และเริ่มต้นการแสดงผล ตรรกะหลักคือทุกๆ 3.5 วินาที รูปภาพจะเปลี่ยนไปและรูปภาพถัดไปจะแสดงขึ้น 3.5 วินาทีไม่ใช่ตัวเลขเฉพาะ ฉันเพิ่งคิดได้ว่าถ้าฉันหารระยะเวลาของเมโลดี้ทั้งหมดด้วย 7 ภาพ ฉันจะได้รับ 3.5 วินาทีสำหรับการแสดงผลแต่ละครั้ง คุณสามารถเพิ่มรูปภาพเพิ่มเติมและลดเวลาในการแสดงผลสำหรับแต่ละรูปภาพได้หากต้องการ
ข้อมูลโค้ดอธิบายวิธีการเรียกใช้ฟังก์ชันโดยอิงตามฟังก์ชัน millis()
อาร์เรย์บิตแมปทั้งหมดของรูปภาพถูกเก็บไว้ในไฟล์ "pictures.h"
ขั้นตอนที่ 12: รหัสทั้งหมด:
ฉันกำลังแบ่งปันรหัสทั้งหมดให้คุณทุกคนได้ลองเล่นและทดลองด้วย!
เมื่อทุกอย่างดูดีแล้วก็ถึงเวลาอัปโหลดไปยังบอร์ด:)
ขั้นตอนที่ 13: ผลลัพธ์:




อย่างที่คุณเห็นภาพนั้นยอดเยี่ยมมาก! และทำนองก็เช่นกัน! ฉันหวังว่าคุณจะได้ดูวิดีโอที่มีการสาธิตทั้งหมด
ฉันหวังว่า PUBG เวอร์ชัน Arduino นี้เป็นโครงการที่น่าตื่นเต้นสำหรับเกมและผู้ที่ชื่นชอบอุปกรณ์อิเล็กทรอนิกส์
โปรดแบ่งปันความคิดเห็นของคุณในความคิดเห็นและแบ่งปันข้อเสนอแนะใดๆ นอกจากนี้ โปรดพิจารณาสมัครรับข้อมูลช่องของฉันสำหรับเนื้อหาดังกล่าวเพิ่มเติม เนื่องจากนี่เป็นส่วนหนึ่งของซีรี่ส์ OLED ที่ฉันกำลังดำเนินการอยู่ โปรดแจ้งให้เราทราบหากคุณสร้างโครงการสนุก ๆ นี้:)
จนกว่าจะถึงครั้งต่อไป.
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)

DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)

Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
BOSEBerry Pi Internet Radio: 4 ขั้นตอน (พร้อมรูปภาพ)

BOSEBerry Pi Internet Radio: ฉันชอบฟังวิทยุ! ฉันใช้วิทยุ DAB ในบ้าน แต่พบว่าการรับสัญญาณค่อนข้างหยาบและเสียงขาดหาย ดังนั้นฉันจึงตัดสินใจสร้างวิทยุอินเทอร์เน็ตของตัวเอง ฉันมีสัญญาณ wifi แรงรอบบ้านและพี่ชายดิจิทัล
นาฬิกาบอกตำแหน่ง 'วีสลีย์' ด้วย 4 เข็มนาฬิกา: 11 ขั้นตอน (พร้อมรูปภาพ)

นาฬิกาบอกตำแหน่ง 'Weasley' แบบมี 4 เข็ม: ดังนั้น ด้วย Raspberry Pi ที่ใช้งานมาระยะหนึ่งแล้ว ฉันต้องการค้นหาโครงการดีๆ ที่จะช่วยให้ฉันใช้งานได้ดีที่สุด ฉันเจอนาฬิกาบอกตำแหน่งวีสลีย์ที่สอนได้ดีเยี่ยมนี้โดย ppeters0502 และคิดว่า
สถานีตรวจอากาศระดับมืออาชีพโดยใช้ ESP8266 และ ESP32 DIY: 9 ขั้นตอน (พร้อมรูปภาพ)

สถานีตรวจอากาศระดับมืออาชีพโดยใช้ ESP8266 และ ESP32 DIY: LineaMeteoStazione เป็นสถานีตรวจอากาศที่สมบูรณ์แบบซึ่งสามารถเชื่อมต่อกับเซ็นเซอร์ระดับมืออาชีพจาก Sensirion รวมถึงส่วนประกอบ Davis Instrument (Rain Gauge, เครื่องวัดความเร็วลม) โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อเป็นสถานีตรวจอากาศแบบ DIY แต่ต้องใช้