Tartalomjegyzék:
- 1. lépés: A zenei pontszám átalakítása digitális jegyzetekké: Késleltetett értékek
- 2. lépés: A zenei pontszám átalakítása digitális jegyzetekké: Hertz -értékek
- 3. lépés: Áramkör tervezése
- 4. lépés: Kódfeltöltés: Útmutató
- 5. lépés: Kódfeltöltés: Mit jelent mindez?
- 6. lépés: Kész !
Videó: Digitáljon egy dalt az Arduino segítségével: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
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
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
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
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 !
Ö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:
Hogyan építsünk egy 8x8x8 LED -es kockát és vezéreljük egy Arduino segítségével: 7 lépés (képekkel)
Hogyan készítsünk 8x8x8 LED -es kockát és vezéreljük azt egy Arduino -val: 2020. január szerkesztés: Hagyom, ha valaki ötletek generálására szeretné használni, de már nincs értelme kocka építeni ezen utasítások alapján. A LED -illesztőprogram -IC -k már nem készülnek, és mindkét vázlatot a régi verzióban írták
Hogyan játsszunk le egy dalt a Yamaha EZ-220 készüléken: 5 lépés
Hogyan játsszunk le egy dalt a Yamaha EZ-220 készüléken: Ezek a lépések segítenek a dal lejátszásában a dalkönyv használatával
Hogyan lehet kódolni egy dalt a Sonic Pi kotta használatával: 5 lépés
Hogyan lehet kódolni egy dalt a Sonic Pi kotta használatával: Ez az oktatóanyag néhány alapvető lépést és kódrészletet fog felvázolni, amelyeket akkor kell használni, amikor egy dalt Sonic Pi -ben kottával kódolunk! Millió más kóddal is megpróbálhat ízlést adni a kész darabhoz, ezért ügyeljen arra, hogy játsszon is
Hogyan lehet értelmezni a forgásirányt egy digitális forgókapcsolóról egy PIC segítségével: 5 lépés
Hogyan lehet értelmezni a forgásirányt egy digitális forgókapcsolóról egy PIC segítségével: Ennek az utasításnak az a célja, hogy bemutassa, hogyan kapcsolható össze egy digitális (négyzetesen kódolt) forgókapcsoló egy mikrokontrollerrel. Ne aggódjon, elmagyarázom, mi? Kvadratúra kódolt? számunkra jelenti. Ez az interfész és a hozzá tartozó szoftver meg fog jelenni
Irányítson egy Schlage elektronikus holtpontot egy Arduino segítségével!: 7 lépés
Irányítsd a Schlage elektronikus zárócsavart egy Arduino segítségével