Tartalomjegyzék:

Arduino - Piezo háromgombos zongora: 4 lépés
Arduino - Piezo háromgombos zongora: 4 lépés

Videó: Arduino - Piezo háromgombos zongora: 4 lépés

Videó: Arduino - Piezo háromgombos zongora: 4 lépés
Videó: Preview ESP32 synthesizer E-Piano in Arduino with full polyphony (wurlitzer / rhodes oriented sound) 2024, Június
Anonim
Image
Image

A háromgombos zongora olyan projekt kezdőknek, akik némi tapasztalattal rendelkeznek az Arduino használatában.

Véletlenül elsodortam magam, amikor megpróbáltam ezt létrehozni, miközben először játszottam piezo zümmögővel. NAGYON hangos volt! Amikor különféle módszereket próbáltam kitalálni a zümmögő csendesebbé tételéhez, és különböző frekvenciákat próbáltam ki a tone () és a noTone () funkció használatával, rájöttem, hogy szórakoztató lehet a piezo zümmögő és az Arduino többi kedvenc összetevője keverése készlet: gombok és a potenciométer.

A szükséges anyagok a következők:

  • 1 Arduino
  • 1 Kenyeretábla
  • 1 USB kábel
  • Jumper vezetékek (különböző színekben)
  • 1 330 Kilo ohmos ellenállás
  • 1 Piezo csengő
  • 3 Nyomógombok
  • 1 potenciométer

1. lépés: Piezo Buzzer

Piezo csengő
Piezo csengő

Kezdésként állítsa be a piezo -t az Arduino kenyértáblájára. Ennek egyik oldala (a rövidebb láboldal) a földre kell, hogy futjon. A másik oldalnak (a hosszabb lábszár) egy digitális bemeneti csaphoz kell csatlakoznia. Úgy döntöttem, hogy 8 -hoz csatlakoztatom.

2. lépés: Nyomógombok

Nyomógombok
Nyomógombok
Nyomógombok
Nyomógombok

Ezután itt az ideje, hogy beállítsa a nyomógombokat. A piezohoz hasonlóan a nyomógomboknak a földhöz és a digitális bemeneti tűhöz kell csatlakozniuk.

3. lépés: Potenciométer

Potenciométer
Potenciométer
Potenciométer
Potenciométer

A fizikai felépítés utolsó lépése a potenciométer. A potenciométerek többféle formában kaphatók. A potenciométert feszültségosztóként fogjuk használni, ezért mindhárom lábát csatlakoztatni kell.

Jobb láb: negatív rúd (föld)

Középső láb: analóg csap 0

Bal láb: Pozitív sáv

4. lépés: Kódolás

A projekt kódjának kiírása során néhány speciális funkciót ismertettem:

hang ()

noTone () (végül nem ezt használtam. A frekvenciát "0" -ra állítottam.)

térkép()

Egy másik csodálatos referencia a Piezo Buzzers első felhasználóinak itt található. Bár a piezo -zümmögő hangjának megváltoztatásának ötlete egyszerűnek tűnik, elsőre kissé lehengerlő lehet!

A tone () függvény három részre bontható:

  1. Csap (az a tű, amelyhez a piezo zümmögő csatlakozik)
  2. Frekvencia (a hang frekvenciája hertzben)
  3. Időtartam (a hang időtartama ezredmásodpercben)

Alapvetően így néz ki: hang (tű, frekvencia, időtartam). A harmadik összetevő (időtartam) opcionális, míg a másik kettő szükséges a zümmögő működéséhez. A hangfunkció "frekvencia" összetevője az, amit a zümmögő által létrehozott "hangnak" lehet tekinteni.

Azt is észre fogja venni, hogy a kód két másik kódrészletet tartalmaz. Van néhány if/else utasítás, amely megmondja az Arduino -nak, hogy mit kell tennie, ha különböző gombokat nyomnak le, valamint beállítja a "frekvencia = 0" értéket olyan helyzetekben, amikor egyik gombot sem nyomja meg. Az if/else utasításokban a map () függvényeket használják a potenciométer skálájának egy frekvenciahalmazra való leképezésére. Ezek megváltoztathatók! Játsszon különböző frekvenciaértékekkel, és nézze meg, milyen különböző hangokat kaphat a piezo.

Nézze meg a kódot, amellyel a háromgombos zongorát készítettem, vagy ellenőrizze alább.

int piezoPin = 8; // Piezo -hoz csatlakoztatott csap beállítása.

int sensorPin = 0; // Az érzékelőhöz (potenciométer) csatlakoztatott csap beállítása. int sensorValue = 0;

int gomb1 = 5; // Állítsa be a gombokhoz csatlakoztatott bemeneti csapokat.

int gomb2 = 4; int gomb3 = 3;

int frekvencia = 0;

const int delayTime = 500; // Állítson be konstansot a késleltetési idő változójához a tone () függvényben.

void setup () {

pinMode (1. gomb, INPUT_PULLUP); pinMode (gomb2, INPUT_PULLUP); pinMode (3. gomb, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Olvassa el az érzékelőt. // A potenciométer különböző értékeinek hozzárendelése a három gomb mindegyikének frekvenciakészletéhez. if (digitalRead (button1) == LOW) {frekvencia = térkép (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {frekvencia = térkép (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {frekvencia = térkép (sensorValue, 0, 1023, 600, 699); } else {gyakoriság = 0; } hang (piezoPin, frekvencia, delayTime); // Állítsa be a tone () függvényeket változókkal. }

Ajánlott: