Tone() dan Piezo Buzzer| Hasilkan bunyi dengan Arduino

Mungkin ada di kalangan anda yang memerlukan bunyi dalam projek Arduino anda dan sedang mencari idea tentang bunyi yang sesuai untuk digunakan dalam projek tersebut.

Tutorial kali ini adalah tentang bagaimana untuk menggunakan function tone() dan piezo speaker dalam Arduino dan apa perbezaan menghasilkan bunyi dengan menggunakan cara yang lain.

Dalam tutorial ini ada 2 cara menghasilkan bunyi dengan Arduino yang akan diterangkan iaitu:

  1. Buzzer (Component)
  2. DFPlayer (Module)

#1. Buzzer

Buzzer adalah cara yang paling mudah dan simple untuk menghasilkan bunyi dengan Arduino. Buzzer terbahagi kepada dua iaitu buzzer aktif dan buzzer pasif. Kedua-dua buzzer ini mempunyai spesifiksi dan penggunaan yang berbeza

Aktif buzzer menghasilkan bunyi pada frequency yang tetap. Aktif menggunakan DC voltage untuk berfungsi. Kelebihan aktif buzzer adalah mudah digunakan kerana anda hanya perlu memberi voltan untuk ia berfungsi.

Pasif buzzer memerlukan signal AC untuk berfungsi. Bunyi yang dihasilkan berbeza apabila diberikan signal AC yang berlainan. Kebaikan pasif buzzer adalah harga lebih murah dari aktif buzzer dan output dapat dikawal untuk menghasilkan pelbagai bunyi dengan frequency yang pelbagai.

#2. DFPlayer Mini

DFPlayer mini adalah low cost MP3 module di mana output bunyi boleh disambungkan terus ke speaker. Module ini mepunya slot SD card dimana kita boleh masukkan lagu kedalam SD card dan mainkannya menggunakan module ini.

Komponen-komponen yang diperlukan :

Langkah #1: Sambungan Litar

Sambungkan litar anda seperti rajah di bawah:

Potentiometer dalam litar ini hanya digunakan untuk mengawal volume output anda .

Langkah #2: Coding/ Sketch

Copy sketch di bawah dan pastekan dalam Adruino IDE anda.

int piezoPin = 4;

void setup() {
  
  pinMode(piezoPin, OUTPUT);
  
}

void loop() {

  tone(piezoPin,1000);
  
}


Baiklah, jadi bagaimana kita mendapatkan variable frequency dari Arduino?

PENTING #1: Declare nama variable.
Sebelum mana-mana variable di gunakan dalam “Void” kita perlu menamakan setiap variable dan tentukan nilai yang kita mahukan.

int piezoPin = 4;

PENTING #2: Setup Pin Sebagai OUTPUT.
Sebelum mana-mana pin boleh digunakan sebagai OUTPUT, pin tersebut perlu di SETUP sebagai OUTPUT dalam Void Setup().

pinMode(piezoPin,OUTPUT);

Di sinilah tone () berfungsi dengan menjana frequency tertentu pada pin tertentu. Tempoh masa juga boleh disebutkan jika diperlukan. Syntax untuk tone() adalah

tone(piezoPin,1000);

Syntax

tone(pin, frequency)
tone(pin, frequency, duration)

Parameters

pin: declare pin yang disambung ke arduino
frequency: frequency tone dalam hertz
duration: duration dalam milliseconds (optional)

Function tone() wajib mempunyai minimum 2 subjek dan maximum sehingga 3 subjek

Blink Tone

Langkah #1 : Sambungan Litar

Sambungkan litar anda mengikut gambar rajah berikut:

This image has an empty alt attribute; its file name is image-2.png

Langkah #2 : Coding/Sketch

Copy sketch di bawah dan pastekan dalam Adruino IDE anda.

int piezoPin = 4;

void setup(){

pinMode(4,OUTPUT);
  
}

void loop(){

tone(4,1000);
delay(1000);
tone(4,0);
delay(1000);
  
}


Setelah coding di upload , Buzzer Piezo pada pin 4 akan berbunyi selama 1 saat dan padam selama 1 saat kemudian proses ini akan berulang dan Buzzer Piezo tersebut akan berbunyi beep-beep.

BONUS – Tone Star Wars

Dalam projek ini kita akan belajar membina litar, di mana kita boleh menghasilkan muzik dengan menggunakan speaker kecil atau Buzzer Piezo yang ditambah skala muzik note , yang menghasilkan melodi terkenal “Imperial March” dari filem Star Wars.

LANGKAH#1 : Sambungan Litar

Sambungkan litar anda seperti gambarajah berikut:

This image has an empty alt attribute; its file name is image-2.png

Komponen-komponen yang diperlukan :

LANGKAH#2 : Coding/Sketch

Copy sketch di bawah dan pastekan dalam Adruino IDE anda.

const int c = 261;
const int d = 294;
const int e = 329;
const int f = 349;
const int g = 391;
const int gS = 415;
const int a = 440;
const int aS = 455;
const int b = 466;
const int cH = 523;
const int cSH = 554;
const int dH = 587;
const int dSH = 622;
const int eH = 659;
const int fH = 698;
const int fSH = 740;
const int gH = 784;
const int gSH = 830;
const int aH = 880;
 
const int buzzerPin = 4;

int counter = 0;
 
void setup()
{
  //Setup pin modes
  pinMode(buzzerPin, OUTPUT);

}
 
void loop()
{
 
  //Play first section
  firstSection();
 
  //Play second section
  secondSection();
 
  //Variant 1
  beep(f, 250);  
  beep(gS, 500);  
  beep(f, 350);  
  beep(a, 125);
  beep(cH, 500);
  beep(a, 375);  
  beep(cH, 125);
  beep(eH, 650);
 
  delay(500);
 
  //Repeat second section
  secondSection();
 
  //Variant 2
  beep(f, 250);  
  beep(gS, 500);  
  beep(f, 375);  
  beep(cH, 125);
  beep(a, 500);  
  beep(f, 375);  
  beep(cH, 125);
  beep(a, 650);  
 
  delay(650);
}
 
void beep(int note, int duration)
{
  //Play tone on buzzerPin
  tone(buzzerPin, note, duration);
 
  if(counter % 2 == 0)
      {
       delay(duration);
    
      }
    else
      {
      delay(duration);
   
      }
 
  //henti bunyi buzzer
  noTone(buzzerPin);
 
  delay(50);
 
  //Increment counter
  counter++;
}
 
void firstSection()
{
  beep(a, 500);
  beep(a, 500);    
  beep(a, 500);
  beep(f, 350);
  beep(cH, 150);  
  beep(a, 500);
  beep(f, 350);
  beep(cH, 150);
  beep(a, 650);
 
  delay(500);
 
  beep(eH, 500);
  beep(eH, 500);
  beep(eH, 500);  
  beep(fH, 350);
  beep(cH, 150);
  beep(gS, 500);
  beep(f, 350);
  beep(cH, 150);
  beep(a, 650);
 
  delay(500);
}
 
void secondSection()
{
  beep(aH, 500);
  beep(a, 300);
  beep(a, 150);
  beep(aH, 500);
  beep(gSH, 325);
  beep(gH, 175);
  beep(fSH, 125);
  beep(fH, 125);    
  beep(fSH, 250);
 
  delay(325);
 
  beep(aS, 250);
  beep(dSH, 500);
  beep(dH, 325);  
  beep(cSH, 175);  
  beep(cH, 125);  
  beep(b, 125);  
  beep(cH, 250);  
 
  delay(350);
}

Coding di atas akan memainkan tone Star Wars anda dan boleh diubah suai mengikut kreativiti dan keinginan anda. Refer instruction untuk mengenal pasti bahagian yang boleh diubah suai.

Anda boleh tinggalkan sebarang persoalan di ruangan komen tentang apa-apa yang berkaitan dengan Tone() dan Buzzer Piezo.

2 thoughts on “Tone() dan Piezo Buzzer| Hasilkan bunyi dengan Arduino

    1. boleh gunakan pin yang sama untuk nyalakan kedua-dua LED dan Buzzer.
      Tapi cara terbaiknya gunakan 2 pin asing.
      Dalam coding:

      if(sesuatu berlaku){
      digitalWrite(LED,HIGH);
      digitalWrite(BUZZER, HIGH);
      }

      Like

Tinggalkan Jawapan

Masukkan butiran anda dibawah atau klik ikon untuk log masuk akaun:

WordPress.com Logo

Anda sedang menulis komen melalui akaun WordPress.com anda. Log Out /  Tukar )

Google photo

Anda sedang menulis komen melalui akaun Google anda. Log Out /  Tukar )

Twitter picture

Anda sedang menulis komen melalui akaun Twitter anda. Log Out /  Tukar )

Facebook photo

Anda sedang menulis komen melalui akaun Facebook anda. Log Out /  Tukar )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.