Sisällysluettelo:

Arduino - pietso, kolmen painikkeen piano: 4 vaihetta
Arduino - pietso, kolmen painikkeen piano: 4 vaihetta

Video: Arduino - pietso, kolmen painikkeen piano: 4 vaihetta

Video: Arduino - pietso, kolmen painikkeen piano: 4 vaihetta
Video: Схема аналогового звукового генератора хай-хэта драм-машины DR-110 2024, Kesäkuu
Anonim
Image
Image

Kolmen painikkeen piano on projekti aloittelijoille, joilla on jonkin verran kokemusta Arduinon käytöstä.

Olin tahattomasti yrittänyt luoda tämän pelatessani pietsosummerilla ensimmäistä kertaa. Se oli NIIN kovaa! Yrittäessäni keksiä erilaisia tapoja tehdä summeri hiljaisemmaksi ja kokeilla eri taajuuksia käyttämällä tone () - ja noTone () -toimintoa, tajusin, että saattaa olla hauskaa kokeilla sekoittaa pietsosummeri muiden Arduinon suosikkikomponenttien kanssa sarja: painikkeet ja potentiometri.

Tarvittavia materiaaleja ovat:

  • 1 Arduino
  • 1 Leipälevy
  • 1 USB -kaapeli
  • Hyppyjohdot (eri värejä)
  • 1 330 Kilo-ohmin vastus
  • 1 Pietsosummeri
  • 3 Painikkeet
  • 1 Potentiometri

Vaihe 1: Pietsosummeri

Pietsosummeri
Pietsosummeri

Aloita asettamalla pietso Arduinon leipälaudalle. Sen toisen puolen (lyhyempi jalkaosa) on juoksettava maahan. Toisen puolen (pidemmän jalan puoli) on liitettävä digitaaliseen tulotappiin. Päätin yhdistää sen 8: een.

Vaihe 2: Painikkeet

Painikkeet
Painikkeet
Painikkeet
Painikkeet

Seuraavaksi on aika asettaa painikkeet. Kuten pietso, painikkeiden on liitettävä maahan ja digitaaliseen tulonastappaan.

Vaihe 3: Potentiometri

Potentiometri
Potentiometri
Potentiometri
Potentiometri

Fyysisen rakenteen viimeinen vaihe on potentiometri. Potentiometrejä on muutamia eri muotoja. Käytämme potentiometriä jännitteenjakajana, joten kaikki sen kolme jalkaa on yhdistettävä.

Oikea jalka: negatiivinen palkki (maa)

Keskijalka: Analoginen nasta 0

Vasen jalka: Positiivinen palkki

Vaihe 4: Koodi

Kirjoittaessani koodia tälle projektille viittasin muutamiin erityyppisiin toimintoihin liittyviin tietoihin:

sävy()

noTone () (en päässyt käyttämään tätä. Asetin taajuudeksi "0".)

kartta()

Toinen hieno viite Piezo-summerien ensimmäistä käyttäjää varten löytyy täältä. Vaikka idea pietsosummerin äänen muuttamisesta näyttää yksinkertaiselta, se voi aluksi olla hieman ylivoimainen!

Sävy () -toiminto voidaan jakaa kolmeen osaan:

  1. Nasta (tappi, johon pietsosummeri on liitetty)
  2. Taajuus (äänen taajuus hertseinä)
  3. Kesto (äänen kesto millisekunteina)

Pohjimmiltaan se näyttää tältä: ääni (pin, taajuus, kesto). Kolmas komponentti (kesto) on valinnainen, kun taas kaksi muuta tarvitaan summerin toimintaan. Äänitoiminnon "taajuus" -komponentti on mitä voidaan pitää "äänenä", jota summeri tuottaa.

Huomaat myös, että koodissa on kaksi muuta koodibittiä. Joitakin if/else -lauseita on asetettu kertomaan Arduinolle, mitä tehdä, jos eri painikkeita painetaan, sekä asettaa sen taajuus "0" tilanteissa, joissa mitään painikkeita ei paineta. If/else -lausekkeiden sisällä map () -funktioita käytetään potentiometrin asteikon kartoittamiseen taajuuksille. Näitä voi muuttaa! Pelaa eri taajuusarvoilla nähdäksesi, mitä erilaisia ääniä saat pietsosta.

Katso koodi, jota käytin kolmen painikkeen pianon luomiseen, täältä tai tarkista alla.

int piezoPin = 8; // Piezoon kytketty nasta.

int -anturiPin = 0; // Asenna anturiin liitetty tappi (potentiometri). int sensorValue = 0;

int -painike1 = 5; // Määritä painikkeisiin kytketyt tulonastat.

int -painike2 = 4; int -painike3 = 3;

int taajuus = 0;

const int delayTime = 500; // Aseta vakio viiveajan muuttujalle sävy () -toiminnossa.

void setup () {

pinMode (painike1, INPUT_PULLUP); pinMode (painike2, INPUT_PULLUP); pinMode (painike3, INPUT_PULLUP); }

void loop () {

sensorValue = analoginenLue (sensorPin); // Lue anturi. // Kartoittaa potentiometrin eri arvot taajuuksille kullekin kolmelle painikkeelle. if (digitalRead (button1) == LOW) {taajuus = kartta (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {taajuus = kartta (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {taajuus = kartta (sensorValue, 0, 1023, 600, 699); } muu {taajuus = 0; } sävy (piezoPin, taajuus, delayTime); // Määritä tone () -funktiot muuttujien kanssa. }

Suositeltava: