Proyek 09 – Piezo Sounder Alarm

Proyek ini menggunakan piezo sounder untuk membunyikan alarm. Aplikasi suara cukup bervariasi, misalnya alarm, warning beeps atau alert notification. Fungsi yang digunakan adalah tone(). Proyek ini bertujuan membuat alarm sederhana, seperti alarm mobil.

Komponen

  • Piezo Sounder
  • 2 way screw terminal

Proyek ini menggunakan piezo sounder pasif AC. Pastikan menggunakan tipe active buzzer.

Skema

Proyek Arduino Piezo Sounder

Sketch

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);
  }
}

Penjelasan Sketch

float sinVal;<br>
int toneVal;

Variable sinVal digunakan untuk menyimpang nilai sin, untuk menghasilkan suara naik turun sesuai gelombang sin. Variabel toneVal untuk menyimpan nilai sinVal yang telah dikonversi ke frekuensi yang dibutuhkan.

Pada fungsi setup, assign pin 8 sebagai output.

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

Pada fungsi main loop, lakukan loop dari 0 – 179.

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

lalu convert nilai x ke radian dan ditampung dalam variable sinVal. Setelah nilai sinVal diperoleh, 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));

Gunakan 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 nada lainnya dimainkan, atau hingga diperintahkan berhenti dengan perintah noTone(pin).

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

delay(2);

Jika menggunakan perintah tone(8, toneVal, 2), karena loop yang digunakan sangat pendek, perubahan frequency kurang dari millisecond. Jika menggunakan perintah diatas, perubahan suara tidak akan terdengar.

Dengan perintah delay 2 millisecond, piezo akan berbunyi di frekuensi yang diassign selama 2 milliseconds.

Projek ini dapat dikembangkan sesuai kebutuhan dan kreatifitas masing-masing. Bisa digunakan sebagai alert bila suhu mencapai derajat tertentu, atau bila ada orang mendekat atau lainya.

Silakan bereksperimen dengan nilai 2000 dan 1000 pada perhitungan toneVal serta waktu delay untuk mendapatkan suara yang Anda inginkan.

Sharing is caring: