Sa proyektong ito bubuo kami ng isang generator ng tono gamit ang Arduino Uno. Magkakaroon kami ng mga pindutan na naka-interfaced sa UNO at ang bawat isa sa kanila ay bumubuo ng iba't ibang kasidhian ng tono. Ang dalas ng tono na nabuo ng UNO ay pareho sa bawat panloob. Ito ay ang tindi ng tunog na nagbabago sa bawat pagpindot. Ito ang isa sa pinakamadaling paraan upang makagawa ng isang piano kasama ng Arduino Uno. Suriin din ang Piano circuit na ito.
Ang mga tono ay maaaring madagdagan ng hanggang sa 20. Nagbibigay ito ng pinakamahusay na pagkakaiba-iba ng tono at mas makinis na mga pagbabago. Ang tindi ng tono ay nabago ng PWM (Pulse Width Modulation). Ang isang halimbawa ng PWM ay ipinapakita sa ibaba ng graph.
Sa PWM, ang dalas ng signal o ang tagal ng oras ng signal (Ton + Toff) ay laging pare-pareho. Ang ratio lamang ng TURN ON at TURN OFF ang nagbabago ng oras. Halimbawa sa pangalawang grap sa itaas na pigura, ang oras ng PAG-ON ay 80% at ang oras ng PAG-OFF ay 20% ng kumpletong tagal.
Sa ikatlong grap, ang oras ng PAG-ON ay 50% at ang oras ng PAG-OFF ay 50% ng kumpletong tagal. Kaya't sa unang kaso mayroon kaming duty ratio na 80% at sa pangalawang kaso mayroon kaming duty ratio na 20%.
Sa pagbabago ng tungkulin na ratio mayroon kaming pagbabago sa Vrms (Root Mean Square na halaga ng Boltahe), kapag ang boltahe na ito ay ibinibigay sa buzzer gumagawa ito ng ibang ingay tuwing may pagbabago sa ratio ng tungkulin.
Paprograma namin ang UNO upang magbigay ng isang signal ng PWM ng iba't ibang ratio ng tungkulin para sa bawat isang mga pindutan. Kaya mayroon kaming isang tone generator sa kamay na bumubuo ng isang iba't ibang mga tono sa bawat pindutin ang pindutan.
Kinakailangan ang Mga Bahagi
Hardware: Arduino Uno, Power supply (5v), 1000 uF capacitor, 100 nF capacitor, Buzzer, pindutan (8 piraso).
Software: AURDINO gabi-gabi o Atmel studio 6.2
Circuit Diagram at Paggawa ng Paliwanag
Ang circuit para sa tone generator ay ipinapakita sa diagram sa ibaba.
Upang ma-filter ang ingay mula sa supply voltage capacitors ay inilalagay sa mga terminal tulad ng ipinakita sa diagram.
Ang PWM ng Arduino Uno ay maaaring makamit sa anumang mga pin na sinasagisag bilang "~" sa board ng PCB. Mayroong anim na mga channel ng PWM sa UNO. Gayunpaman hindi namin maaaring gamitin ang mga PWM na pin na itinatag sa PINS 0-7, dahil mas gusto ang PINS para sa interface ng mga pindutan.
Mayroong isang dahilan para sa pagpili ng PINS 0-7 bilang mga input, dahil ang PINS 0-7 ay kumakatawan sa PORTD ng microcontroller. Kaya sa huling kaso maaari nating kunin ang kumpletong BYTE ng PORTD.
Ngayon para sa pagkuha ng ibang duty ratio na PWM, gagamitin namin ang sumusunod na utos.
analogWrite (9, VALUE); |
Mula sa kundisyon sa itaas maaari naming direktang makuha ang signal ng PWM sa kaukulang pin. Ang unang parameter sa mga braket ay para sa pagpili ng pin na numero ng PWM signal. Pangalawang parameter ay para sa pagsulat ng ratio ng tungkulin.
Ang halaga ng PWM ng Arduino Uno ay maaaring mabago mula 0 hanggang 255. Na may pinakamababang "0" hanggang "255" bilang pinakamataas. Sa 255 bilang duty ratio makakakuha kami ng 5V sa PIN9. Kung ang duty ratio ay ibinigay bilang 125 makakakuha kami ng 2.5V sa PIN9. Hahatiin namin ang ratio ng tungkulin na 0-250 sa 8 mga pindutan na naka-interfaced sa PORTD ng UNO. Dito pipiliin ako ng 25 palugit para sa bawat pindutan, ngunit pinili mo ito.
Sa pamamagitan nito magkakaroon kami ng isang signal ng PWM na ang ratio ng tungkulin ay nagbabago sa bawat pindutan. Ibinibigay ito sa buzzer, mayroon kaming tone generator. Ang pagtatrabaho ng Arduino based tone generator na ito ay ipinapaliwanag hakbang-hakbang sa C code na ibinigay sa ibaba.