İçindekiler:

Arduino - Piezo Üç Düğmeli Piyano: 4 Adım
Arduino - Piezo Üç Düğmeli Piyano: 4 Adım

Video: Arduino - Piezo Üç Düğmeli Piyano: 4 Adım

Video: Arduino - Piezo Üç Düğmeli Piyano: 4 Adım
Video: Tinkercad'de Kod Blokları ile Üç Boyutlu Tasarım Yapalım 2024, Haziran
Anonim
Image
Image

Üç düğmeli piyano, Arduino'yu kullanma deneyimi olan yeni başlayanlar için bir projedir.

Piezo buzzer ile ilk kez oynarken yanlışlıkla bunu yaratmaya çalışırken kendimi kaptırdım. Çok gürültülüydü! Buzzeri daha sessiz hale getirmek için çeşitli yöntemler bulmaya çalışırken ve tone() ve noTone() işlevini kullanarak farklı frekansları denerken, piezo buzzer'ı Arduino'mun diğer favori bileşenlerim ile birlikte denemenin ve karıştırmanın eğlenceli olabileceğini fark ettim. kit: düğmeler ve potansiyometre.

Gerekli malzemeler şunları içerir:

  • 1 Arduino
  • 1 ekmek tahtası
  • 1 USB Kablosu
  • Jumper Telleri (çeşitli renklerde)
  • 1 330 Kilo-ohm Direnç
  • 1 Piezo Zil
  • 3 Basmalı Düğme
  • 1 Potansiyometre

Adım 1: Piezo Buzzer

Piezo Zil
Piezo Zil

Başlamak için piezoyu Arduino'nun devre tahtasına kurun. Bir tarafının (daha kısa bacak tarafı) yere koşması gerekiyor. Diğer taraf (uzun bacak tarafı) bir dijital giriş pinine bağlanmalıdır. 8'e bağlamayı seçtim.

2. Adım: Düğmeler

Düğmeler
Düğmeler
Düğmeler
Düğmeler

Ardından, butonları ayarlamanın zamanı geldi. Piezo gibi, basma düğmelerinin toprağa ve bir dijital giriş pinine bağlanması gerekir.

Adım 3: Potansiyometre

Potansiyometre
Potansiyometre
Potansiyometre
Potansiyometre

Fiziksel yapının son adımı potansiyometredir. Potansiyometreler birkaç farklı biçimde gelir. Potansiyometreyi voltaj bölücü olarak kullanacağız, bu yüzden üç bacağının da bağlanması gerekiyor.

Sağ Ayak: Negatif Çubuk (Zemin)

Orta Ayak: Analog Pin 0

Sol Bacak: Pozitif Bar

Adım 4: Kodlayın

Bu proje için kod yazarken, birkaç özel işlev türüyle ilgili bilgilere başvurdum:

ton()

noTone() (Bunu kullanmadım. Bunun yerine frekansı "0" olarak ayarladım.)

harita()

Piezo Buzzers'ı ilk kez kullananlar için bir başka harika referans burada bulunabilir. Piezo buzzer'ın sesini değiştirme fikri basit görünse de, ilk başta biraz bunaltıcı olabilir!

tone() işlevi üç bölüme ayrılabilir:

  1. Pin (piezo buzzerin bağlı olduğu pin)
  2. Frekans (hertz cinsinden sesin frekansı)
  3. Süre (milisaniye cinsinden verilen sesin süresi)

Temel olarak şöyle görünür: ton(pin, frekans, süre). Üçüncü bileşen (süre) isteğe bağlıdır, diğer ikisi ise sesli uyarının çalışması için gereklidir. Ton işlevinin "frekans" bileşeni, buzzer tarafından üretilen "ses" olarak düşünülebilecek şeydir.

Ayrıca, kodun iki kod parçası daha içerdiğini fark edeceksiniz. Arduino'ya farklı düğmelere basıldığında ne yapacağını söylemek ve düğmelerden hiçbirine basılmadığı durumlarda "frekans = 0" ile ayarlamak için ayarlanmış bazı if/else ifadeleri vardır. if/else ifadelerinde, potansiyometrenin ölçeğini bir dizi frekansa eşlemek için map() işlevleri kullanılır. Bunlar değiştirilebilir! Piezodan hangi farklı sesleri alabileceğinizi görmek için farklı frekans değerleriyle oynayın.

Üç düğmeli piyanoyu oluşturmak için kullandığım kodu buradan veya aşağıdan kontrol edin.

int piezoPin = 8; // Piezo'ya bağlı pini ayarlayın.

int sensörPin = 0; //Sensöre (potansiyometre) bağlı pimi ayarlayın. int sensörDeğeri = 0;

int düğme1 = 5; //Butonlara bağlı giriş pinlerini ayarlayın.

int düğme2 = 4; int düğme3 = 3;

int frekans = 0;

const int gecikmeZamanı = 500; // tone() işlevinde gecikme süresi değişkeni için bir sabit ayarlayın.

geçersiz kurulum() {

pinMode(button1, INPUT_PULLUP); pinMode(button2, INPUT_PULLUP); pinMode(button3, INPUT_PULLUP); }

boşluk döngüsü () {

sensorValue = analogRead(sensorPin); // Sensörü oku. //Potansiyometrenin farklı değerlerini üç düğmenin her biri için bir dizi frekansla eşleştirin. if (digitalRead(button1) == LOW) { frekans = map(sensorValue, 0, 1023, 400, 499); } else if (digitalRead(button2) == LOW) { frekans = map(sensorValue, 0, 1023, 500, 599); } else if (digitalRead(button3) == LOW) { frekans = map(sensorValue, 0, 1023, 600, 699); } başka { frekans = 0; } ton(piezoPin, frekans, delayTime); // tone() fonksiyonlarını değişkenlerle ayarlayın. }

Önerilen: