กลับไปหน้ารวมไฟล์
music-box-with-arduinoharry-potter-tune-d2604b.md

ชื่อโปรเจกต์: กล่องดนตรี Harry Potter ด้วย Arduino (ฉบับรุ่นพี่จัดให้)

int led_pin1 =2;
int led_pin2 =3;
int buzzer_pin = 11;
struct MusicStruct { // สร้างโน้ตดนตรีไว้ใช้งาน
int A = 550;
int As = 582;
int B = 617;
int C = 654;
int Cs = 693;
int D = 734;
int Ds = 777;
int E = 824;
int F = 873;
int Fs = 925;
int G = 980;
int Gs = 1003;
int A2 = 1100;
int A2s = 1165;
int B2 = 1234;
int C3 = 1308;
int C3s = 1385;
int D3 = 1555;
}Music;
struct LengthStruct {
float half = 0.5;
float one = 1.0;
float one_half = 1.5;
float two = 2.0;
float two_half = 2.5;
}Length;
int tempo = 400;
void setup() {
pinMode(led_pin1, OUTPUT); // ตั้งค่า LED เป็น Output นะน้อง
pinMode(led_pin2, OUTPUT);
pinMode(buzzer_pin, OUTPUT);
digitalWrite(led_pin1,HIGH); // เช็คสถานะไฟ LED หน่อย
delay(1000);
digitalWrite(led_pin2,LOW);
delay(1000);
digitalWrite(led_pin2,HIGH);
delay(1000);
digitalWrite(led_pin1,LOW);
delay(1000);
}
void setTone(int pin, int note, int duration) {
tone(pin, note, duration);
delay(duration);
noTone(pin);
}
void loop() { // เริ่มบรรเลงเพลงใน Loop ได้เลย
setTone(buzzer_pin, Music.B, tempo * Length.one);
setTone(buzzer_pin, Music.E, tempo * Length.one_half);
setTone(buzzer_pin, Music.G, tempo * Length.half);
setTone(buzzer_pin, Music.F, tempo * Length.one);
setTone(buzzer_pin, Music.E, tempo * Length.two);
setTone(buzzer_pin, Music.B2, tempo * Length.one);
setTone(buzzer_pin, Music.A2, tempo * Length.two_half);
setTone(buzzer_pin, Music.Fs, tempo * Length.two_half);
setTone(buzzer_pin, Music.E, tempo * Length.one_half);
setTone(buzzer_pin, Music.G, tempo * Length.half);
setTone(buzzer_pin, Music.F, tempo * Length.one);
setTone(buzzer_pin, Music.Ds, tempo * Length.two);
setTone(buzzer_pin, Music.F, tempo * Length.one);
setTone(buzzer_pin, Music.B, tempo * Length.two_half);
delay(5000);
}

เจาะลึกรายละเอียดทางเทคนิค (อ่านซะจะได้ไม่งง)

การสังเคราะห์เสียงฟีลหนังพ่อมด

โปรเจกต์นี้เป็นการปลุกชีพความขลังของเพลง "Hedwig's Theme" จาก Harry Potter โดยใช้การคุมจังหวะ PWM ที่แม่นยำของ Arduino ร่วมกับการ Map ค่าความถี่เข้ากับตัวโน้ตดนตรี

  • การจัดการความถี่ (Polyphonic Frequency Management): บอร์ด Arduino จะใช้ฟังก์ชัน tone() เพื่อสั่งให้ Piezo Buzzer หรือลำโพง สั่นสะเทือนตามความถี่ที่กำหนด ทำนองเพลงที่ดูเหมือนจะยากพี่ก็ย่อยมาให้แล้ว โดยเก็บไว้ใน Variable แบบ Struct ที่รวมค่าความถี่ของโน้ตต่างๆ (เช่น $B3, E4, G4$) และจังหวะความยาวของโน้ตเอาไว้
  • ตรรกะการคุมจังหวะ (Tempo Control Logic): ตัว Firmware จะคำนวณระยะห่างระหว่างโน้ต (Inter-Note delay) ตามจังหวะ 3/4 (Triple-meter) เพื่อให้ได้ "จังหวะสวิง" แบบต้นฉบับเป๊ะๆ ออกมาเป็นเสียง 8-bit ดิจิทัลสุดเท่

ระบบแสดงผลทางสายตา

  • ไฟกระพริบ "เวทมนตร์" (Glowing Magic Feedback): (เวอร์ชันแอดวานซ์) น้องสามารถซิงค์ LED สีฟ้าหรือสีขาว ให้กระพริบตามความสูงต่ำของตัวโน้ตได้เลย ถ้าโน้ตสูงไฟก็ยิ่งจ้า สร้าง Audiovisual Experience แบบหล่อเท่ระเบิดไปเลยวัยรุ่น!

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

title: "Music box with arduino(harry potter tune)"
description: "Just entertaining project and more to go with"
author: "stt4236"
category: ""
tags:
  - "audio"
  - "lights"
  - "internet of things"
views: 9446
likes: 10
price: 699
difficulty: "Intermediate"
components: []
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "c5f77d3836fec98f1e80fa20417a80df7f788778f182227b6955795c2131d70d"
encryptedPayload: "U2FsdGVkX18FQ9/al8lwKlYcM4q5QUsmvCBNRJ5vLWIJ1pEDNuznH3onFLVEDGhXKe8m1ipDMaIbXaVVdFcrkv3vj2bzpPBL3vRb3thqNNQ="
seoDescription: "Build a Music box with Arduino playing the Harry Potter tune. A fun and simple DIY electronics project for makers."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/music-box-with-arduinoharry-potter-tune-d2604b_cover.jpg"
lang: "th"