Turinys:

„Arduino“- pjezo trijų mygtukų fortepijonas: 4 žingsniai
„Arduino“- pjezo trijų mygtukų fortepijonas: 4 žingsniai

Video: „Arduino“- pjezo trijų mygtukų fortepijonas: 4 žingsniai

Video: „Arduino“- pjezo trijų mygtukų fortepijonas: 4 žingsniai
Video: Arduino pamoka Nr. 5: Spaudžiame mygtukus 2024, Lapkritis
Anonim
Image
Image

Trijų mygtukų fortepijonas yra projektas pradedantiesiems, turintiems tam tikros patirties naudojant „Arduino“.

Pirmą kartą žaisdamas su pjezo garsiniu signalu netyčia buvau priblokštas bandydamas tai sukurti. Buvo TAI garsiai! Bandydamas išsiaiškinti įvairius būdus, kaip padaryti garsinį signalą tylesnį ir išbandyti skirtingus dažnius, naudojant toną () ir noTone () funkciją, supratau, kad gali būti smagu pabandyti sumaišyti pjezo garsinį signalą kartu su kitais mėgstamais mano „Arduino“komponentais rinkinys: mygtukai ir potenciometras.

Reikalingos medžiagos apima:

  • 1 Arduino
  • 1 Duonos lenta
  • 1 USB kabelis
  • Trumpieji laidai (įvairių spalvų)
  • 1 330 Kilo omų rezistorius
  • 1 pjezo garsinis signalas
  • 3 Mygtukai
  • 1 potenciometras

1 žingsnis: Pjezo garsinis signalas

Pjezo garsinis signalas
Pjezo garsinis signalas

Norėdami pradėti, nustatykite pjezo ant „Arduino“duonos lentos. Viena jos pusė (trumpesnė kojos pusė) turi bėgti prie žemės. Kitą pusę (ilgesnę kojos pusę) reikia prijungti prie skaitmeninio įvesties kaiščio. Aš nusprendžiau prijungti jį prie 8.

2 žingsnis: Spauskite mygtukus

Mygtukai
Mygtukai
Mygtukai
Mygtukai

Tada atėjo laikas nustatyti mygtukus. Kaip ir pjezo, mygtukai turi būti prijungti prie žemės ir prie skaitmeninio įvesties kaiščio.

3 žingsnis: potenciometras

Potenciometras
Potenciometras
Potenciometras
Potenciometras

Paskutinis fizinio kūrimo žingsnis yra potenciometras. Potenciometrai būna kelių formų. Mes naudosime potenciometrą kaip įtampos daliklį, todėl reikia sujungti visas tris jo kojas.

Dešinė koja: neigiama juosta (žemė)

Vidurinė koja: analoginis kaištis 0

Kairė koja: teigiama juosta

4 žingsnis: kodas

Rašydamas šio projekto kodą, nurodiau informaciją apie keletą konkrečių funkcijų tipų:

tonas()

noTone () (aš šio nenaudojau. Vietoj to nustatiau „0“dažnį.)

žemėlapis ()

Dar vieną puikią nuorodą pirmą kartą naudojantiems „Piezo Buzzers“vartotojams rasite čia. Nors idėja pakeisti pjezo garsinio signalo garsą atrodo paprasta, iš pradžių tai gali būti šiek tiek stulbinanti!

Tono () funkciją galima suskirstyti į tris dalis:

  1. Smeigtukas (kaištis, prie kurio prijungtas pjezo garsinis signalas)
  2. Dažnis (garso dažnis hercais)
  3. Trukmė (garso trukmė, nurodyta milisekundėmis)

Iš esmės tai atrodo taip: tonas (kaištis, dažnis, trukmė). Trečias komponentas (trukmė) yra neprivalomas, o kiti du yra būtini, kad garsinis signalas veiktų. Tono funkcijos „dažnio“komponentas yra tai, ką galima laikyti „garsu“, kurį skleidžia garsinis signalas.

Taip pat pastebėsite, kad kode yra du kiti kodo bitai. Yra keletas „if/else“teiginių, kurie nurodo „Arduino“, ką daryti, jei paspaudžiami skirtingi mygtukai, ir nustatyti jį „dažnis = 0“, kai nepaspaudžiamas nė vienas mygtukas. „If/else“teiginiuose žemėlapio () funkcijos naudojamos potenciometro skalės susiejimui su dažnių rinkiniu. Šiuos galima pakeisti! Žaiskite su skirtingomis dažnio vertėmis, kad pamatytumėte, kokius skirtingus garsus galite išgauti iš pjezo.

Patikrinkite kodą, kurį naudoju kurdamas trijų mygtukų fortepijoną, arba patikrinkite žemiau.

int piezoPin = 8; // Prie Piezo prijungtas kaištis.

int sensorPin = 0; // Nustatykite kaištį, prijungtą prie jutiklio (potenciometro). int sensorValue = 0;

int mygtukas1 = 5; // Nustatykite įvesties kaiščius, prijungtus prie mygtukų.

int mygtukas2 = 4; int mygtukas3 = 3;

int dažnis = 0;

const int delayTime = 500; // Nustatykite tono () funkcijos atidėjimo laiko kintamojo konstantą.

void setup () {

pinMode (1 mygtukas, INPUT_PULLUP); pinMode (mygtukas2, INPUT_PULLUP); pinMode (3 mygtukas, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Skaitykite jutiklį. // Susieti skirtingas potenciometro vertes pagal kiekvieno trijų mygtukų dažnių rinkinį. if (digitalRead (button1) == LOW) {dažnis = žemėlapis (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {dažnis = žemėlapis (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {dažnis = žemėlapis (sensorValue, 0, 1023, 600, 699); } else {dažnis = 0; } tonas (piezoPin, dažnis, uždelsimo laikas); // Nustatykite tono () funkcijas su kintamaisiais. }

Rekomenduojamas: