Tartalomjegyzék:

Digitáljon egy dalt az Arduino segítségével: 6 lépés
Digitáljon egy dalt az Arduino segítségével: 6 lépés

Videó: Digitáljon egy dalt az Arduino segítségével: 6 lépés

Videó: Digitáljon egy dalt az Arduino segítségével: 6 lépés
Videó: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, November
Anonim
Digitáljon egy dalt az Arduino segítségével
Digitáljon egy dalt az Arduino segítségével

Olyan projektet akartam létrehozni, amely két kedvenc tantárgyamat ötvözi: a tudományt és a zenét. Elgondolkodtam azon módokon, amelyekkel ezt a két területet összekapcsolhatnám, és úgy gondoltam, hogy érdekes lenne egy Arduino -t Fur Elise -t játszani, miközben a Hertzben megjelenítjük a hangmagasságot. Most kezdjük az építkezést!

Szükséged lesz egy Arduino Unóra vagy Mega -ra, sok áthidaló kábelre, Piezo csengőre, kenyérlapra, 16*2 -es LCD -képernyőre, az összes törlőcsappal a helyére, és egy 10 k -es potenciométerre.). A legjobb, ha összeszereljük ezeket a kellékeket, mielőtt elkezdjük az építést.

1. lépés: A zenei pontszám átalakítása digitális jegyzetekké: Késleltetett értékek

A zenei pontszám konvertálása digitális jegyzetekké: Késleltetett értékek
A zenei pontszám konvertálása digitális jegyzetekké: Késleltetett értékek

Két lépésben lehet digitálisan átírni egy hangot a kottából a digitális megfelelőjébe. Először meg kell írnunk a jegyzet időtartamát ezredmásodpercben. Ehhez a feladathoz az interneten talált táblázatot alkalmaztam. Az alapján, hogy egy hangjegy félhang, negyedhang, nyolcadik hang stb. Volt, a hanghosszat ezredmásodpercre írtam át. Ezeket a számokat a kódomban láthatja késleltetésként (); függvény és a zárójelben lévő szám lesz a késleltetési érték ezredmásodpercben, amelyet ebben a lépésben határoztunk meg.

2. lépés: A zenei pontszám átalakítása digitális jegyzetekké: Hertz -értékek

A zenei pontszám átalakítása digitális jegyzetekké: Hertz -értékek
A zenei pontszám átalakítása digitális jegyzetekké: Hertz -értékek

Mielőtt elkezdené ezt a lépést, hadd határozzak meg néhány szakkifejezést. A hang "értéke" felcserélhető a "pitch", "value" és "note" szavakkal. Most ki kell olvasnia a dal minden hangját a partitúrából. Ezt követően minden egyes hangot le kell fordítani Hertz -re egy zenét tartalmazó Hertz -táblázat segítségével, amelyet könnyen megtalálhat az interneten. Egy dologra emlékeznünk kell, hogy a középső C C4 -ként szerepel az asztalon, és egy oktávval magasabb C5 stb. Miután ezeket a jegyzeteket átírta Hertz -be, az értékeket a függvény hangjába (x, y, z) helyezi; ahol X a pin szám vagy a const int, a változók meghatározásának módja, amelyet később elmagyarázok. Y az Ön által átírt Hertz -érték, Z pedig a jegyzet időtartama ezredmásodpercben, a századik pontosságra kerekítve. A késés(); értékek lesznek a jegyzet időtartama. Most tervezzük meg azt az áramkört, amely képes lejátszani a zenét.

3. lépés: Áramkör tervezése

Áramkör tervezés
Áramkör tervezés

Most, hogy az összes jegyzetet digitális értékekké alakítottuk át, amelyeket a számítógép képes megérteni, itt az ideje, hogy felépítsük az áramkört. Először vegye be a kenyérsütő deszkát, és helyezze az LCD -képernyőt a 14. sor első tűjével (GND). Helyezze a zümmögőt tetszőleges helyre, és helyezzen mellé egy potenciométert. A cél az, hogy mindent sorba állítsunk, minimálisra csökkentsük a vezetékek rendetlenségét. Helyezze az Arduino -t a kenyértábla mellé, és csatlakoztassa az 5 V -os csapot a kenyérsütő pozitív sínjéhez, a földelőt pedig a negatív sínhez. Most készen állunk arra, hogy összekapcsoljuk a jumpert az Arduino és az alkatrészek között.

Most beszéljünk az LCD -n lévő csapokról és azok bekötéséről.

A GND a földet jelenti, ez az egyenáram negatív vezetéke. Csatlakoztassa a GND -t a kenyértábla negatív sínjéhez.

A VCC a feszültséget jelenti a közös kollektorban, és itt csatlakoztatja az 5 voltos áramforrást (a pozitív tápcsatlakozót).

A VO a Contrast rövidítése, ezt a potenciométer középső tűjéhez kell vezetni. Csatlakoztassa a potenciométer bal tüskéjét a pozitív tápcsatlakozóhoz, a jobb oldali csapot pedig a földelősínhez.

Az RS jelentése Register Select, és ezt használja az Arduino, hogy megmondja a kijelzőnek, hol kell tárolni az adatokat. Csatlakoztassa ezt a csapot az Arduino 12. tűjéhez.

Az RW jelentése Read/Write pin, amelyet az Arduino használ annak ellenőrzésére, hogy a képernyő azt mutatja -e, amit Ön programozott. Csatlakoztassa ezt a csapot a kenyértábla negatív sínjéhez.

Az E jelentése Enable (Engedélyezés), amely megmondja az LCD -nek, hogy mely képpontokat kell engedélyezni (bekapcsolni) vagy letiltani (kikapcsolni). Csatlakoztassa ezt a csapot az Arduino 11 tűhöz.

A D4, D5, D6 és D7 a kijelző gombjai, amelyek vezérlik a megjelenő karaktereket és betűket. Csatlakoztassa őket az Arduino 5, 4, 3 és 2 csapjaihoz.

Az A csap, néha LED -es feliratú, a háttérvilágítás LED -anódja. Csatlakoztassa ezt a pozitív tápvezetékhez vezetékkel vagy 220 ohmos ellenállással. Az ellenállás hosszabb használatra alkalmas, mivel kíméli az LCD -t, de ha a készüléket nem fogják éjjel -nappal használni, akkor nincs szüksége az ellenállásra.

A K tű, néha (zavaróan) felcímkézett LED, a LED földelt csapja. Csatlakoztassa ezt a földi tápcsatlakozóhoz.

4. lépés: Kódfeltöltés: Útmutató

Csatlakoztassa az Arduino -t a számítógép USB -jéhez. Töltse fel a következő kódot az Arduino IDE programozó segítségével.

#befoglalni

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

void setup () {

// az LCD oszlopok és sorok számának beállítása: lcd.begin (16, 2); // Üzenet nyomtatása az LCD -re. lcd.print ("Hertz Pitch:!"); késleltetés (1000); void loop () {// e4 lejátszás késleltetése (600); // szünet 0,6 másodpercig hangjelzés (10, 329,63, 300); // lejátszás e a zümmögőhöz a 10 -es tűnél, utolsó 0,3 másodperc lcd.print (" 329.63 "); // üzenet megjelenítése a" 329.63 "LCD -n

késleltetés (350); // késleltetés.35 másodperc

lcd.clear (); // törölje az LCD -t és állítsa vissza a következő üzenetre // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); késleltetés (350); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (350); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); késleltetés (350); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (350); lcd.clear (); // b3 hang lejátszása (10, 246,94, 300); lcd.print ("246,94"); késleltetés (400); lcd.clear (); // d4 hang lejátszása (10, 293,66, 300); lcd.print ("293,66"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 300); lcd.print ("261.63"); késleltetés (400); lcd.clear (); // a3 hang lejátszása (10, 220, 900); lcd.print ("220.0"); késleltetés (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // d3 hang lejátszása (10, 146,83, 300); lcd.print ("146,63"); késleltetés (350); lcd.clear (); // f3 hang lejátszása (10, 174,61, 300); lcd.print ("174,61"); késleltetés (400); lcd.clear (); // a3 hang lejátszása (10, 220, 300); lcd.print ("220"); késleltetés (400); lcd.clear (); // b3 hang lejátszása (10, 246,94, 900); lcd.print ("246,94"); késleltetés (1000); lcd.clear ();

// e3 lejátszása

hang (10, 164,81, 300); lcd.print ("164,81"); késleltetés (400); lcd.clear (); // play g3# tone (10, 207,65, 300); lcd.print ("207,65"); késleltetés (400); lcd.clear (); // b3 hang lejátszása (10, 246,94, 300); lcd.print ("246,94"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 900); lcd.print ("261.63"); késleltetés (1000); lcd.clear (); // play e tone (10, 164,81, 300); lcd.print ("164,81"); késleltetés (400); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (400); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); késleltetés (400); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (400); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); késleltetés (400); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (400); lcd.clear (); // b3 hang lejátszása (10, 246,94, 300); lcd.print ("246,94"); késleltetés (400); lcd.clear (); // d4 hang lejátszása (10, 293,66, 300); lcd.print ("293,66"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 300); lcd.print ("261.63"); késleltetés (400); lcd.clear (); // a3 hang lejátszása (10, 220, 900); lcd.print ("220.0"); késleltetés (1000); lcd.clear (); // d3 hang lejátszása (10, 146,83, 300); lcd.print ("146,83"); késleltetés (400); lcd.clear (); // f3 hang lejátszása (10, 174,61, 300); // eeprom 20-6 yesno, flash 65--0 noyes lcd.print ("174,61"); késleltetés (400); lcd.clear (); // a3 hang lejátszása (10, 220, 300); lcd.print ("220.0"); késleltetés (400); lcd.clear (); // b3 hang lejátszása (10, 246,94, 900); lcd.print ("246,94"); késleltetés (1000); lcd.clear (); // f3 hang lejátszása (10, 174,61, 300); lcd.print ("174,61"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 300); lcd.print ("261.63"); késleltetés (400); lcd.clear (); // b3 hang lejátszása (10, 246,94, 300); lcd.print ("246,94"); késleltetés (400); lcd.clear (); // a3 hang lejátszása (10, 220, 900); lcd.print ("220.0"); késleltetés (1000); lcd.clear (); // b3 hang lejátszása (10, 246,94, 300); lcd.print ("246,94"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 300); lcd.print ("261.63"); késleltetés (400); lcd.clear (); // d4 hang lejátszása (10, 293,66, 300); lcd.print ("293,66"); késleltetés (400); lcd.clear (); // e4 hang lejátszása (10, 329,63, 900); lcd.print ("329,63"); késleltetés (1000); lcd.clear (); // g3 hang lejátszása (10, 196, 300); lcd.print ("196.0"); késleltetés (400); lcd.clear (); // f4 hang lejátszása (10, 349,23, 300); lcd.print ("349,23"); késleltetés (400); lcd.clear (); // e4 hang lejátszása (10, 329,23, 300); lcd.print ("329,23"); késleltetés (400); lcd.clear (); // d4 hang lejátszása (10, 293,63, 900); lcd.print ("293,63"); késleltetés (1000); lcd.clear (); // e3 hang lejátszása (10, 164,81, 300); lcd.print ("164,81"); késleltetés (400); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (400); lcd.clear (); // d4 hang lejátszása (10, 293,63, 300); lcd.print ("293,63"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 900); lcd.print ("261.63"); késleltetés (1000); lcd.clear (); // d3 hang lejátszása (10, 146,83, 300); lcd.print ("146,83"); késleltetés (400); lcd.clear (); // d4 hang lejátszása (10, 293,63, 300); lcd.print ("293,63"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 300); lcd.print ("261.63"); késleltetés (400); lcd.clear (); // b3 hang lejátszása (10, 246,94, 900); lcd.print ("246,94"); késleltetés (1000); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (400); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); késleltetés (350); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (350); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); késleltetés (350); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (350); lcd.clear (); // b3 hang lejátszása (10, 246,94, 300); lcd.print ("246,94"); késleltetés (400); lcd.clear (); // d4 hang lejátszása (10, 293,66, 300); lcd.print ("293,66"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 300); lcd.print ("261.63"); késleltetés (400); lcd.clear (); // a3 hang lejátszása (10, 220, 900); lcd.print ("220.0"); késleltetés (1000); lcd.clear (); // d3 hang lejátszása (10, 146,83, 300); lcd.print ("146,83"); késleltetés (350); lcd.clear (); // f3 hang lejátszása (10, 174,61, 300); lcd.print ("174,61"); késleltetés (400); lcd.clear (); // a3 hang lejátszása (10, 220, 300); lcd.print ("220.0"); késleltetés (400); // play b3 lcd.clear (); hang (10, 246,94, 900); lcd.print ("246,94"); késleltetés (1000); lcd.clear (); // e3 hang lejátszása (10, 164,81, 300); lcd.print ("164,81"); késleltetés (400); lcd.clear (); // play g#3 tone (10, 207,65, 300); lcd.print ("207,65"); késleltetés (400); lcd.clear (); // b3 hang lejátszása (10, 246,94, 300); lcd.print ("246,94"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 900); lcd.print ("261.63"); késleltetés (1000); késleltetés (300); lcd.clear (); // e3 hang lejátszása (10, 164,81, 300); lcd.print ("164,81"); késleltetés (400); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (400); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); késleltetés (400); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (400); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); késleltetés (400); lcd.clear (); // e4 hang lejátszása (10, 329,63, 300); lcd.print ("329,63"); késleltetés (400); lcd.clear (); // b3 hang lejátszása (10, 246,94, 300); lcd.print ("246,94"); késleltetés (400); lcd.clear (); // d4 hang lejátszása (10, 293,66, 300); lcd.print ("293,66"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 300); lcd.print ("261.63"); késleltetés (400); lcd.clear (); // a3 hang lejátszása (10, 220, 900); lcd.print ("220.0"); késleltetés (1000); lcd.clear (); // d3 hang lejátszása (10, 146,83, 300); lcd.print ("146,83"); késleltetés (400); lcd.clear (); // f3 hang lejátszása (10, 174,61, 300); lcd.print ("174,61"); késleltetés (400); lcd.clear (); // a3 hang lejátszása (10, 220, 300); lcd.print ("220.0"); késleltetés (400); lcd.clear (); // b3 hang lejátszása (10, 246,94, 900); lcd.print ("246,94"); késleltetés (1000); lcd.clear (); // f3 hang lejátszása (10, 174,61, 300); lcd.print ("174,61"); késleltetés (400); lcd.clear (); // c4 hang lejátszása (10, 261,63, 300); lcd.print ("261.63"); késleltetés (400); lcd.clear (); // b3 hang lejátszása (10, 246,94, 300); lcd.print ("246,94"); késleltetés (400); lcd.clear (); // a3 hang lejátszása (10, 220, 900); lcd.print ("220.0"); késleltetés (1000); lcd.clear (); }

5. lépés: Kódfeltöltés: Mit jelent mindez?

Határozzunk meg néhány funkciót angolul, hogy megértsük a kódot.

hang (x, y, z); = játssza le a hangot y Hertz hangmagassággal, zümmögőhöz az x tűnél, z milliszekundumig.

lcd.print ("XYZ"); = az XYZ karaktereket tartalmazó üzenet nyomtatása az LCD képernyőre. (pl. a Hertz -hangmagasság megjelenítése)

késleltetés (x); = szünet x ezredmásodpercig.

const int X = Y = állítson be egy X állandó változót az Y érintkezőre, és vagy X vagy Y segítségével rendeljen hozzá feladatokat az eszközhöz.

lcd.clear (); = törölje az LCD képernyőt, és állítsa vissza az új kijelzőt

pinMode (X, OUTPUT); = állítsa be az X tűt a kimeneti módhoz

Miután megértette ezeket a funkciókat, könnyen helyettesítheti a változókat azokkal az adatokkal, amelyeket egy dal fordításakor gyűjt, majd kódolhatja saját dalát!

6. lépés: Kész !

Befejezett!!!
Befejezett!!!
Befejezett!!!
Befejezett!!!

Ön rendelkezik egy Arduino -val, amely Fur Elise -t játssza, és a hangértékeket Hertzben jeleníti meg, vagy készített egy Arduino -t, amely a kiválasztott dal dallamát játssza le, és megjeleníti a megjeleníteni kívánt szöveget. Köszönjük, hogy meglátogatta ezt az oktatóanyagot, és remélem, hogy ezt a projektet az Arduino -n.

Ajánlott: