Мазмұны:

Ардуино - Пьезо үш түймелі фортепиано: 4 қадам
Ардуино - Пьезо үш түймелі фортепиано: 4 қадам

Бейне: Ардуино - Пьезо үш түймелі фортепиано: 4 қадам

Бейне: Ардуино - Пьезо үш түймелі фортепиано: 4 қадам
Бейне: ТОП 10 МЕЛОДИЙ на Arduino. Изучаем ЗУММЕР. Пьезоизлучатель 2024, Маусым
Anonim
Image
Image

Үш түймелі фортепиано-бұл Arduino-мен жұмыс жасау тәжірибесі бар жаңадан бастаушыларға арналған жоба.

Мен пьезо -зумермен бірінші рет ойнап жүргенде, байқаусызда оны жасауға тырыстым. Өте қатты болды! Дыбысты өшірудің әр түрлі әдістерін ойлап табуда және тон () және noTone () функциясын қолдана отырып, әр түрлі жиіліктерді сынап көруде, мен пьезо -дыбыстық сигналды Arduino -ның басқа сүйікті компоненттерімен бірге араластыру қызықты болатынын түсіндім. жинақ: түймелер мен потенциометр.

Қажетті материалдарға мыналар жатады:

  • 1 Ардуино
  • 1 Нан тақтасы
  • 1 USB кабелі
  • Өткізгіш сымдар (түрлі түсті)
  • 1330 кило-Ом резисторы
  • 1 Piezo Buzzer
  • 3 батырмалар
  • 1 Потенциометр

1 -қадам: Piezo Buzzer

Piezo Buzzer
Piezo Buzzer

Бастау үшін пьезоны Arduino тақтасына орнатыңыз. Оның бір жағы (аяқтың қысқа жағы) жерге жүгіру керек. Екінші жағы (ұзын аяқ жағы) сандық кіріс түйреуішіне қосылуы керек. Мен оны 8 -ге қосуды шештім.

2 -қадам: түймелерді басыңыз

Басу түймелері
Басу түймелері
Басу түймелері
Басу түймелері

Әрі қарай, түймелерді орнату уақыты келді. Пьезо сияқты, түймелер жерге және цифрлық кіріс түйреуішіне қосылуы керек.

3 -қадам: потенциометр

Потенциометр
Потенциометр
Потенциометр
Потенциометр

Физикалық құрылыстың соңғы кезеңі - потенциометр. Потенциометрлер әртүрлі формада болады. Біз потенциометрді кернеу бөлгіш ретінде қолданатын боламыз, сондықтан оның үш аяғын да қосу керек.

Оң аяқ: теріс жолақ (жер)

Ортаңғы аяқ: аналогтық түйреуіш 0

Сол жақ аяқ: позитивті жолақ

4 -қадам: код

Бұл жобаның кодын жазу кезінде мен функциялардың бірнеше нақты түрлері туралы ақпаратқа сілтеме жасадым:

тон ()

noTone () (мен мұны қолданған жоқпын. Оның орнына жиілікті «0» деп қойдым.)

карта ()

Piezo Buzzers-ті алғаш қолданушыларға арналған тағы бір керемет анықтаманы мына жерден табуға болады. Пьезо -дыбыстық сигналдың дыбысын өзгерту идеясы қарапайым болып көрінгенімен, бастапқыда бұл өте қиын болуы мүмкін!

Ton () функциясын үш бөлікке бөлуге болады:

  1. Түйреуіш (пьезо -зуммер қосылған түйреуіш)
  2. Жиілік (герц дыбысының жиілігі)
  3. Ұзақтық (миллисекундта берілген дыбыстың ұзақтығы)

Негізінде бұл келесідей көрінеді: тон (пин, жиілік, ұзақтығы). Үшінші компонент (ұзақтығы) міндетті емес, ал қалған екеуі дыбыстық сигналдың жұмыс істеуі үшін қажет. Тон функциясының «жиілік» компоненті - бұл дыбыс шығаратын «дыбыс» деп ойлауға болатын нәрсе.

Сондай -ақ, кодта кодтың басқа екі биті бар екенін байқайсыз. If/else операторлары Arduino -ға әр түрлі түймелер басылса не істеу керектігін айтуға, сондай -ақ түймелердің ешқайсысы басылмаған жағдайда оны «жиілік = 0» мәнімен орнатуға арналған. If/else операторларының ішінде map () функциялары потенциометрдің шкаласын жиіліктер жиегіне салыстыру үшін қолданылады. Бұларды өзгертуге болады! Пьезодан қандай дыбыстарды алуға болатынын көру үшін әр түрлі жиілік мәндерімен ойнаңыз.

Мен үш батырмалы фортепиано жасау үшін пайдаланған кодты мына жерден тексеріңіз немесе төменде қараңыз.

int piezoPin = 8; // Piezo қосылған түйреуішті орнату.

int sensorPin = 0; // Сенсорға қосылған түйреуішті орнату (потенциометр). int sensorValue = 0;

int түймесі1 = 5; // Түймелерге қосылған кіріс түйреуіштерін орнатыңыз.

int түймесі2 = 4; int түймесі3 = 3;

int жиілігі = 0;

const int delayTime = 500; // Tone () функциясындағы кідіріс уақытының айнымалысы үшін тұрақты мәнді орнатыңыз.

жарамсыз орнату () {

pinMode (1 -түйме, INPUT_PULLUP); pinMode (2 -түйме, INPUT_PULLUP); pinMode (түйме3, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Сенсорды оқыңыз. // Потенциометрдің әр түрлі мәндерін үш батырманың әрқайсысы үшін жиіліктер жиынтығымен салыстырыңыз. if (digitalRead (button1) == LOW) {жиілік = карта (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {жиілік = карта (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {жиілік = карта (sensorValue, 0, 1023, 600, 699); } басқа {жиілік = 0; } тон (piezoPin, жиілік, delayTime); // Tone () функцияларын айнымалылармен реттеңіз. }

Ұсынылған: