Sadržaj:

Arduino - Piezo glasovir s tri gumba: 4 koraka
Arduino - Piezo glasovir s tri gumba: 4 koraka

Video: Arduino - Piezo glasovir s tri gumba: 4 koraka

Video: Arduino - Piezo glasovir s tri gumba: 4 koraka
Video: Piano Tiles Arduino Robot 2024, Lipanj
Anonim
Image
Image

Klavir s tri tipke projekt je za početnike s određenim iskustvom u korištenju Arduina.

Nehotično sam bio zahvaćen pokušajima da to stvorim dok sam se prvi put igrao s piezo zujalicom. Bilo je tako glasno! Pokušavajući shvatiti različite metode kako bi zujalica postala tiša i isprobavajući različite frekvencije pomoću funkcije tone () i noTone (), shvatio sam da bi moglo biti zabavno pokušati miješati piezo zujalicu zajedno s mojim omiljenim komponentama mog Arduina komplet: tipke i potenciometar.

Potrebni materijali uključuju:

  • 1 Arduino
  • 1 Oglasna ploča
  • 1 USB kabel
  • Žice za spajanje (različite boje)
  • 1 330 Kilo-ohmski otpornik
  • 1 Piezo zujalica
  • 3 tipke
  • 1 Potenciometar

Korak 1: Piezo zujalica

Piezo zujalica
Piezo zujalica

Za početak postavite piezo na ploču Arduina. Jedna njegova strana (kraća strana noge) mora trčati o tlo. Druga strana (duža strana) mora se spojiti na pin za digitalni ulaz. Odlučio sam ga spojiti na 8.

Korak 2: Pritisnite gumbe

Pritisnuti gumbe
Pritisnuti gumbe
Pritisnuti gumbe
Pritisnuti gumbe

Zatim je vrijeme za postavljanje tipki. Kao i piezo, gumbi se moraju spojiti na masu i na pin za digitalni ulaz.

Korak 3: Potenciometar

Potenciometar
Potenciometar
Potenciometar
Potenciometar

Posljednji korak u fizičkoj izgradnji je potenciometar. Potenciometri dolaze u nekoliko različitih oblika. Potenciometar ćemo koristiti kao razdjelnik napona, pa sve tri noge moraju biti spojene.

Desna noga: Negativna traka (uzemljenje)

Srednja noga: analogni pin 0

Lijeva noga: Pozitivna traka

Korak 4: Kodirajte

Prilikom pisanja koda za ovaj projekt referencirao sam informacije o nekoliko specifičnih vrsta funkcija:

ton()

noTone () (Nisam ovo završio. Umjesto toga postavio sam frekvenciju na "0".)

karta()

Još jednu divnu referencu za prve korisnike Piezo zujalica možete pronaći ovdje. Iako se ideja o promjeni zvuka piezo zujalice čini jednostavnom, u početku može biti pomalo neodoljiva!

Funkcija tone () može se podijeliti na tri dijela:

  1. Pin (pin na koji je povezan piezo zujalica)
  2. Frekvencija (frekvencija zvuka u hercima)
  3. Trajanje (trajanje zvuka u milisekundama)

U osnovi, to izgleda ovako: ton (pin, frekvencija, trajanje). Treća komponenta (trajanje) nije obavezna, dok su ostale dvije potrebne za rad zujalice. "Frekvencijska" komponenta tonske funkcije je ono što se može zamisliti kao "zvuk" koji proizvodi zujalica.

Također ćete primijetiti da kôd sadrži još dva bita koda. Postoje neke if/else naredbe postavljene da kažu Arduinu što učiniti ako se pritisnu različiti gumbi, kao i da se postavi s "frekvencija = 0" u situacijama kada se ne pritisne niti jedna tipka. Unutar if/else naredbi, funkcije map () koriste se za preslikavanje ljestvice potenciometra na skup frekvencija. To se može promijeniti! Poigrajte se različitim vrijednostima frekvencije kako biste vidjeli koje različite zvukove možete dobiti iz pieza.

Ovdje provjerite kôd koji sam koristio za stvaranje klavira s tri tipke ili provjerite u nastavku.

int piezoPin = 8; // Postavite pin spojen na Piezo.

int sensorPin = 0; // Postavite pin spojen na senzor (potenciometar). int sensorValue = 0;

int button1 = 5; // Postavljanje ulaznih pinova spojenih na gumbe.

int gumb2 = 4; int gumb3 = 3;

int frekvencija = 0;

const int delayTime = 500; // Postavljanje konstante za varijablu vremena kašnjenja u funkciji tone ().

void setup () {

pinMode (button1, INPUT_PULLUP); pinMode (button2, INPUT_PULLUP); pinMode (button3, INPUT_PULLUP); }

void loop () {{100} {101}

sensorValue = analogRead (sensorPin); // Očitavanje senzora. // Preslikajte različite vrijednosti potenciometra na skup frekvencija za svaku od tri tipke. if (digitalRead (button1) == LOW) {frekvencija = karta (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {frekvencija = karta (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {frekvencija = karta (sensorValue, 0, 1023, 600, 699); } else {frekvencija = 0; } ton (piezoPin, frekvencija, delayTime); // Postavljanje funkcija tone () s varijablama. }

Preporučeni: