Мазмуну:

Ардуино - Пьезо үч баскычтуу фортепиано: 4 кадам
Ардуино - Пьезо үч баскычтуу фортепиано: 4 кадам

Video: Ардуино - Пьезо үч баскычтуу фортепиано: 4 кадам

Video: Ардуино - Пьезо үч баскычтуу фортепиано: 4 кадам
Video: КАК СЫГРАТЬ ЛЮБУЮ МЕЛОДИЮ НА АРДУИНО / ПЬЕЗО ПИЩАЛКА, ЗУММЕР [Уроки Ардуино #16] 2024, Ноябрь
Anonim
Image
Image

Үч баскычтуу фортепиано-бул башталгычтар үчүн Arduino колдонуу тажрыйбасы бар долбоор.

Биринчи жолу пьезо -зумер менен ойноп жатып, мен муну байкабай байкап калдым. Өтө катуу болду! Зонду басаңдатуу үчүн ар кандай ыкмаларды табууга аракет кылып, тон () жана noTone () функциясын колдонуп, ар кандай жыштыктарды сынап жатып, пьезо баззерди менин башка сүйүктүү компоненттерим менен Arduino менен аралаштыруу кызыктуу болушу мүмкүн экенин түшүндүм. комплект: баскычтар жана потенциометр.

Керектүү материалдар төмөнкүлөрдү камтыйт:

  • 1 Arduino
  • 1 Breadboard
  • 1 USB кабели
  • Jumper Wires (ар кандай түстөр)
  • 1 330 Километрлик резистор
  • 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 button1 = 5; // Баскычтарга туташкан кирүү казыктарын орнотуңуз.

int button2 = 4; int button3 = 3;

int жыштыгы = 0;

const int delayTime = 500; // Tone () функциясында кечигүү убактысынын өзгөрмөсү үчүн константаны орнотуңуз.

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

pinMode (button1, INPUT_PULLUP); pinMode (button2, INPUT_PULLUP); pinMode (button3, 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); } else {жыштыгы = 0; } обон (piezoPin, жыштык, delayTime); // Tone () функцияларын өзгөрмөлөр менен орнотуңуз. }

Сунушталууда: