- Kinakailangan ang Hardware:
- Pag-unawa sa Tone () na pag- andar ng Arduino:
- Ang file ng header ng pitches.h :
- Nagpe-play ng Mga Tala sa Musika sa Arduino:
- Skematika at Hardware:
- Paliwanag ng Arduino Program:
- Paggawa ng Melody Player Arduino Circuit na ito:
Ang Arduino ay isang mahusay na paraan upang gawing simple at pabilisin ang iyong mga proyekto ng microcontroller, salamat sa pamayanan ng mga developer na gumawa ng halos lahat ng hitsura ng simple. Mayroong maraming mga Arduino Projects dito upang subukan mo at magsaya. Ang ilan sa iyong mga proyekto ay maaaring mangailangan ng ilang mga pagkilos na tunog upang abisuhan ang tungkol sa isang bagay o mapahanga lamang ang mga manonood. Paano kung sinabi ko sa iyo na halos ang anumang mga kanta ng tema na maaaring i-play sa isang piano ay maaaring gayahin sa iyong Arduino sa tulong ng isang simpleng programa at isang murang tagapagsalita ng Piezo?
Sa tutorial na ito matututunan natin kung gaano simple at kadali ang Pag- play ng Melody sa Piezo Buzzer o Speaker gamit ang function na Arduino tone (). Sa pagtatapos ng tutorial na ito magagawa mong i-play ang ilang mga tanyag na tono ng Pirates of Caribbean, Crazy Frog, Super Mario at Titanic. Malalaman mo rin kung paano tumugtog ng anumang piraso ng piano music kasama ang Arduino. Suriin ang Video sa dulo.
Kinakailangan ang Hardware:
- Arduino (anumang bersyon - UNO ang ginagamit dito)
- Piezo Speaker / Buzzer o anumang iba pang 8ohm speaker.
- Breadboard
- Mga Koneksyon sa Mga Wires
- Itulak ang mga pindutan
- 1k risistor (opsyonal)
Pag-unawa sa Tone () na pag- andar ng Arduino:
Bago natin maintindihan kung paano gumagana ang isang tone () dapat nating malaman kung paano gumagana ang isang Piezo buzzer. Maaaring nalaman natin ang tungkol sa mga kristal ng Piezo sa aming paaralan, walang anuman kundi isang kristal na nagpapalit ng mga pang-mechanical na pag-vibrate sa elektrisidad o kabaligtaran. Dito inilalagay namin ang isang variable na kasalukuyang (dalas) kung saan ang kristal ay nagvibrate kaya gumagawa ng tunog. Samakatuwid upang makagawa ng Piezo buzzer upang makagawa ng ingay kailangan nating gawin ang Piezo electric kristal upang mag-vibrate, ang pitch at tone ng ingay ay nakasalalay sa kung gaano kabilis ang pag-vibrate ng kristal. Samakatuwid ang tono at tono ay maaaring makontrol sa pamamagitan ng pag-iiba-iba ng dalas ng kasalukuyang.
Okay, kaya paano tayo makakakuha ng variable variable mula sa Arduino ? Dito papasok ang pagpapaandar ng tone (). Ang tone () ay maaaring makabuo ng isang partikular na dalas sa isang tukoy na pin. Ang tagal ng oras ay maaari ding mabanggit kung kinakailangan. Ang syntax para sa tone () ay
Tone ng Syntax (pin, frequency) tone (pin, frequency, tagal) Parameter pin: ang pin kung saan bubuo ng frequency ng tone: ang dalas ng tone sa hertz - unsigned int tagal: ang tagal ng tone sa milliseconds (opsyonal) - matagal na hindi pinirmahan
Ang mga halaga ng pin ay maaaring maging anuman sa iyong digital pin. Gumamit ako ng pin number 8 dito. Ang dalas na maaaring mabuo ay nakasalalay sa laki ng timer sa iyong Arduino board. Para sa UNO at karamihan sa iba pang mga karaniwang board ang minimum na dalas na maaaring magawa ay 31Hz at ang maximum na dalas na maaaring magawa ay 65535Hz. Gayunpaman kaming mga tao ay maaaring makarinig lamang ng mga frequency sa pagitan ng 2000Hz at 5000 Hz.
Ang file ng header ng pitches.h :
Ngayon, alam namin kung paano makagawa ng ilang ingay gamit ang paggana ng tone ng arduino () . Ngunit, paano natin malalaman kung anong uri ng tono ang mabubuo para sa bawat dalas?
Binigyan kami ng Arduino ng isang talaan ng tala na tumutugma sa bawat dalas sa isang tukoy na uri ng tala ng musikal. Ang talaan ng tala na ito ay orihinal na isinulat ni Brett Hagman, na kung saan ang gawain ang tono ng () utos ay batay. Gagamitin namin ang talaan ng tala na ito upang i-play ang aming mga tema. Kung ikaw ay isang taong pamilyar sa sheet music dapat mong maunawaan ang talahanayan na ito, para sa iba na katulad ko ito ay isa pang bloke ng code.
#define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE #Define NOTE TANDAAN_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOT2_Ed2_E_22Ef2_102102 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3Et2 #define #define #define #define #define NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349#define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #5Eefine #Edefine_Define_Define_Define_Define_Define_Define_Define_Define_Define_Define_Define_Define_Define_Define_Define_Define_Edf555555552 NOTE_FS5 740 # tukuyin NOTE_G5 784 # tukuyin NOTE_GS5 831 # tukuyin NOTE_A5 880 # tukuyin NOTE_AS5 932 # tukuyin NOTE_B5 988 # tukuyin NOTE_C6 1047 # tukuyin NOTE_CS6 1109 # tukuyin NOTE_D6 1175 # tukuyin NOTE_DS6 1245 # tukuyin NOTE_E6 1319 # tukuyin NOTE_F6 1397 # tukuyin NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define CAT 242 NOTE_G7 3136 # tukuyin NOTE_GS7 3322 # tukuyin NOTE_A7 3520 #define NOTE_AS73729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978
Ang nasa itaas na code ay ibinibigay sa pitches.h header file sa zip file na ito , kailangan mo lamang i-download at isama ang file na ito sa aming Arduino code tulad ng ibinigay sa dulo ng tutorial na ito o gamitin ang code na ibinigay sa zip file.
Nagpe-play ng Mga Tala sa Musika sa Arduino:
Upang magpatugtog ng isang disenteng himig gamit ang Arduino dapat nating malaman kung ano ang bumubuo sa mga himig na ito. Ang tatlong pangunahing mga kadahilanan na kinakailangan upang i-play ang isang tema ay
- Halaga ng tala
- Tagal ng Tandaan
- Tempo
Mayroon kaming pitches.h header file upang i-play ang anumang halaga ng tala, ngayon dapat nating malaman ang tukoy na tagal ng tala upang i-play ito. Ang tempo ay walang anuman kundi kung gaano kabilis ang tugtog na dapat tugtugin. Sa sandaling alam mo ang Tala halaga at Tandaan duration maaari mong gamitin ang mga ito gamit ang tone () tulad ng
tono (pinName, Halaga ng Tandaan, Tagal ng Tala);
Para sa mga tono na nilalaro sa tutorial na ito ay binigyan ko ka ng tala ng Halaga at tala ng tagal sa loob ng "tema.h" na header file na ginagamit kung saan maaari mong i-play ang mga ito sa iyong mga proyekto. Ngunit kung mayroon kang anumang tukoy na tono sa iyong minahan at nais mong i-play ito sa iyong proyekto basahin sa…. Iba pa laktawan ang paksang ito at mahulog sa susunod.
Upang i-play ang anumang tukoy na tono kailangan mong makuha ang sheet na musika ng partikular na musika at i-convert ang sheet na musika sa Arduino sketch sa pamamagitan ng pagbabasa ng halaga ng tala at haba ng tala mula rito. Kung ikaw ay isang mag-aaral na musikal ito ay magiging isang piraso ng cake para sa iyo, kung hindi ay gumugol ng ilang oras at masira ang ulo mo tulad ng ginawa ko. Ngunit sa pagtatapos ng araw kapag nagpe-play ang iyong tono sa Piezo buzzer mahahanap mo sulit ang iyong pagsisikap.
Sa sandaling mayroon ka ng halaga ng tala at tagal ng tala, i-load ang mga ito sa programa sa loob ng "tema.h" na header file tulad ng ipinakita sa ibaba
// ###oooooooooooooooooooooooooooooooooooooooo ** ** "SIYA AY PIRATO" Kanta ng tema ng Pirates ng caribbean ** #### = {NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTEDD, 0 NOTE_A3, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_G4, NOTE_E4, NOTE_E4, NOTE_D4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_D4, 0 NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_D4, 0, 0, NOTE_A3, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_F4, NOTE4, NOTE4, NOTE4, NOTE4, NOTE4, NOTE4, NOTE4, NOTE4, NOTE4, NOTE4, NOTE4, NOTE4, NOTEA, 4 0, NOTE_D4, NOTE_E3, NOTE_F4, NOTE_F4, NOTE_G4, NOTE_A4, NOTE_D4, 0, NOTE_D4, NOTE_F4,NOTE_E4, NOTE_E4, NOTE_F4, NOTE_D4}; int Pirates_duration = {4,8,4,8,4,8,8,8,8,4,8,4,8,4,8,8,8,8,4,8,4,8, 4, 8,8,8,8,4,4,8,8,4,4,8,8,4,4,8,8, 8,4,8,8,8,4,4,8,8, 4,4,8,8,4,4,8,4, 4,8,8,8,8,4,4,8,8,4,4,8,8,4,4,8,8, 8,4,8,8,8,4,4,4,8,4,8,8,8,4,4,8,8}; // #### #### ### Katapusan ng Siya ay isang awitin ng Pirata ####
Ipinapakita sa itaas ng bloke ng code ang halaga ng tala at tagal ng tala ng "He is a Pirate" na tema na bumubuo sa pelikulang Pirates of the Caribbean. Maaari mong idagdag ang iyong tema nang katulad nito.
Skematika at Hardware:
Ang iskema ng proyektong Arduino Tone Generator Project na ito ay ipinapakita sa larawan sa ibaba:
Ang koneksyon ay medyo simple mayroon kaming isang Piezo speaker na kung saan ay konektado sa pin 8 at Ground ng Arduino sa pamamagitan ng isang 1K risistor. Ang 1k risistor na ito ay isang kasalukuyang naglilimita sa risistor, na ginagamit upang mapanatili ang kasalukuyang nasa loob ng mga ligtas na limitasyon. Mayroon din kaming apat na switch upang piliin ang kinakailangang himig. Ang isang dulo ng switch ay konektado sa lupa at ang kabilang dulo ay konektado sa pin 2, 3, 4 at 5 ayon sa pagkakabanggit. Ang mga switch ay magkakaroon ng pull up resistors na pinagana sa loob gamit ang software. Dahil ang circuit ay medyo simple maaari itong kumonekta gamit ang isang board ng tinapay tulad ng ipinakita sa ibaba:
Paliwanag ng Arduino Program:
Kapag naintindihan mo na ang konsepto, ang programa ng Arduino ay medyo tuwid. Ang kumpletong code ay ibinibigay sa pagtatapos ng tutorial. Kung hindi ka pamilyar sa pagdaragdag ng mga file ng header maaari mong i-download ang code bilang isang ZIP file mula dito at direktang i-upload ito sa iyong Arduino.
Ang dalawang nasa itaas ay ang mga file ng header na kailangang idagdag. Ang "pitches.h" ay ginagamit upang ipantay ang bawat tala ng musikal sa isang partikular na dalas at ang "mga tema.h" ay naglalaman ng halaga ng tala at tagal ng tala ng lahat ng apat na mga tono.
# isama ang "mga pitches.h" # isama ang "mga tema.h"
Ang isang pagpapaandar ay nilikha upang i-play ang bawat tono kapag kinakailangan. Dito kapag ang pagpapaandar Play_Pirates () ay tinawag na "He is a Pirate" tone na tutugtog . Ang pagpapaandar na ito ay binubuo ng pagpapaandar ng tono na gumagawa ng dalas sa pin number 8. Ang noTone (8) ay tinawag upang ihinto ang musika sa sandaling pinatugtog ito. Kung nais mong i-play ang iyong sariling tono, baguhin ang Pirates_note at Pirates_duration sa bagong tala at tagal halaga na ikaw ay naka-save sa "themes.h" halaga
void Play_Pirates () {for (int thisNote = 0; thisNote <(sizeof (Pirates_note) / sizeof (int)); thisNote ++) {int noteDuration = 1000 / Pirates_duration; // convert duration to time delay tone (8, Pirates_note, noteDursyon); int pauseBetweenNotes = noteDuration * 1.05; // Narito ang 1.05 ay tempo, dagdagan upang i-play ito ng mas mabagal na pagkaantala (pauseBetweenNotes); noTone (8); }}
Ginagamit ang pin 2, 3, 4 at 5 upang piliin ang partikular na tono na tutugtog. Ang mga pin na ito ay gaganapin mataas sa pamamagitan ng default gamit ang panloob na pull up resistors sa pamamagitan ng paggamit sa itaas na linya ng code. Kapag pinindot ang pindutan ay hilahin ito pababa sa lupa.
pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); pinMode (4, INPUT_PULLUP); pinMode (5, INPUT_PULLUP);
Sa ibaba ang bloke ng code ay ginagamit upang i-play ang kanta kapag ang isang pindutan ay pinindot. Binabasa nito ang digital na halaga ng bawat pindutan at kapag naging mababa (zero) ipinapalagay nito na ang pindutan ay pinindot at pinapatugtog ang kani-kanilang tono sa pamamagitan ng pagtawag sa kinakailangang pagpapaandar.
kung (digitalRead (2) == 0) {Serial.println ("Selected -> 'He is a Pirate'"); Play_Pirates (); } kung (digitalRead (3) == 0) {Serial.println ("Napili -> 'Crazy Frog'"); Play_CrazyFrog (); } kung (digitalRead (4) == 0) {Serial.println ("Napili -> 'Mario UnderWorld'"); Play_MarioUW (); } kung (digitalRead (5) == 0) {Serial.println ("Napili -> 'Siya ay isang Pirate'"); Play_Pirates (); }
Paggawa ng Melody Player Arduino Circuit na ito:
Kapag handa na ang iyong Code at Hardware, sunugin lamang ang programa sa iyong Arduino at dapat mong i-play ang tono sa pamamagitan ng simpleng pagpindot sa mga pindutan. Kung mayroon kang anumang mga problema tingnan ang iyong serial monitor para sa pag-debug o gamitin ang seksyon ng komento upang iulat ang problema at matutuwa akong tulungan ka.
Ang kumpletong pagtatrabaho ng proyekto ay ipinapakita sa video sa ibaba. Inaasahan kong nasiyahan ka sa proyekto at gagamitin ito sa ilan sa iyong proyekto o lumikha ng isang bagong tono para sa iyong proyekto. Kung oo huwag mag-atubiling ibahagi ang iyong trabaho sa seksyon ng komento.