Mündəricat:

Arduino səs -küy maşını: 4 addım
Arduino səs -küy maşını: 4 addım

Video: Arduino səs -küy maşını: 4 addım

Video: Arduino səs -küy maşını: 4 addım
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Noyabr
Anonim
Arduino səs -küy maşını
Arduino səs -küy maşını
Arduino səs -küy maşını
Arduino səs -küy maşını
Arduino səs -küy maşını
Arduino səs -küy maşını

Köhnə bir PC -ni yıxarkən kiçik bir dinamik tapdım. təkrar emal üçün və Arduino Tone () funksiyasından istifadə edərək nəyə bənzədiyini görəcəyimi düşündüm. Meydanı idarə etmək üçün bir 10Ω potensiometrlə başladım və səs -küy salmağa başladım. Tone () funksiyası sadə bir nəbz nümunəsindən istifadə edir. Kvadrat dalğa şəklində fərqli tezliklərdə səsi açır və söndürür. Ətrafımda yatan başqa iki potensiometr var idi, ona görə də onları əlavə etdim və ton müddətini idarə etmək üçün istifadə etdim. Biri tonun uzunluğuna, biri də tonlar arasındakı səssiz boşluğa nəzarət etmək üçün. Əsasən başqa bir kvadrat dalğa nümunəsi istifadə edir, lakin daha aşağı tezlikdə. Bu dövrə ilə yaxşı bir səs -küy əldə edə bilərsiniz. Bir piezo buzzer ilə də yaxşı işləyir, ancaq dinamikin bas reaksiyası yoxdur.

Addım 1: Ehtiyac duyacağınız hissələr

Arduino Uno

Çörək taxtası və tullanan tellər

1 Kiçik dinamik və ya Piezo səs siqnalı

1 Düymə açarı

3 10Ω Potansiyometrlər

12 22Ω müqavimət

1 10kΩ müqavimət

Addım 2: Dövrə qurun

Dövrə qurun
Dövrə qurun

Çörək taxtasını Arduino 5V pininizə və GND -yə qoşun. Pushbutton açarını çörək taxtasının ən sağına və ya soluna qoyun və 10kΩ rezistordan istifadə edərək 5V -ə və yerə qoşun. Arduino'nun 2 -ci pininə keçid dövrəsindən bir tel bağlayın.

Çörək taxtasının digər tərəfində, hoparlör/piezo dövrəsini 5v və 220Ω müqavimətdən istifadə edərək yerə qoyun. Bu rezistor cərəyanı idarə edir, beləliklə həcmi idarə edir; Daha yüksək və ya aşağı səs üçün burada fərqli rezistorları sınaya bilərsiniz.

Potensiometrlərinizi çörək lövhəsinin ortasına qoyun ki, düymələrlə əymək üçün kifayət qədər yer olsun. Hər bir qazanın 5V -ə və yerə və hər birinin analog pinlərə A0, A1 və A2 -ə bağlanması lazımdır.

Addım 3: Kod

Potensialiometr və ya qazan, Arduinoya qoşulduqda 0 ilə 1023 arasında bir dəyər qaytaracaq dəyişən bir rezistordur. Bu dəyərləri öz ehtiyaclarımıza uyğun olaraq dəyişdirmək üçün map () funksiyasından istifadə edəcəyik. Map () funksiyası beş arqument tələb edir və bizim vəziyyətimizdə ağlabatan səsli bir səs çıxarmaq üçün aralığı 220 ilə 2200 arasında yenidən xəritələndirməliyik.

Funksiya belə görünür:

xəritə (qazan, 0, 1023, 220, 2200);

Daha yüksək və aşağı tezlik tonları üçün son iki dəyərlə oynaya bilərsiniz, yalnız itinizi incitmədiyinizə diqqət yetirin.

Noise_Machine.ino

/* Analog girişlərə qoşulmuş üç potensiometrdən istifadə edən səs -küy maşını
və piezo və ya kiçik dinamik. Bir düymə səs -küyü, potansiyometrləri işə salır
Arduino tone () funksiyasından və iki gecikmədən istifadə edərək meydanı idarə edin
hər tonun uzunluğunu və aralarındakı uzunluğu idarə edən dəyərlər
hər ton. Potansiometrlər dəyişdirilən analoq dəyərlər verir
map () funksiyasından istifadə edərək sizə uyğun olaraq daha böyük və ya kiçik diapazonlara daxil edin
musiqi zövqləri.
Bu kod ictimai malıdır.
Matt Thomas 2019-04-05
*/
constint buttonPin = 2; // Pushbutton pin 2
constint dinamik = 9; // 9 -cu pindəki dinamik və ya piezo
int düyməsiState = 0; // Düymə üçün dəyişənlər
int potZero; // və potensiometrlər
int potOne;
int potTwo;
voidsetup () {
pinMode (9, Çıxış); // Dinamik/piezo çıxış pimi
}
voidloop () {
buttonState = digitalRead (buttonPin); // Düymə vəziyyətini oxuyun
potZero = analogRead (A0); // Analog dəyərləri oxumaq üçün dəyişənlər
potOne = analogRead (A1);
potTwo = analogRead (A2);
int htz = xəritə (potZero, 0, 1023, 0, 8800); // Analog oxunuşları xəritəyə salın
int high = xəritə (potOne, 0, 1023, 0, 100); // yeni ədəd aralığı yaradın
int low = xəritə (potTwo, 0, 1023, 0, 100); // yeni dəyişənlər
if (buttonState == HIGH) {// Düymə basılarsa…
ton (dinamik, htz); // Səs aç
gecikmə (yüksək); // Ton uzunluğu
noTone (dinamik); // Səs kəs
gecikmə (aşağı); // Növbəti tona qədər vaxt
} başqa {
noTone (dinamik); // Düymə buraxılarsa ton yoxdur
}
}

GitHub tərəfindən ❤ ilə evlənən rawNoise_Machine.inoya baxın

Addım 4: Son

Deməli, bütün bunlar var. Koddakı dəyərlərlə oynayın, daha çox qazan /düymə əlavə edin və başqa nəyə nəzarət edə biləcəyinizə baxın. Səhvlərim olub olmadığını bildirin və ümid edirəm ki, musiqidən zövq alacaqsınız.

Tövsiyə: