Mundarija:

Arduino - Piezo uch tugmachali pianino: 4 qadam
Arduino - Piezo uch tugmachali pianino: 4 qadam

Video: Arduino - Piezo uch tugmachali pianino: 4 qadam

Video: Arduino - Piezo uch tugmachali pianino: 4 qadam
Video: Урок 89: Использование серводвигателя непрерывного или 360° | Пошаговый курс Arduino 2024, Iyun
Anonim
Image
Image

Uch tugmachali pianino-Arduino-dan foydalanish tajribasiga ega bo'lgan yangi boshlanuvchilar uchun loyiha.

Men tasodifan piezo -buzzer bilan birinchi marta o'ynab, buni yaratmoqchi bo'ldim. Bu juda baland ovozda edi! Tovushni jim qilishning turli usullarini aniqlashga harakat qilganda va ohang () va noTone () funktsiyasidan foydalanib, turli chastotalarni sinab ko'rsam, piezo buzzerni Arduino -ning boshqa sevimli komponentlari bilan aralashtirib yuborish qiziqarli bo'lishi mumkinligini tushundim. to'plam: tugmalar va potansiyometr.

Kerakli materiallarga quyidagilar kiradi:

  • 1 Arduino
  • 1 Non paneli
  • 1 USB kabeli
  • Jumper simlari (har xil rangdagi)
  • 1330 kilo-ohmli rezistor
  • 1 Piezo Buzzer
  • 3 tugmachalari
  • 1 Potansiyometr

1 -qadam: Piezo Buzzer

Piezo Buzzer
Piezo Buzzer

Boshlash uchun Arduino -ning taxtasida piezoni o'rnating. Uning bir tomoni (oyoqning qisqaroq tomoni) erga yugurishi kerak. Boshqa tomon (oyoqning uzun tomoni) raqamli kirish piniga ulanishi kerak. Men uni 8 ga ulashni tanladim.

2 -qadam: tugmachalarni bosing

Tugmalar
Tugmalar
Tugmalar
Tugmalar

Keyin tugmachalarni o'rnatish vaqti keldi. Piezo singari, tugmachalar erga va raqamli kirish piniga ulanishi kerak.

3 -qadam: Potentsiometr

Potentsiometr
Potentsiometr
Potentsiometr
Potentsiometr

Jismoniy qurilishda oxirgi qadam - bu potentsiometr. Potentsiometrlar har xil ko'rinishda bo'ladi. Biz potentsiometrni kuchlanish bo'luvchi sifatida ishlatamiz, shuning uchun uning uch oyog'ini ham ulash lozim.

O'ng oyoq: salbiy chiziq (er)

O'rta oyoq: analog pin 0

Chap oyoq: ijobiy chiziq

4 -qadam: kod

Ushbu loyiha uchun kod yozayotganda, men bir necha turdagi funktsiyalar haqidagi ma'lumotlarga murojaat qildim:

ohang ()

noTone () (men buni oxirigacha ishlatmadim. Buning o'rniga chastotani "0" qilib qo'ydim.)

xarita ()

Piezo Buzzers-ni birinchi marta ishlatayotganlar uchun yana bir ajoyib ma'lumotni bu erda topishingiz mumkin. Piezo signalining ovozini o'zgartirish g'oyasi sodda bo'lib tuyulsa -da, dastlab bu juda zerikarli bo'lishi mumkin!

Ton () funktsiyasini uch qismga bo'lish mumkin:

  1. PIN -kod (piezo -buzzer ulangan pin)
  2. Chastotasi (hertsdagi tovush chastotasi)
  3. Duration (millisekundlarda berilgan tovush davomiyligi)

Asosan, bu shunday ko'rinadi: ohang (pin, chastota, davomiylik). Uchinchi komponent (davomiyligi) ixtiyoriy, qolgan ikkitasi signal signalining ishlashi uchun zarur. Ohang funktsiyasining "chastota" komponenti - bu signal "ovoz" deb o'ylash mumkin.

Bundan tashqari, kodda boshqa ikkita bit kod mavjudligini sezasiz. If/else iboralari Arduino -ga har xil tugmalar bosilsa nima qilish kerakligini va tugmalar bosilmaydigan holatlarda "chastota = 0" bilan sozlashni bildiradi. If/else iboralari ichida map () funktsiyalari potentsiometrning shkalasini chastotalar majmuasida xaritalash uchun ishlatiladi. Bularni o'zgartirish mumkin! Piezodan qanday tovushlarni olish mumkinligini bilish uchun turli chastota qiymatlari bilan o'ynang.

Men uch tugmachali pianino yaratish uchun ishlatgan kodni tekshiring yoki quyida tekshiring.

int piezoPin = 8; // Piezo -ga ulangan pinni o'rnating.

int sensorPin = 0; // Sensorga ulangan pinni o'rnating (potansiyometr). int sensorValue = 0;

int tugmasi1 = 5; // Tugmalarga ulangan kirish pimlarini o'rnating.

int tugmasi2 = 4; int tugmasi3 = 3;

int chastotasi = 0;

const int delayTime = 500; // Tone () funktsiyasida kechikish vaqtining o'zgaruvchisi uchun doimiyni o'rnating.

bo'sh o'rnatish () {

pinMod (tugma1, INPUT_PULLUP); pinMode (tugma2, INPUT_PULLUP); pinMode (tugma 3, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Sensorni o'qing. // Potentiometrning har xil qiymatlarini uchta tugmachaning har biri uchun chastotalar majmuasiga joylashtiring. if (digitalRead (button1) == LOW) {chastota = xarita (sensorValue, 0, 1023, 400, 499); } if if (digitalRead (button2) == LOW) {chastota = map (sensorValue, 0, 1023, 500, 599); } if if (digitalRead (button3) == LOW) {chastota = map (sensorValue, 0, 1023, 600, 699); } boshqa {chastota = 0; } ohang (piezoPin, chastota, delayTime); // Tone () funktsiyalarini o'zgaruvchilar bilan o'rnating. }

Tavsiya: