Šiame projekte mes pastatysime pramogą naudodami „Arduino“. Mes visi turime tokį įprotį paliesti stalą ar rašiklį kurdami bet kokią atsitiktinę muziką. Žinoma, tai gali būti nelaikoma geru manieringumu, bet mums visiems patinka bent kartą tai daryti. Todėl sugalvojau perkelti jį į kitą lygį, pasinaudodamas „Arduino“ galimybe groti tonus. Kai sukursite šį projektą, galėsite generuoti tonus, bakstelėdami pirštais į viską, kas laidus, ir sukurti savo ritmus, pavyzdžiui, groti pianinu ant delno. Skamba gerai, todėl pastatykime jį.
Reikalingi komponentai:
Šiam projektui reikalingos medžiagos yra išvardytos žemiau, jos neprivaloma laikytis. Pasisavinę idėją, galite ją panaudoti patys.
- „Arduini Pro Mini“
- „Peizo“ garsiakalbis
- „Flex Sensor“
- Pirštinės
- 10K rezistoriai
- BC547 tranzistoriai
- 9 V akumuliatorius
Grandinės schema ir paaiškinimas:
Žemiau parodyta šio „ Arduino Palm Piano “ grandinės schema.
Projekte iš viso naudojami keturi jutikliai, tai yra du lankstūs jutikliai ir dvi Darlingtono poros, veikiančios kaip jutiklinis jutiklis. Mes taip pat naudojome du 10k vertės atsparumus R1 ir R2, kurie veiks kaip „Flex“ jutiklio atsparumas žemyn. Čia „Flex“ jutiklis naudojamas norint sukurti tris skirtingus tonus, naudojant vieną pirštą, atsižvelgiant į tai, kiek jis sulenktas. Taigi mes galime sukurti 6 garsus dviem pirštais. Sužinokite čia apie „Flex Sensor“.
Darlingtono pora:
Prieš tęsdami, svarbu žinoti, kas yra „Darlington“ ir kaip tiksliai tai veikia mūsų projekte. Darlingtono pora gali būti apibrėžta kaip du bipoliniai tranzistoriai, sujungti taip, kad pirmojo sustiprintą srovę toliau sustiprina antrasis tranzistorius. Darlingtono pora parodyta paveikslėlyje žemiau:
Kaip parodyta aukščiau, mes naudojome du BC547 tranzistorius, kurių kolektoriai yra susieti, kad surinktų, o pirmojo tranzistoriaus spinduolis yra prijungtas prie antrojo tranzistoriaus pagrindo. Ši grandinė veikia kaip stiprintuvas su stiprinimu, o tai reiškia, kad bet kokio mažo signalo, skirto pirmojo tranzistoriaus bazei, pakanka, kad būtų nukreiptas antrojo tranzistoriaus pagrindas. Mūsų kūnas čia veikia kaip pagrindas, todėl kai tik paliečiame tranzistoriaus pagrindą, antrasis tranzistorius tampa šališkas. Naudodami tai savo naudai, mes sukūrėme jutiklinį jutiklį šiam projektui.
Kaiščių skaičius 2 ir 3 yra „Arduino“ pertraukimo kaiščiai, kurie bus aukštai ištraukti naudojant vidinius traukimo rezistorius, o tada šie kaiščiai bus laikomi ant žemės, kai tik „Darlington“ jungiklis užsidarys. Tokiu būdu kiekvieną kartą, kai paliečiame laidą (nuo pirmojo tranzistoriaus pagrindo), „Arduino“ bus įvykdytas pertraukimas.
Naudodamas du pirštus, galite gauti tik dviejų tipų tonus, todėl aš taip pat pridėjau lankstų jutiklį, kuris pakeis toną pagal jo sulenkimą. Aš užprogramavau gaminti tris skirtingus tonus vienam pirštui pagal tai, kiek pirštas (lankstumo jutiklis) yra sulenktas. Galite padidinti skaičių, jei norite, kad pirštų galiukuose būtų daugiau tonų.
Aš sukūriau visą lentą ant perf lentos, kad ji lengvai tilptų man į delnus, tačiau galite naudoti ir duonos lentą. Tiesiog įsitikinkite, kad jūsų kūnas tam tikru momentu liečia grandinės žemę. Viską litavus, jis turėtų atrodyti maždaug taip
Aš naudoju dvi pirštų pirštines, kad užfiksuočiau laidus iš „Darlington“ poros ir lankstaus jutiklio padėtį, kaip parodyta aukščiau. Galite sugalvoti savo (geriau, jei įmanoma) idėją, kaip juos pritvirtinti, kol grosite savo tonus.
„Arduino“ programavimas:
Šio „ Arduino Tap Tone Generator“ programa yra gana tiesi. Mes tiesiog turime atkreipti dėmesį į pertraukimus iš Darlingtono laidų ir, jei juos radome, turime groti toną, kuris priklauso nuo to, kiek lenkimo jutiklis yra sulenktas. Visas kodas pateikiamas šio įrašo pabaigoje, bet aš paaiškinau keletą svarbių dalių toliau.
Pastaba: Ši programa veikia su bibliotekos „pitches.h“ pagalba. Taigi prieš sudarydami įsitikinkite, kad pridėjote antraštės failą į savo programą. Čia galite atsisiųsti antraštę „pitches.h“.
Į sąrankos funkcijai, mes inicijuoti prisegti 2 ir 3 įėjimas su ištraukiama iki rezistorių. Mes taip pat paskelbiame juos kaip pertraukimo kaiščius ir vykdome tone1 (), kai yra 2 kaiščio pertraukimas, ir tone2 () funkciją, kai yra pertrauka 3 - ajame kontakte. Šie pertraukimai bus suaktyvinti, kai šie kaiščiai pateks į žemą padėtį.
negaliojanti sąranka () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serijos pradžia (9600); }
Viduje ciklo funkcija mes nuolat tikriname, kiek lenktas jutiklis yra sulenktas. Pavyzdžiui, mano „FlexSensor 1“ davė maždaug 200 verčių, kai liko plokščia, ir nukrito iki 130, kai ją sulenkiau maksimaliai, todėl vertę nuo 200 iki 130 suskaičiavau nuo 1 iki 3, nes turiu žaisti 3 skirtingus tipus tonų. Turite pakoreguoti šias dvi eilutes, atsižvelgdami į „Flex“ jutiklio vertes ir tonų skaičių.
tuštuma kilpa () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Susikurkite savo vertes, remdamiesi savo lanksčiu jutikliu flexSensor2 = map (analogRead (A1), 170,185,1,3); // Susiraskite savo vertes pagal savo lankstumo jutiklį}
Kaip matėme anksčiau, funkcijos tonas1 () bus vykdomas aptikus pertraukimą 2 kaištelyje. Tai, kas vyksta funkcijos tone1 () viduje, parodyta aukščiau. Mes žiūrime į „FlexSensor1“ vertes ir grojame toną pagal „flexSesnor Value“. Tonai bus grojami naudojant „Arduino“ tonų funkciją. Mes paaiškinome tono () funkciją savo ankstesniame projekte.
void tone1 () {if (flexSensor1 == 1) tonas (8, NOTE_D4,50); else if (flexSensor1 == 2) tonas (8, NOTE_A3,50); else if (flexSensor1 == 3) tonas (8, NOTE_G4,50); kitas tonas (8, NOTE_D4,50); }
Žemiau esanti eilutė naudojama tonui atkurti. Galite groti bet kokį toną, kuris yra antraštės faile „pitches.h“. Pvz., Aukščiau pateiktoje eilutėje 50 mm sekundžių trukmės atkarpoje grojamas „NOTE_A3“.
tonas (8, NOTE_A3,50); // tonas („PinNum“, „Note name“, „Duration“);
Darbas:
Kai jūsų aparatinė įranga bus paruošta, įkelkite kodą ir pritvirtinkite juos ant pirštų. Įsitikinkite, kad jūsų kūnas tam tikru momentu liečia grandinės žemę. Dabar tiesiog palieskite bet kokią laidžią medžiagą ar kūną ir turėtumėte girdėti atitinkamą toną. Galite groti savo melodiją ar muziką, paliesdami skirtingais intervalais ir skirtingomis pozicijomis.
Žemiau pateiktame vaizdo įraše parodytas visas projekto darbas. Tikiuosi, kad jums patiko kurti projektą, bet kokius pasiūlymus ar klausimus galite paskelbti žemiau esančiame komentarų skyriuje. Taip pat patikrinkite mūsų „Arduino Audio Player“ ir „Arduino Tone Generator Project“.