Orodha ya maudhui:

Arduino - Piezo Piano Button Piano: 4 Hatua
Arduino - Piezo Piano Button Piano: 4 Hatua

Video: Arduino - Piezo Piano Button Piano: 4 Hatua

Video: Arduino - Piezo Piano Button Piano: 4 Hatua
Video: TinkerCAD Tutorial: Arduino Piano 2024, Novemba
Anonim
Image
Image

Piano ya vitufe vitatu ni mradi wa Kompyuta na uzoefu fulani wa kutumia Arduino.

Nilifagiliwa bila kujua kujaribu kuunda hii wakati nikicheza karibu na buzzer ya piezo kwa mara ya kwanza. Ilikuwa kubwa sana! Katika kujaribu kujua njia anuwai za kufanya buzzer iwe kimya na kujaribu masafa tofauti kwa kutumia toni () na noTone () kazi, niligundua kuwa inaweza kufurahisha kujaribu kuchanganya buzzer ya piezo pamoja na vitu vyangu vingine vya kupenda vya Arduino yangu kit: vifungo na potentiometer.

Vifaa vinavyohitajika ni pamoja na:

  • 1 Arduino
  • 1 Bodi ya mkate
  • Cable 1 ya USB
  • Waya za jumper (rangi anuwai)
  • 1 330 Kizuizi cha Kilo-ohm
  • 1 Piezo Buzzer
  • 3 Bonyeza Vifungo
  • 1 Potentiometer

Hatua ya 1: Piezo Buzzer

Piezo Buzzer
Piezo Buzzer

Kuanza, weka piezo kwenye ubao wa mkate wa Arduino. Upande wake (upande mfupi wa mguu) unahitaji kukimbia chini. Upande wa pili (upande wa mguu mrefu) unahitaji kuungana na pini ya kuingiza dijiti. Nilichagua kuiunganisha na 8.

Hatua ya 2: Vifungo vya kushinikiza

Bonyeza Vifungo
Bonyeza Vifungo
Bonyeza Vifungo
Bonyeza Vifungo

Ifuatayo, ni wakati wa kuanzisha vifungo vya kushinikiza. Kama piezo, vifungo vya kushinikiza vinahitaji kuungana na ardhi na pini ya kuingiza dijiti.

Hatua ya 3: Potentiometer

Potentiometer
Potentiometer
Potentiometer
Potentiometer

Hatua ya mwisho katika ujenzi wa mwili ni potentiometer. Potentiometers huja katika aina tofauti tofauti. Tutatumia potentiometer kama mgawanyiko wa voltage, kwa hivyo miguu yake yote mitatu inahitaji kuunganishwa.

Mguu wa kulia: Baa Mbaya (Chini)

Mguu wa Kati: Analog Pin 0

Mguu wa kushoto: Baa nzuri

Hatua ya 4: Kanuni

Wakati ninaandika nambari ya mradi huu, nilitaja habari juu ya aina kadhaa za kazi:

sauti ()

noTone () (sikuishia kutumia hii. Niliweka masafa kuwa "0" badala yake.)

ramani ()

Rejea nyingine nzuri kwa watumiaji wa mara ya kwanza wa Piezo Buzzers inaweza kupatikana hapa. Ingawa wazo la kubadilisha sauti ya buzzer ya piezo linaonekana kuwa rahisi, inaweza kuwa ngumu sana mwanzoni!

Kazi ya toni () inaweza kugawanywa katika sehemu tatu:

  1. Pini (pini ambayo buzzer ya piezo imeunganishwa nayo)
  2. Mzunguko (mzunguko wa sauti katika hertz)
  3. Muda (muda wa sauti iliyotolewa kwa milliseconds)

Kimsingi, inaonekana kama hii: toni (pini, masafa, muda). Sehemu ya tatu (muda) ni ya hiari, wakati zingine mbili ni muhimu ili buzzer ifanye kazi. Sehemu ya "masafa" ya utendaji wa toni ndio inaweza kufikiriwa kama "sauti" ambayo inazalishwa na buzzer.

Pia utagundua kuwa nambari hiyo ina alama zingine mbili za nambari. Kuna taarifa zingine ikiwa / nyingine zimewekwa ili kuwaambia Arduino nini cha kufanya ikiwa vifungo tofauti vimebanwa na vile vile kuiweka na "frequency = 0" katika hali wakati hakuna vifungo vyote vinashinikizwa. Ndani ya taarifa za if / else, kazi za ramani () hutumiwa kuweka ramani ya kiwango cha potentiometer kwenye seti ya masafa. Hizi zinaweza kubadilishwa! Cheza karibu na maadili tofauti ya masafa ili uone ni sauti gani tofauti unazoweza kupata kutoka kwa piezo.

Angalia nambari ambayo nilikuwa nikitengeneza piano ya vitufe vitatu hapa au angalia hapa chini.

int piezoPin = 8; // Weka pini iliyounganishwa na Piezo.

sensor ya ndaniPin = 0; // Weka pini iliyounganishwa na sensa (potentiometer). sensor ya ndaniValue = 0;

kitufe cha int = 1 = 5; // Weka pini za kuingiza zilizounganishwa na vifungo.

kitufe2 = 4; kitufe3 = 3;

mzunguko wa int = 0;

const int delayTime = 500; // Weka kila wakati kwa kutofautisha kwa wakati wa kuchelewesha kwenye kazi ya toni ().

usanidi batili () {

pinMode (kifungo1, INPUT_PULLUP); pinMode (kifungo2, INPUT_PULLUP); pinMode (kifungo3, INPUT_PULLUP); }

kitanzi batili () {

sensorValue = AnalogRead (sensorPin); // Soma sensorer. // Ramani maadili tofauti ya potentiometer kwa seti ya masafa kwa kila vifungo vitatu. ikiwa (digitalRead (button1) == LOW) {frequency = ramani (sensorValue, 0, 1023, 400, 499); } kingine ikiwa (digitalRead (button2) == LOW) {frequency = ramani (sensorValue, 0, 1023, 500, 599); } kingine ikiwa (digitalRead (button3) == LOW) {frequency = ramani (sensorValue, 0, 1023, 600, 699); } mwingine {frequency = 0; } toni (piezoPin, frequency, delayTime); // Sanidi kazi ya toni () na anuwai. }

Ilipendekeza: