Sisukord:

Arduino - pieso kolme nupuga klaver: 4 sammu
Arduino - pieso kolme nupuga klaver: 4 sammu

Video: Arduino - pieso kolme nupuga klaver: 4 sammu

Video: Arduino - pieso kolme nupuga klaver: 4 sammu
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Juuni
Anonim
Image
Image

Kolme nupuga klaver on projekt algajatele, kellel on Arduino kasutamise kogemus.

Mul tekkis tahtmatult tahtmine seda luua esimest korda piesosummeriga mängides. See oli NII vali! Proovides välja mõelda erinevaid meetodeid, kuidas helisignaali vaiksemaks muuta, ja proovides erinevaid sagedusi, kasutades tooni () ja noTone () funktsiooni, mõistsin, et võib olla lõbus proovida pieso -helisignaali segada minu teiste Arduino lemmikkomponentidega komplekt: nupud ja potentsiomeeter.

Vajalike materjalide hulka kuuluvad:

  • 1 Arduino
  • 1 Leivalaud
  • 1 USB -kaabel
  • Jumper juhtmed (erinevad värvid)
  • 1 330 kilo-oomi takisti
  • 1 Piezo summer
  • 3 Vajutage nuppe
  • 1 potentsiomeeter

Samm 1: Pietsosummer

Pietsosummer
Pietsosummer

Alustuseks seadistage pieso Arduino leivalauale. Selle üks külg (lühem jalapool) peab jooksma maapinnale. Teine pool (pikem sääre pool) peab olema ühendatud digitaalse sisendpistikuga. Valisin selle ühendamiseks 8 -ga.

Samm: vajutage nuppe

Vajutage nuppe
Vajutage nuppe
Vajutage nuppe
Vajutage nuppe

Järgmisena on aeg surunupud üles seada. Nagu pieso, peavad ka nupud olema ühendatud maaga ja digitaalse sisendpistikuga.

Samm: potentsiomeeter

Potentsiomeeter
Potentsiomeeter
Potentsiomeeter
Potentsiomeeter

Füüsilise ehituse viimane samm on potentsiomeeter. Potentsiomeetrid on saadaval mitmel erineval kujul. Me kasutame potentsiomeetrit pingejagurina, nii et kõik selle kolm jalga peavad olema ühendatud.

Parem jalg: negatiivne riba (maapind)

Keskjalg: analoogpinge 0

Vasak jalg: positiivne riba

4. samm: kood

Selle projekti jaoks koodi kirjutades viitasin mõnele teatud tüüpi funktsioonile:

toon ()

noTone () (ma ei kasutanud seda. Ma määrasin sageduseks hoopis "0".)

kaart ()

Veel ühe suurepärase viite Piezo summeride esmakasutajatele leiate siit. Kuigi piesosummeri heli muutmise idee tundub lihtne, võib see esialgu pisut üle jõu käia!

Tooni () funktsiooni saab jagada kolmeks osaks:

  1. Tihvt (tihvt, millega piesosummer on ühendatud)
  2. Sagedus (heli sagedus hertsides)
  3. Kestus (heli kestus millisekundites)

Põhimõtteliselt näeb see välja selline: toon (tihvt, sagedus, kestus). Kolmas komponent (kestus) on valikuline, samas kui ülejäänud kaks on vajalikud helisignaali toimimiseks. Toonifunktsiooni "sageduse" komponent on see, mida võib pidada "heliks", mida helisignaal tekitab.

Samuti märkate, et koodil on kaks muud koodibitti. Arduinole on seatud mõned avaldused, kui nad ütlevad, mida teha, kui erinevaid nuppe vajutatakse, ja seadistada parameetrile "sagedus = 0" olukordades, kus ühtegi nuppu ei vajutata. Väidetes if/else kasutatakse potentsiomeetri skaala kaardistamiseks sageduste kogumile map () funktsioone. Neid saab muuta! Mängige erinevate sagedusväärtustega, et näha, milliseid erinevaid helisid pieso annab.

Vaadake koodi, mida kasutasin kolme nupuga klaveri loomisel, või vaadake allpool.

int piesoPin = 8; // Piezoga ühendatud pin seadistamine.

int sensorPin = 0; // Anduri (potentsiomeetri) külge ühendatud tihvti seadistamine. int sensorValue = 0;

int nupp1 = 5; // Seadistage nuppudega ühendatud sisendpoldid.

int nupp2 = 4; int nupp3 = 3;

int sagedus = 0;

const int delayTime = 500; // Seadistage funktsioonis tone () viivituse muutujale konstant.

tühine seadistus () {

pinMode (nupp1, INPUT_PULLUP); pinMode (nupp2, INPUT_PULLUP); pinMode (nupp3, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Anduri lugemine. // Kaardista potentsiomeetri erinevad väärtused iga kolme nupu sageduste komplekti. if (digitalRead (button1) == LOW) {sagedus = kaart (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {sagedus = kaart (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {sagedus = kaart (sensorValue, 0, 1023, 600, 699); } muu {sagedus = 0; } toon (piesoPin, sagedus, viivitusaeg); // Seadista toonide () funktsioonid muutujatega. }

Soovitan: