Satura rādītājs:

Arduino - Pjezo trīs taustiņu klavieres: 4 soļi
Arduino - Pjezo trīs taustiņu klavieres: 4 soļi

Video: Arduino - Pjezo trīs taustiņu klavieres: 4 soļi

Video: Arduino - Pjezo trīs taustiņu klavieres: 4 soļi
Video: Preview ESP32 synthesizer E-Piano in Arduino with full polyphony (wurlitzer / rhodes oriented sound) 2024, Jūnijs
Anonim
Image
Image

Trīs taustiņu klavieres ir projekts iesācējiem ar zināmu Arduino lietošanas pieredzi.

Es biju netīši uzbudināts, mēģinot to izveidot, pirmo reizi spēlējoties ar pjezo skaņas signālu. Tas bija TIK skaļi! Mēģinot izdomāt dažādas metodes, kā padarīt skaņas signālu klusāku, un izmēģinot dažādas frekvences, izmantojot signālu () un noTone () funkciju, es sapratu, ka varētu būt jautri mēģināt sajaukt pjezo skaņas signālu kopā ar citiem maniem iecienītākajiem Arduino komponentiem. komplekts: pogas un potenciometrs.

Nepieciešamie materiāli ietver:

  • 1 Arduino
  • 1 Maizes dēlis
  • 1 USB kabelis
  • Jumper vadi (dažādas krāsas)
  • 1 330 Kilo-omu rezistors
  • 1 Piezo skaņas signāls
  • 3 spiedpogas
  • 1 potenciometrs

1. solis: Pjezo skaņas signāls

Pjezo skaņas signāls
Pjezo skaņas signāls

Lai sāktu, uzstādiet pjezo uz Arduino maizes dēļa. Tā vienai pusei (īsākajai kāju pusei) jāskrien uz zemes. Otrai pusei (garākai kāju pusei) ir jāpievienojas digitālajai ievades tapai. Es izvēlējos to savienot ar 8.

2. solis: spiedpogas

Spiedpogas
Spiedpogas
Spiedpogas
Spiedpogas

Tālāk ir pienācis laiks iestatīt spiedpogas. Tāpat kā pjezo, spiedpogām ir jābūt savienotām ar zemi un digitālo ievades tapu.

3. solis: potenciometrs

Potenciometrs
Potenciometrs
Potenciometrs
Potenciometrs

Pēdējais fiziskās uzbūves posms ir potenciometrs. Potenciometri ir dažāda veida. Mēs izmantosim potenciometru kā sprieguma dalītāju, tāpēc visas trīs tā kājas ir jāsavieno.

Labā kāja: negatīvā josla (zeme)

Vidējā kāja: analogā tapa 0

Kreisā kāja: pozitīva josla

4. solis: kods

Rakstot šī projekta kodu, es atsaucos uz informāciju par dažiem specifiskiem funkciju veidiem:

tonis ()

noTone () (es neizmantoju šo. Tā vietā es iestatīju frekvenci uz "0".)

karte ()

Vēl viena brīnišķīga atsauce Piezo Buzzers pirmreizējiem lietotājiem ir atrodama šeit. Lai gan ideja mainīt pjezo skaņas signāla skaņu šķiet vienkārša, sākumā tā var būt nedaudz satriecoša!

Toņa () funkciju var iedalīt trīs daļās:

  1. Piespraude (tapa, kurai ir pievienots pjezo skaņas signāls)
  2. Frekvence (skaņas frekvence hercos)
  3. Ilgums (skaņas ilgums norādīts milisekundēs)

Būtībā tas izskatās šādi: tonis (tapa, biežums, ilgums). Trešais komponents (ilgums) nav obligāts, bet pārējie divi ir nepieciešami, lai skaņas signāls darbotos. Toņa funkcijas "frekvences" komponents ir tas, ko var uzskatīt par "skaņu", ko rada skaņas signāls.

Jūs arī pamanīsit, ka kodā ir divi citi koda biti. Ir daži if/else paziņojumi, kas norādīti Arduino, kas jādara, nospiežot dažādas pogas, kā arī lai iestatītu to ar “frekvence = 0” situācijās, kad neviena no pogām netiek nospiesta. Ja/citos apgalvojumos kartes () funkcijas tiek izmantotas, lai potenciometra mērogu kartētu uz frekvenču kopu. Šos var mainīt! Spēlējiet ar dažādām frekvenču vērtībām, lai redzētu, kādas dažādas skaņas var iegūt no pjezo.

Pārbaudiet kodu, ko izmantoju, lai izveidotu trīs taustiņu klavieres, vai pārbaudiet zemāk.

int pjezoPin = 8; // Uzstādīt tapu, kas savienota ar Piezo.

int sensorsPin = 0; // Uzstādiet tapu, kas savienota ar sensoru (potenciometru). int sensorValue = 0;

int poga1 = 5; // Iestatiet ievades tapas, kas savienotas ar pogām.

int poga2 = 4; int poga3 = 3;

int frekvence = 0;

const int delayTime = 500; // Iestatiet konstanti aizkaves laika mainīgajam toņa () funkcijā.

void setup () {

pinMode (1. poga, INPUT_PULLUP); pinMode (poga2, INPUT_PULLUP); pinMode (3. poga, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Lasīt sensoru. // Kartējiet potenciometra dažādās vērtības uz frekvenču kopu katrai no trim pogām. if (digitalRead (button1) == LOW) {frekvence = karte (sensorValue, 0, 1023, 400, 499); } cits if (digitalRead (button2) == LOW) {frekvence = karte (sensorValue, 0, 1023, 500, 599); } cits if (digitalRead (button3) == LOW) {frekvence = karte (sensorValue, 0, 1023, 600, 699); } cits {biežums = 0; } tonis (pjezoPin, frekvence, aiztures laiks); // Iestatiet signāla () funkcijas ar mainīgajiem. }

Ieteicams: