กลับไปหน้ารวมไฟล์
how-to-make-music-with-an-arduino-491912.md

ในคลิปนี้พี่จะมาสอนวิธีใช้ Arduino ปล่อยเสียงเพลงด้วยลำโพงกับตัวต้านทาน (Resistor) ตัวเดียวจบ

เหมือนโปรเจกต์อื่นๆ ที่มันสร้างโน้ตเปียโนออกมา แต่ที่เจ๋งกว่าคือเราไม่ต้องใช้ตารางหา frequency แบบ lookup table เลย! เราจะใช้สูตรคำนวณแทน สูตรนี้รับเลข 1 ถึง 88 ซึ่งตรงกับคีย์บนเปียโน 88 คีย์เป๊ะๆ

Arduino library มีฟังก์ชัน tone() ไว้สร้างเสียงคลื่นสี่เหลี่ยม (square-wave) แต่มันดันสร้างเสียงต่ำกว่า 31Hz ไม่ได้! ในขณะที่เปียโน 88 คีย์มีโน้ตหลายตัวที่ความถี่ต่ำกว่านั้น ถ้าอยากได้เสียงครบทุกคีย์ เราต้องหาทางอื่น พี่จะสอนให้ใช้ delay ธรรมดาๆ สร้าง square-wave เองเลย

โปรเจกต์นี้ทำงานระดับไมโครวินาที (หนึ่งในล้านส่วนของวินาที) เราเลยใช้ฟังก์ชัน delayMicroseconds() เยอะมาก แต่ปัญหามันก็มี เพราะฟังก์ชันนี้ delay นานเกินพันไมโครวินาทีไม่ได้เสมอไป ในเมื่อโปรเจกต์เราต้องการ delay นานกว่านั้น พี่ก็จะสอนวิธีแก้ไขให้ด้วย

สุดท้ายแล้วโค้ดโปรเจกต์นี้มันสั้นมากกก จนเกือบแสดงหมดในหน้าจอเดียว (แล้วแต่เรซูเรชันจอของน้องนะ!) เอาเป็นว่าโค้ดเต็มพร้อมคอมเมนต์พี่แปะไว้ใน description ของคลิปแล้ว ไปดูกันได้

หวังว่าน้องๆ จะสนุกกับโปรเจกต์นี้นะ!

ลิงก์สอนติดตั้ง Arduino IDE บน Ubuntu

ถอดรหัสโน้ตเพลง: สร้างเสียงดนตรีด้วย Arduino

จะให้ Arduino ร้อง "ปี๊บ" สุ่มๆ เนี่ยง่ายจะตาย แต่ถ้าจะให้มันเล่นเพลง "Super Mario Bros." ที่ใครๆ ก็จำได้ล่ะก็ ต้องแปลงโน้ตดนตรีให้เป็นค่าคงที่ทางคณิตศาสตร์ซะก่อน How to make music with an Arduino คือคู่มือขั้นเทพที่จะแปลงแนวคิดจากโน้ตเปียโน (Quarter Notes, BPM, Octaves) ให้กลายเป็นอาร์เรย์ C++ ที่ทำงานได้แม่นยำเป๊ะเวอร์

มาตรฐานการแปลงโน้ตด้วย <pitches.h> ที่ต้องรู้

ห้ามพิมพ์ tone(8, 261) ด้วยมือเด็ดขาด! มันเสียเวลาและอ่านไม่รู้เรื่อง!

  1. ใน Arduino IDE มีไฟล์ลับชื่อ pitches.h อยู่ มันคือดิกชันนารี #define ขนาดใหญ่
  2. มันแมปคำว่า NOTE_C4 ไว้กับเลข 261 ตายตัว
  3. อาร์เรย์ทำนอง (Melody Array): เราแต่งเพลงด้วยการมองภาพ!
#include "pitches.h"

int melody[] = {
  NOTE_E5, NOTE_E5, 0, NOTE_E5,
  0, NOTE_C5, NOTE_E5, 0,
  NOTE_G5, 0, 0,  0,
  NOTE_G4, 0, 0, 0
};
// ใครอ่านโค้ด C++ นี้ก็รู้ทันทีว่าเป็นธีม Mario!

วงจรความเร็ว BPM แบบคณิตศาสตร์

ถ้าอยากให้อาร์เรย์เล่นเพลงได้ ต้องคำนวณให้เป๊ะว่า Quarter Note นึงยาวกี่มิลลิวินาที

  • ประกาศอาร์เรย์ของ Note Types ไว้! (4 = Quarter, 8 = Eighth) int noteDurations[] = { 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4 };
  • ลูป for จะคำนวณความเร็วการทำงานแบบตายตัว:
for (int i = 0; i < 16; i++) {
  int duration = 1000 / noteDurations[i]; // เช่น 1000ms / 4 = 250 มิลลิวินาที!
  tone(8, melody[i], duration);
  delay(duration * 1.30); // ดีเลย์พัก 30% สำคัญมาก ไม่งั้นโน้ตจะติดกันเป็นปลากระป๋อง!
}
  • ตัวเลขยิ่งสูง (1500 / noteDurations) เพลงยิ่งช้าลาก! ตัวเลขยิ่งต่ำ (800 / noteDurations) มาริโอจะกลายเป็นสปีดรันบั๊ก!

ส่วนประกอบหลักของซินธิไซเซอร์

  • Arduino Uno/Nano (ทำงานมาตรฐาน)
  • Passive Piezo Buzzer
  • ตัวต้านทาน (Resistor) 100 โอห์ม ต่ออนุกรมไว้ป้องกันขา Digital
  • ดาวน์โหลดไฟล์ pitches.h ลงไปในโฟลเดอร์สเก็ตช์ Arduino โดยตรง (ไฟล์บังคับรัน! ห้ามขาด)

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

apps:
  - "1x Arduino IDE"
author: "Code_and_Make"
category: "Audio & Sound"
components:
  - "1x Speaker: 0.25W, 8 ohms"
  - "1x Resistor 221 ohm"
  - "1x Arduino UNO"
description: "Foundational synthetics! Master the translation of printed musical stanzas and sheet-music tempo markings directly into structural C++ `int` arrays and dynamic `millis()` loop counters to construct complex orchestral hardware."
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://gist.github.com/codeandmake/1add672bc7957135ac4e212360acbc98"
  - "https://gist.github.com/codeandmake/1add672bc7957135ac4e212360acbc98"
encryptedPayload: "U2FsdGVkX1910EG+D5A2aSt7fUkAMECwMfVHyt7mqp+RXcat9Vgajv3WviMUltXuUjXFW2YpO/bnjvzNYu+j/gWIwJev+CCh8uKpoXtQ6p4="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/how-to-make-music-with-an-arduino-491912_cover.png"
lang: "en"
likes: 22
passwordHash: "4685a5d46c23b19dbb64a0a77597688b87b243be287c23aab223b9f515641c46"
price: 435
seoDescription: "Learn how to make music with Arduino using a speaker and resistor. Simple step-by-step tutorial for DIY electronics projects."
tags:
  - "audio"
  - "music"
title: "มาทำเพลงตึงๆ ด้วย Arduino กันเถอะ วัยรุ่น!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/Z1YvIFUIhLs"
views: 55452