Obsah:

Arduino - Piezo klavír se třemi tlačítky: 4 kroky
Arduino - Piezo klavír se třemi tlačítky: 4 kroky

Video: Arduino - Piezo klavír se třemi tlačítky: 4 kroky

Video: Arduino - Piezo klavír se třemi tlačítky: 4 kroky
Video: Making an Automaton with a Micro:bit 2024, Listopad
Anonim
Image
Image

Třítlačítkový klavír je projekt pro začátečníky s určitými zkušenostmi s používáním Arduina.

Byl jsem neúmyslně zameten, když jsem se pokoušel to vytvořit, když jsem si poprvé hrál s piezo bzučákem. Bylo to tak hlasité! Když jsem se pokoušel vymyslet různé metody, jak ztišit bzučák, a zkoušet různé frekvence pomocí funkce tone () a noTone (), došlo mi, že by mohlo být zábavné zkusit namixovat piezo bzučák společně s mými dalšími oblíbenými součástmi mého Arduina sada: tlačítka a potenciometr.

Mezi potřebné materiály patří:

  • 1 Arduino
  • 1 prkénko
  • 1 kabel USB
  • Propojovací vodiče (různé barvy)
  • 1 330 kiloohmový odpor
  • 1 Piezo bzučák
  • 3 Tlačítka
  • 1 potenciometr

Krok 1: Piezo bzučák

Piezo bzučák
Piezo bzučák

Chcete -li začít, nastavte piezo na prkénko Arduina. Jedna jeho strana (kratší strana nohou) musí běžet na zem. Druhá strana (delší noha) se musí připojit k digitálnímu vstupnímu kolíku. Rozhodl jsem se připojit k 8.

Krok 2: Stiskněte tlačítka

Tlačítka
Tlačítka
Tlačítka
Tlačítka

Dále je čas nastavit tlačítka. Stejně jako piezo, tlačítka se musí připojit k uzemnění a digitálnímu vstupnímu kolíku.

Krok 3: Potenciometr

Potenciometr
Potenciometr
Potenciometr
Potenciometr

Posledním krokem fyzické stavby je potenciometr. Potenciometry se dodávají v několika různých formách. Potenciometr použijeme jako dělič napětí, takže je třeba propojit všechny tři jeho nohy.

Pravá noha: Negativní lišta (uzemnění)

Střední noha: analogový kolík 0

Levá noha: Pozitivní tyč

Krok 4: Kód

Při psaní kódu pro tento projekt jsem odkazoval na informace o několika konkrétních typech funkcí:

tón()

noTone () (S tímto jsem neskončil. Místo toho jsem nastavil frekvenci na „0“.)

mapa()

Další úžasnou referenci pro první uživatele Piezo Buzzers najdete zde. Ačkoli se myšlenka změny zvuku piezoelektrického bzučáku zdá být jednoduchá, může být zpočátku trochu zdrcující!

Funkci tone () lze rozdělit na tři části:

  1. Pin (kolík, ke kterému je připojen piezoelektrický bzučák)
  2. Frequency (frekvence zvuku v hertzech)
  3. Duration (doba trvání zvuku udávaná v milisekundách)

V zásadě to vypadá takto: tón (pin, frekvence, trvání). Třetí komponenta (doba trvání) je volitelná, zatímco další dvě jsou nutné pro správnou funkci bzučáku. Složka „frekvence“funkce tónu je to, co lze považovat za „zvuk“, který vydává bzučák.

Také si všimnete, že kód obsahuje další dva bity kódu. Je nastaveno několik příkazů if/else, které sdělují Arduinu, co má dělat, když jsou stisknuta různá tlačítka, a také jej nastavují pomocí „frekvence = 0“v situacích, kdy není stisknuto žádné z tlačítek. V rámci příkazů if/else se funkce map () používají k mapování měřítka potenciometru na sadu frekvencí. Ty lze změnit! Hrajte si s různými hodnotami frekvencí a sledujte, jaké různé zvuky můžete z piezo zvuku získat.

Podívejte se na kód, který jsem použil k vytvoření klavíru se třemi tlačítky, nebo se podívejte níže.

int piezoPin = 8; // Nastavení pinu připojeného k Piezo.

int sensorPin = 0; // Nastavte pin připojený k senzoru (potenciometr). int sensorValue = 0;

int tlačítko1 = 5; // Nastavte vstupní piny připojené k tlačítkům.

int tlačítko2 = 4; int tlačítko3 = 3;

int frekvence = 0;

const int delayTime = 500; // Nastavte konstantu pro proměnnou doby zpoždění ve funkci tone ().

neplatné nastavení () {

pinMode (button1, INPUT_PULLUP); pinMode (button2, INPUT_PULLUP); pinMode (button3, INPUT_PULLUP); }

prázdná smyčka () {

sensorValue = analogRead (sensorPin); // Přečtěte si senzor. // Mapujte různé hodnoty potenciometru na sadu frekvencí pro každé ze tří tlačítek. if (digitalRead (button1) == LOW) {frekvence = mapa (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {frekvence = mapa (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {frekvence = mapa (sensorValue, 0, 1023, 600, 699); } else {frekvence = 0; } tón (piezoPin, frekvence, delayTime); // Nastavení funkcí tone () pomocí proměnných. }

Doporučuje: