Mahir Arduino Sketch dan Elektro secara praktek

13 - Piezo Sounder Alarm

Nah, bila sudah mulai fasih bermain led, kita coba ke projek selanjutnya, kita coba bermain sound. Kita menggunakan piezo sounder sebagai latihan awal. Aplikasi dari suara bisa banyak, alarm, warning beeps atau alert notification. Code yang digunakan adalah tone(). Pada project 11 ini kita akan mencoba membuat alarm sederhana, seperti alarm mobil.

Komponen yang digunakan

  • Piezo Sounder 
  • 2 way screw terminal 


Saat memilih piezo sounder, pastikan jangan membeli tipe active buzzer, yang digunakan pada proyek ini adalah piezo sounder pasif AC.

Skema



Sketch

// Project 11 - Piezo Sounder Alarm
float sinVal;
int toneVal;

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

void loop() {
  for (int x=0; x<180; x++) {
    // convert degrees to radians then obtain sin value
    sinVal = (sin(x*(3.1412/180)));
    // generate a frequency from the sin value
    toneVal = 2000+(int(sinVal*1000));
    tone(8, toneVal);
    delay(2);
  }
}

Program diatas mirip dengan projek led dimmer, hanya saja output pada projek ini menggunakan piezo sounder.

Pertama kita siapkan 2 variables

  float sinVal;
  int toneVal;

variable sinVal float digunakan untuk menyimpang nilai sin, yang menghasilkan suara naik turun sesuai nilai sin. Variabel toneVal untuk menyimpan nilai sinVal yang telah kita konversi ke frekuensi yang dibutuhkan.

Pada fungsi setup, kita assign pin 8 sebagai output.

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

Pada fungsi main loop, kita akan melakukan loop dari 0 - 179.

  for (int x=0; x<180; x++) 

lalu nilai x akan kita convert ke radian dan ditampung dalam variable sinVal. Setelah nilai sinVal kita peroleh, kita convert ke frequency dan ditampung dalam variable toneVal.

    sinVal = (sin(x*(3.1412/180)));
    // generate a frequency from the sin value
    toneVal = 2000+(int(sinVal*1000));


Berikutnya kita menggunakan perintah tone() untuk menghasilkan suara pada piezo sounder.

    tone(8, toneVal);

Perintah tone()  membutuhkan 2  atau 3 parameters.
tone(pin, frequency)
tone(pin, frequency, duration)

Parameter pin adalah digital pin yang digunakan sebagai output ke piezo dan frequency adalah frequency dari tone dalam hertz. Parameter duration adalah optional, dalam satuan milisekon. Jika tidak diisi, maka tone akan terus dibunyikan hingga kita memainkan nada lainnya, atau hingga kita memberikan perintah berhenti dengan perintah noTone(pin).

Pada akhir sketch, kita memberikan perintah delay selama 2 milliseconds untuk memberikan jeda antara bunyi.

    delay(2);


Mungkin timbul pertanyaan, kenapa gak pake perintah seperti ini saja  tone(8, toneVal, 2); Karena loop yang kita gunakan sangat pendek, akan menyebabkan perubahan frequency kurang dari millisecond, jadi bila menggunakan perintah diatas, maka perubahan suara tidak akan terdengar. Dengan perintah delay 2 millisecond, kita memastikan piezo akan berbunyi di frekuensi yang kita assign selama 2 milliseconds.

Projek ini dapat dikembangkan sesuai kebutuhan dan kreatifitas Anda, bisa digunakan sebagai alert bila suhu mencapai derajat tertentu, atau bila ada orang mendekat atau apa saja.. silakan berimajinasi.. :)

Nilai 2000 dan 1000 pada perhitungan toneVal  dan waktu delay dapat Anda mainkan juga, silakan bereksperimen untuk mendapatkan suara yang Anda inginkan.

Related Article
Apa itu piezo sounder / disc
Referensi Perintah tone()

Proyek Sebelumnya RGB Mood Lamp
Proyek Selanjut Piezo Sounder Melody Player

2 comments:

  1. Terimkasih, artikel agan sangat membantu...kembangkan terus inovasinya, nanti share lagi gan :-D

    ReplyDelete
  2. artikel bagus gan, kunjungan baliknya di MEMBUAT LAMPU LED BERKEDIP DENGAN ARDUINO ARGA YUDHA
    atau langsung ke website
    http://www.argayudhaadhiprama.com/2016/03/24/membuat-lampu-led-berkedip-arduino-uno-r3/

    ReplyDelete