2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Eski bir PC'yi yıkarken küçük bir hoparlör buldum. geri dönüşüm için Arduino Tone() işlevini kullanmanın nasıl bir şey olduğunu göreceğimi düşündüm. Perdeyi kontrol etmek için bir adet 10Ω potansiyometre ile başladım ve biraz ses çıkarmaya başladım. Tone() işlevi, basit bir darbe deseni kullanır. Sesi kare dalga deseninde farklı frekanslarda açar ve kapatır. Etrafta iki potansiyometre daha vardı, bu yüzden onları ekledim ve ton süresini kontrol etmek için kullandım. Biri tonun uzunluğunu kontrol etmek için diğeri tonlar arasındaki sessiz boşluğu kontrol etmek için. Temelde başka bir kare dalga modeli kullanıyor ama çok daha düşük bir frekansta. Bu devre ile çok çeşitli gürültüler elde edebilirsiniz. Piezo buzzer ile de iyi çalışır, ancak bir hoparlörün bas tepkisinden yoksundur.
Adım 1: İhtiyacınız Olan Parçalar
Arduino Uno'su
Breadboard ve atlama telleri
1 Küçük hoparlör veya Piezo buzzer
1 Buton anahtarı
3 10Ω Potansiyometre
1 22Ω direnç
1 10kΩ direnç
Adım 2: Devreyi Oluşturun
Breadboard'u Arduino 5V pininize ve GND'ye bağlayın. Basmalı düğmeyi devre tahtasının en sağına veya soluna yerleştirin ve 10kΩ direnci kullanarak 5V'a ve toprağa bağlayın. Arduino'nuzdaki pin 2'ye anahtar devresinden bir kablo bağlayın.
Breadboard'un diğer tarafında hoparlör/piezo devresini 5v'ye kurun ve 220Ω direnç kullanarak topraklayın. Bu direnç akımı kontrol eder ve böylece hacmi kontrol eder; Daha yüksek veya daha düşük hacim için burada farklı dirençler deneyebilirsiniz.
Potansiyometrelerinizi, düğmelerle oynamak için yeterli alan bırakarak devre tahtasının ortasına yerleştirin. Her bir tencerenin 5V'a ve toprağa bağlanması gerekir ve her birinin üzerindeki merkez pinleri A0, A1 ve A2 analog pinlerine bağlanır.
Adım 3: Kod
Potansiyometre veya pot, Arduino'ya bağlandığında 0 ile 1023 arasında bir değer döndürecek değişken bir dirençtir. Bu değerleri kendi ihtiyaçlarımıza göre değiştirmek için map() işlevini kullanacağız. map() işlevi beş argüman alır ve bizim durumumuzda makul bir işitilebilir ses üretmek için aralığı 220 ile 2200 arasında yeniden eşleştirmemiz gerekir.
İşlev şuna benzer:
harita(pot, 0, 1023, 220, 2200);
Daha yüksek ve daha düşük frekans tonları için son iki değerle oynayabilirsiniz, sadece köpeğinizi üzmemeye dikkat edin.
Noise_Machine.ino
/* Analog girişlere bağlı üç potansiyometre kullanan gürültü makinesi |
ve bir piezo veya küçük hoparlör. Bir buton sesi açar, potansiyometreler |
Arduino tone() işlevini kullanarak perdeyi kontrol edin ve iki gecikme |
her tonun uzunluğunu ve aradaki uzunluğu kontrol eden değerler |
her ton. Potansiyometreler, değiştirilen analog değerleri verir. |
map() işlevini, ihtiyaçlarınıza uyacak şekilde daha büyük veya daha küçük aralıklarda kullanarak |
müzik zevkleri |
Bu kod kamu malıdır. |
Matt Thomas 2019-04-05 |
*/ |
constint buttonPin = 2; // Buton pimi 2 |
sabit konuşmacı = 9; // Pin 9'da hoparlör veya piezo |
int düğmeDurumu = 0; // Buton için değişkenler |
int potSıfır; // ve potansiyometreler |
int potOne; |
int potİki; |
voidsetup() { |
pinMode(9, ÇIKIŞ); // Hoparlör/piezo çıkış pini |
} |
boşluk döngüsü() { |
buttonState = digitalRead(buttonPin); // Buton durumunu oku |
potZero = analogRead(A0); //Analog değerleri okumak için değişkenler |
potOne = analogRead(A1); |
potTwo = analogRead(A2); |
int htz = harita(potZero, 0, 1023, 0, 8800); // Analog okumaları şu şekilde eşleştirin |
int yüksek = harita(potOne, 0, 1023, 0, 100); // yeni sayı aralıkları oluştur ve oluştur |
int low = map(potTwo, 0, 1023, 0, 100); // yeni değişkenler |
if (buttonState == HIGH) { // Butona basılırsa… |
ton(hoparlör, htz); // Ses açık |
gecikme(yüksek); // Ton uzunluğu |
noTone(hoparlör); // Sesi kapamak |
gecikme (düşük); // Bir sonraki tona kadar geçen süre |
} Başka { |
noTone(hoparlör); // Düğme bırakılırsa ton yok |
} |
} |
GitHub tarafından ❤ ile barındırılan rawNoise_Machine.ino'yu görüntüle
4. Adım: Son
Yani hepsi bu kadar. Koddaki değerlerle oynayın, daha fazla pot/düğme ekleyin ve başka neleri kontrol edebileceğinizi görün. Herhangi bir hata yaptıysam bana bildirin ve umarım müziği beğenirsiniz.