Ebben a projektben egy szórakoztató anyagot fogunk építeni az Arduino segítségével. Mindannyiunknak megvan az a szokása, hogy bármilyen véletlenszerű zene létrehozásához koppintunk az Asztalra vagy a Tollra. Természetesen ez nem tekinthető jó modornak, de mindannyian élvezzük, ha legalább egyszer megtesszük. Ezért arra gondoltam, hogy egy újabb szintre emelem az Arduino hanglejátszási képességének felhasználásával. Ha elkészíti ezt a projektet, akkor képes lesz generálni hangokat úgy, hogy minden vezetőképesre koppint az ujjaival, és létrehozhatja saját ritmusait, olyan, mint a tenyéren zongorázni. Jól hangzik, tehát építsük fel.
Szükséges alkatrészek:
Az ehhez a projekthez szükséges anyagokat az alábbiakban soroljuk fel, nem kötelező ragaszkodni ezekhez. Ha megragadta a koncepciót, használhatja saját felépítésének módját.
- Arduini Pro Mini
- Peizo hangszóró
- Flex Sensor
- Ujjakesztyű
- 10K ellenállások
- BC547 tranzisztorok
- 9V-os akkumulátor
Áramkör és magyarázat:
Az Arduino Palm Piano kapcsolási rajza az alábbiakban látható.
A projekt összesen négy szenzort használ, azaz két flex szenzort és két Darlington párot, amelyek érintésérzékelőként működnek. Két olyan R1 és R2 lehúzható ellenállást is használtunk, amelyek mindegyike 10k értékű, amelyek lehúzási ellenállásként működnek a Flex érzékelőhöz. Itt a Flex érzékelővel három különböző hangot lehet létrehozni egy ujjal, attól függően, hogy mennyire hajlott. Tehát 6 hangot tudunk előállítani két ujjal. Tudjon meg többet a Flex Sensorról.
Darlington Pair:
Mielőtt folytatnánk, fontos tudni, hogy mi a Darlington, és hogyan működik pontosan a projektünkben. A Darlington-pár két bipoláris tranzisztorként határozható meg, amelyek úgy vannak összekötve, hogy az első által felerősített áramot tovább erősíti a második tranzisztor. Az alábbi képen egy Darlington-pár látható:
Amint a fentiekből látható, két BC547 tranzisztort használtunk, amelyek kollektorai össze vannak kötve az összegyűjtéshez, és az első tranzisztor emittere összekapcsolódik a második tranzisztor bázisával. Ez az áramkör erősítésként működik, erősítéssel, vagyis az első tranzisztor bázisának adott bármilyen kis jel elegendő a második tranzisztor bázisának torzításához. Testünk itt talajként működik, így amikor csak megérintjük a tranzisztor alapját, a második tranzisztor torzul. Ezt a javunkra felhasználva megépítettük az érintésérzékelőt ehhez a projekthez.
A 2-es és 3-as tű az Arduino megszakító csapja, amelyet belső felhúzási ellenállások segítségével magasra húznak, majd ezeket a csapokat a földön tartják, amikor a Darlington kapcsoló bezárul. Így minden egyes alkalommal, amikor megérinti a vezetéket (az alapja 1 -jén tranzisztor) egy megszakítási indul a Arduino.
Két ujjal csak kétféle hangot lehet előállítani, ezért hozzáadtam egy flex érzékelőt is, amely megváltoztatja a hangot annak alapján, hogy mennyire hajlik. Úgy programoztam, hogy három különböző hangot állítson elő ujjonként annak alapján, hogy az ujj (flex érzékelő) mennyire hajlik. Növelheti a számot, ha több hangot szeretne az ujjhegyénél.
A teljes táblát egy perf deszkára készítettem, hogy könnyen illeszkedjen a tenyerembe, de használhat kenyérdeszkát is. Csak bizonyosodjon meg arról, hogy teste valamikor megérinti az áramkör földjét. Miután mindent megforrasztott, valami ilyennek kell kinéznie
Két ujjkesztyűvel rögzítettem a Darlington páros vezetékeit és a flex érzékelőt a fent látható helyzetben. Előállhat saját (ha lehetséges jobb) ötlete, hogy rögzítse őket a helyén, miközben a hangjait játszik.
Arduino programozás:
Ennek az Arduino Tap Tone Generatornak a programja nagyon egyszerű. Csak a Darlington vezetékeinek megszakításaira kell figyelnünk, és ha találunk ilyet, akkor hangot kell játszanunk, amely attól függ, hogy mennyi hajlított flex érzékelő van. A teljes kódot a bejegyzés végén adjuk meg, de az alábbiakban néhány fontos részletet elmagyaráztam.
Megjegyzés: Ez a program a könyvtár „pitches.h” segítségével működik. Tehát a fordítás előtt győződjön meg arról, hogy hozzáadta a fejlécfájlt a programjához. A pitches.h fejlécfájlt innen töltheti le.
A beállítási funkcióban a 2. és 3. tűt bemenetként inicializáljuk felhúzható ellenállásokkal. Kihirdetjük őket megszakító csapoknak is, és végrehajtjuk a tone1 () funkciót, ha megszakítás van a 2. érintkezőnél, és a tone2 () funkciót, ha megszakítás van a harmadik érintkezőnél. Ezek a megszakítások akkor aktiválódnak, amikor ezek a csapok LOW-t kapnak felhúzott állapotukból.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
A hurokfunkción belül folyamatosan ellenőrizzük, hogy a flex érzékelő mennyire hajlott. A FlexSensor 1 például 200 körüli értékeket adott, amikor síkban maradt, és egészen a 130-ig ment le, amikor maximálisan meghajlítottam, ezért a 200 és 130 közötti értéket 1-3-ra feltérképeztem, mivel 3 különböző típust kell játszanom a hangok. Ezt a két sort módosítania kell a Flex érzékelő értékei és a hangok száma alapján.
void loop () {flexSensor1 = térkép (analogRead (A0), 200,130,1,3); // Térképezzen saját értékeivel a flex érzékelő alapján flexSensor2 = térkép (analogRead (A1), 170,185,1,3); // Térképezze fel saját értékeit a rugalmas érzékelője alapján}
Amint azt korábban láttuk, a funkció tone1 () akkor fog végrehajtódni, amikor megszakadást észlel a 2. tűn . Ami a tone1 () funkció belsejében történik, az fent látható. Megnézzük a FlexSensor1 értékeit, és egy hangot játszunk a flexSesnor Érték alapján. A hangokat az Arduino Tone funkciójával lehet lejátszani. Korábbi projektünkben elmagyaráztuk a tone () függvényt.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); else if (flexSensor1 == 2) hang (8, NOTE_A3,50); else if (flexSensor1 == 3) hang (8, NOTE_G4,50); else tone (8, NOTE_D4,50); }
Az alábbi sor a hang lejátszására szolgál. Bármilyen hangot eljátszhat, amely elérhető a „pitches.h” fejlécfájlban. A fenti sor például a NOTE_A3-at játssza a tűn 50 millimásodpercig.
hang (8, NOTE_A3,50); // hang (PinNum, Jegyzet neve, Időtartam);
Dolgozó:
Miután elkészült a hardver, töltse fel a kódot, és helyezze fel az ujjaira. Győződjön meg arról, hogy teste valamikor megérinti az áramkör földjét. Most egyszerűen érintse meg bármely vezetőképes anyagot vagy testét, és hallania kell a megfelelő hangot. Saját dallamát vagy zenéjét különböző időközönként és különböző pozíciókban kopogtathatja.
Az alábbi videó bemutatja a projekt teljes munkáját. Remélem, tetszett Önnek a projekt építése, bármilyen javaslatot vagy kérdést az alábbi megjegyzés szakaszban tehet fel. Ellenőrizze az Arduino Audio Player és az Arduino Tone Generator projektünket is.