Sadržaj:

Arduino - Piezo klavir sa tri dugmeta: 4 koraka
Arduino - Piezo klavir sa tri dugmeta: 4 koraka

Video: Arduino - Piezo klavir sa tri dugmeta: 4 koraka

Video: Arduino - Piezo klavir sa tri dugmeta: 4 koraka
Video: MKS Gen L — Марлин 1 1 9 (configuration.h) 2024, Jun
Anonim
Image
Image

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

Nehotice sam bio zahvaćen pokušajima da ovo stvorim dok sam se prvi put igrao sa piezo zujalicom. Bilo je tako glasno! Pokušavajući smisliti 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 sa mojim omiljenim komponentama mog Arduina komplet: tipke i potenciometar.

Potrebni materijali uključuju:

  • 1 Arduino
  • 1 Breadboard
  • 1 USB kabel
  • Žice za spajanje (različite boje)
  • 1 330 Kilo-ohmski otpornik
  • 1 Piezo Buzzer
  • 3 tastera
  • 1 Potenciometar

Korak 1: Piezo zujalica

Piezo Buzzer
Piezo Buzzer

Za početak postavite piezo na matičnu ploču Arduina. Jedna njegova strana (kraća noga) 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 dugmad

Push Buttons
Push Buttons
Push Buttons
Push Buttons

Zatim je vrijeme za postavljanje tipki. Kao i piezo, tipke 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 njegove 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 na kraju koristio ovaj. Umjesto toga postavio sam frekvenciju na "0".)

mapa ()

Još jednu divnu referencu za prve korisnike Piezo zujalica možete pronaći ovdje. Iako se ideja o promjeni zvuka piezo zvučnika č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 dato u milisekundama)

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

Takođe ćete primijetiti da kôd sadrži još dva bita koda. Postoje neke if/else naredbe postavljene da kažu Arduinu šta treba učiniti ako se pritisnu različita gumba, kao i da se postavi s "frekvencija = 0" u situacijama kada se ne pritisne nijedno dugme. Unutar if/else naredbi, funkcije map () se koriste za preslikavanje razmjera potenciometra na skup frekvencija. To se može promijeniti! Poigrajte se različitim vrijednostima frekvencije da vidite koje različite zvukove možete čuti iz pieza.

Ovdje provjerite kôd koji sam koristio za kreiranje klavira s tri tipke ili provjerite ispod.

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 povezanih s gumbima.

int button2 = 4; int button3 = 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 svako od tri dugmeta. if (digitalRead (button1) == LOW) {frekvencija = mapa (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {frekvencija = mapa (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {frekvencija = mapa (sensorValue, 0, 1023, 600, 699); } else {frekvencija = 0; } ton (piezoPin, frekvencija, delayTime); // Postavljanje ton () funkcija s varijablama. }

Preporučuje se: