Obsah:

Arduino - piezo trojtlačítkové piano: 4 kroky
Arduino - piezo trojtlačítkové piano: 4 kroky

Video: Arduino - piezo trojtlačítkové piano: 4 kroky

Video: Arduino - piezo trojtlačítkové piano: 4 kroky
Video: Arduino Examples - Knock (Piezo Sesnor) 2024, Jún
Anonim
Image
Image

Trojtlačidlový klavír je projekt pre začiatočníkov s určitými skúsenosťami s používaním Arduina.

Pri prvom hraní s piezoelektrickým bzučiakom som bol nechtiac zmietaný z pokusu vytvoriť to. Bolo to tak hlasné! Keď som sa pokúšal vymyslieť rôzne metódy na zníženie hlasitosti bzučiaka a vyskúšať rôzne frekvencie pomocou funkcie tone () a noTone (), uvedomil som si, že by mohlo byť zábavné skúsiť zmiešať piezový bzučiak s mojimi ďalšími obľúbenými komponentmi môjho Arduina. sada: tlačidlá a potenciometer.

Medzi potrebné materiály patria:

  • 1 Arduino
  • 1 Breadboard
  • 1 kábel USB
  • Prepojovacie vodiče (rôzne farby)
  • Rezistor 1 330 kiloohmov
  • 1 piezový bzučiak
  • 3 tlačidlá
  • 1 potenciometer

Krok 1: Piezo bzučiak

Piezo bzučiak
Piezo bzučiak

Na začiatku nastavte piezo na doske Arduino. Jedna jeho strana (kratšia strana nohy) musí smerovať k zemi. Druhá strana (dlhšia strana nohy) sa musí pripojiť k digitálnemu vstupnému kolíku. Rozhodol som sa ho pripojiť k 8.

Krok 2: Stlačenie tlačidiel

Tlačidlá
Tlačidlá
Tlačidlá
Tlačidlá

Ďalej je čas nastaviť tlačidlá. Rovnako ako piezo, tlačidlá sa musia pripojiť k uzemneniu a k digitálnemu vstupnému kolíku.

Krok 3: Potenciometer

Potenciometer
Potenciometer
Potenciometer
Potenciometer

Posledným krokom vo fyzickom zostavení je potenciometer. Potenciometre majú niekoľko rôznych foriem. Potenciometer použijeme ako delič napätia, takže je potrebné prepojiť všetky tri jeho nohy.

Pravá noha: negatívna lišta (uzemnenie)

Stredná noha: analógový kolík 0

Ľavá noha: kladná tyč

Krok 4: Kód

Pri písaní kódu pre tento projekt som odkazoval na informácie o niekoľkých konkrétnych typoch funkcií:

tón ()

noTone () (Tento som neskončil. Namiesto toho som nastavil frekvenciu na „0“.)

mapa ()

Tu nájdete ďalšiu skvelú referenciu pre nových používateľov Piezo Buzzers. Aj keď sa myšlienka zmeny zvuku piezo bzučiaka zdá byť jednoduchá, na začiatku môže byť trochu zdrvujúca!

Funkciu tone () je možné rozdeliť do troch častí:

  1. Kolík (kolík, ku ktorému je pripojený piezový bzučiak)
  2. Frekvencia (frekvencia zvuku v hertzoch)
  3. Trvanie (trvanie zvuku v milisekundách)

V zásade to vyzerá takto: tón (pin, frekvencia, trvanie). Tretí komponent (trvanie) je voliteľný, zatiaľ čo ďalšie dva sú potrebné na to, aby bzučiak fungoval. „Frekvenčná“zložka tónovej funkcie je to, čo možno považovať za „zvuk“, ktorý vydáva bzučiak.

Tiež si všimnete, že kód obsahuje ďalšie dva bity kódu. Existuje niekoľko príkazov if/else, ktoré informujú Arduino o tom, čo má robiť, ak sú stlačené rôzne tlačidlá, a tiež ho nastavujú s „frekvenciou = 0“v situáciách, keď nie je stlačené žiadne z tlačidiel. V príkazoch if/else sa funkcie map () používajú na mapovanie mierky potenciometra na množinu frekvencií. Tieto je možné zmeniť! Hrajte sa s rôznymi hodnotami frekvencie a zistite, aké rôzne zvuky môžu z piezo zvuku vychádzať.

Pozrite sa na kód, ktorý som použil na vytvorenie trojtlačidlového klavíra, alebo sa pozrite nižšie.

int piezoPin = 8; // Nastavte pin pripojený k Piezo.

int senzorPin = 0; // Nastavte pin pripojený k senzoru (potenciometer). int sensorValue = 0;

int tlačidlo1 = 5; // Nastavte vstupné piny pripojené k tlačidlám.

int tlačidlo2 = 4; int tlačidlo3 = 3;

int frekvencia = 0;

const int delayTime = 500; // Nastavenie konštanty pre premennú času oneskorenia vo funkcii tone ().

neplatné nastavenie () {

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

prázdna slučka () {

sensorValue = analogRead (sensorPin); // Prečítajte si snímač. // Mapovanie rôznych hodnôt potenciometra na sadu frekvencií pre každé z troch tlačidiel. if (digitalRead (button1) == LOW) {frekvencia = mapa (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {frekvencia = mapa (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {frekvencia = mapa (sensorValue, 0, 1023, 600, 699); } else {frekvencia = 0; } tón (piezoPin, frekvencia, delayTime); // Nastavte funkcie tone () pomocou premenných. }

Odporúča: