Isi kandungan:

Arduino - Piezo Three Button Piano: 4 Langkah
Arduino - Piezo Three Button Piano: 4 Langkah

Video: Arduino - Piezo Three Button Piano: 4 Langkah

Video: Arduino - Piezo Three Button Piano: 4 Langkah
Video: Arduino - Three Button Piezo Piano 2024, Jun
Anonim
Image
Image

Piano tiga butang adalah projek untuk pemula dengan beberapa pengalaman menggunakan Arduino.

Saya secara tidak sengaja berjaya membuat ini sambil bermain-main dengan piezo buzzer untuk pertama kalinya. Ia sangat kuat! Semasa mencuba pelbagai kaedah untuk menjadikan buzzer lebih senyap dan mencuba frekuensi yang berbeza dengan menggunakan fungsi nada () dan noTone (), saya menyedari bahawa sangat seronok untuk mencuba dan mencampurkan buzzer piezo bersama dengan komponen kegemaran saya yang lain dari Arduino saya kit: butang dan potensiometer.

Bahan yang diperlukan termasuk:

  • 1 Arduino
  • 1 Papan Roti
  • 1 Kabel USB
  • Kawat Jumper (pelbagai warna)
  • 1 330 Kilo-ohm Perintang
  • 1 Buzzer Piezo
  • 3 Butang Tekan
  • 1 Potensiometer

Langkah 1: Piezo Buzzer

Piezo Buzzer
Piezo Buzzer

Untuk memulakan, sediakan piezo di papan roti Arduino. Sebelahnya (sebelah kaki yang lebih pendek) perlu berlari ke tanah. Bahagian lain (sisi kaki yang lebih panjang) perlu disambungkan ke pin input digital. Saya memilih untuk menyambungkannya ke 8.

Langkah 2: Butang Tekan

Butang Tekan
Butang Tekan
Butang Tekan
Butang Tekan

Seterusnya, sudah tiba masanya untuk mengatur butang tekan. Seperti piezo, butang tekan perlu disambungkan ke tanah dan ke pin input digital.

Langkah 3: Potensiometer

Potensiometer
Potensiometer
Potensiometer
Potensiometer

Langkah terakhir dalam binaan fizikal ialah potensiometer. Potensiometer terdapat dalam beberapa bentuk yang berbeza. Kami akan menggunakan potensiometer sebagai pembahagi voltan, jadi ketiga kakinya perlu disambungkan.

Kaki Kanan: Bar Negatif (Tanah)

Kaki Tengah: Pin Analog 0

Kaki Kiri: Bar Positif

Langkah 4: Kod

Semasa menulis kod untuk projek ini, saya merujuk maklumat mengenai beberapa jenis fungsi tertentu:

nada ()

noTone () (Saya tidak menggunakan yang satu ini. Sebagai gantinya, saya menetapkan frekuensi menjadi "0".)

peta ()

Rujukan lain yang indah untuk pengguna kali pertama Piezo Buzzers boleh didapati di sini. Walaupun idea untuk menukar suara buzzer piezo nampaknya sederhana, pada mulanya boleh menjadi agak luar biasa!

Fungsi nada () dapat dipecah menjadi tiga bahagian:

  1. Pin (pin yang disambungkan oleh piezo buzzer)
  2. Kekerapan (frekuensi bunyi dalam hertz)
  3. Durasi (jangka masa bunyi diberikan dalam milisaat)

Pada dasarnya, ia kelihatan seperti ini: nada (pin, frekuensi, jangka masa). Komponen ketiga (durasi) adalah pilihan, sementara dua yang lain diperlukan agar buzzer berfungsi. Komponen "frekuensi" fungsi nada adalah apa yang dapat dianggap sebagai "suara" yang dihasilkan oleh bel.

Anda juga akan melihat bahawa kod tersebut mempunyai dua kod bit yang lain. Terdapat beberapa pernyataan if / else yang disiapkan untuk memberitahu Arduino apa yang harus dilakukan jika butang yang berbeza ditekan serta untuk mengaturnya dengan "frekuensi = 0" dalam situasi ketika tidak ada butang yang ditekan. Dalam pernyataan if / else, fungsi peta () digunakan untuk memetakan skala potensiometer ke sekumpulan frekuensi. Ini boleh diubah! Main-main dengan nilai frekuensi yang berbeza untuk melihat bunyi yang berbeza yang anda dapat dari piezo.

Lihat kod yang saya gunakan untuk membuat piano tiga butang di sini atau periksa di bawah.

int piezoPin = 8; // Sediakan pin yang disambungkan ke Piezo.

int sensorPin = 0; // Siapkan pin yang disambungkan ke sensor (potensiometer). int sensorValue = 0;

butang int1 = 5; // Sediakan pin input yang disambungkan ke butang.

butang int2 = 4; butang int3 = 3;

frekuensi int = 0;

const int delayTime = 500; // Sediakan pemalar untuk pemboleh ubah masa tunda dalam fungsi nada ().

batal persediaan () {

pinMode (butang1, INPUT_PULLUP); pinMode (butang2, INPUT_PULLUP); pinMode (butang3, INPUT_PULLUP); }

gelung kosong () {

sensorValue = analogRead (sensorPin); // Baca sensor. // Petakan nilai potensiometer yang berlainan dengan satu set frekuensi untuk setiap tiga butang. jika (digitalRead (butang1) == RENDAH) {frekuensi = peta (sensorValue, 0, 1023, 400, 499); } lain jika (digitalRead (butang2) == RENDAH) {frekuensi = peta (sensorValue, 0, 1023, 500, 599); } lain jika (digitalRead (button3) == RENDAH) {frekuensi = peta (sensorValue, 0, 1023, 600, 699); } lain {frekuensi = 0; } nada (piezoPin, frekuensi, delayTime); // Tetapkan fungsi nada () dengan pemboleh ubah. }

Disyorkan: