به نام خدا |
||||
|
||||
|
<p><strong>آموزش</strong> <a class="wikilink" href="http://arduino.ir/Tutorial"> مثال ها</a> | <a class="wikilink" href="http://arduino.ir/Tutorial/Foundations"> اطلاعات پایه</a> | <a class="wikilink" href="http://arduino.ir/Hacking">فوت وفن ها</a> | <a class="wikilink" href="http://arduino.ir/Tutorial/Links">پیوندها</a> </p> <p class="vspace"></p> <p><em>Examples > Digital I/O</em> </p> <p class="vspace"></p> <h3>یک موسیقی را با استفاده از تابع <span dir="ltr">tone()</span> اجرا کنید.</h3> <p> مثال زیر نشان می دهد که چطور از دستور <span dir="ltr">Tone()</span> جهت تولید نت های موسیقی استفاده می شود. این مثال یک موسیقی کوتاه را که ممکن است قبلاً شنیده باشید، اجرا می نماید.</p> <p class="vspace"></p> <h3>سخت افزار مورد نیاز</h3> <ul>
<li>برد آردوینو</li> <li>یک بلندگوی کوچک 8 اهمی </li> <li>مقاومت 100 اهمی </li> <li>سیم بردبوردی </li>
</ul> <p class="vspace"></p> <h3>مدار</h3> <div>
<a class="urllink" href="nofollow"> <img height="300px" src="
" title /></a></div>
<p class="vspace"></p>
<p><span style="font-size:83%">این تصویر با استفاده از نرم افزار <a class="urllink" href="http://www.fritzing.org" rel="nofollow">Fritzing</a> ایجاد شده است. برای مثال های بیشتر مدار به صفحه <a class="urllink" href="http://fritzing.org/projects/" rel="nofollow">پروژه های Fritzing </a> مراجعه نمایید. </span></p>
<p class="vspace"></p> <p> از طریق یک مقاومت 100 اهمی، یک پایانه بلندگو را به پین دیجیتال 8 متصل کنید و پایانه دیگر را به زمین وصل کنید.
</p>
<p class="vspace"></p> <h3>شماتیک</h3> <p><span style="font-size:83%">برای بزرگ شدن تصویر روی آن کلیک کنید.</span> </p> <p class="vspace"></p> <div>
<a class="urllink" href="nofollow"> <img height="300px" src="
" title /></a></div>
<p class="vspace"></p> <h3>کد</h3> <p> کد زیر از یک فایل جانبی به نام <span dir="ltr">pitches.h</span>استفاده می کند. این فایل شامل همه مقادیر pitch برای نت های نوعی است. به عنوان مثال، NOTE_C4 همان C میانی است. NOTE_FS4 همان F#، و 40 است. این جدول نت ها در اصل توسط Brett Hagman نوشته شده است،
This file contains all the pitch
values for typical notes. For example, NOTE_C4 is middle C. NOTE_FS4 is F sharp, and so forth. This note table was originally written by Brett Hagman, on whose work the tone() command was based.
ممکن است زمانی که می خواهید نت های موسیقی را ایجاد کنید، مفید باشد. </p> <p class="vspace"></p> <p>اسکچ اصلی به صورت زیر است: </p> <p class="vspace"></p> <div class="code">
<p class="vspace"></p> <p></p> <div class="sourceblock " id="sourceblock1"> <div class="sourceblocktext"> <div class="arduino" align="left" dir="ltr"> <span class="coMULTI">/*<br />
Melody<br /> <br /> Plays a melody <br /> <br /> circuit:<br /> * 8-ohm speaker on digital pin 8<br /> <br /> created 21 Jan 2010<br /> modified 30 Aug 2011<br /> by Tom Igoe <br />
<br /> This example code is in the public domain.<br />
<br /> http://arduino.ir/Tutorial/Tone<br /> <br /> */</span><br /> <span class="co2">#include "pitches.h"</span><br />
<br /> <span class="co1">// notes in the melody:</span><br /> <span class="kw1">int</span> melody<span class="br0">[]</span> <span class="sy0">=</span> <span class="br0">{</span><br />
NOTE_C4<span class="sy0">,</span> NOTE_G3<span class="sy0">,</span>NOTE_G3<span class="sy0">,</span>
NOTE_A3<span class="sy0">,</span> NOTE_G3<span class="sy0">,</span><span class="nu0">0</span><span class="sy0">,</span> NOTE_B3<span class="sy0">,</span> NOTE_C4<span class="br0">}</span><span class="sy0">;</span><br /> <br /> <span class="co1">// note durations: 4 = quarter note, 8 = eighth note, etc.:</span><br /> <span class="kw1">int</span> noteDurations<span class="br0">[]</span> <span class="sy0">=</span> <span class="br0">{</span><br />
<span class="nu0">4</span><span class="sy0">,</span> <span class="nu0">8</span><span class="sy0">,</span>
<span class="nu0">8</span><span class="sy0">,</span> <span class="nu0">4</span><span class="sy0">,</span><span class="nu0">4</span><span class="sy0">,</span><span class="nu0">4</span><span class="sy0">,</span><span class="nu0">4</span><span class="sy0">,</span><span class="nu0">4</span> <span class="br0">}</span><span class="sy0">;</span><br /> <br /> <span class="kw1">void</span> <span class="kw3">setup</span><span class="br0">()</span> <span class="br0">{</span><br />
<span class="co1">// iterate over the notes of the melody:</span><br /> <span class="kw1">for</span> <span class="br0">(</span><span class="kw1">int</span>
thisNote <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> thisNote <span class="sy0"><</span> <span class="nu0">8</span><span class="sy0">;</span> thisNote<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br /> <br />
<span class="co1">// to calculate the note duration, take one
second </span><br />
<span class="co1">// divided by the note type.</span><br /> <span class="co1">//e.g. quarter note = 1000 / 4, eighth note
= 1000/8, etc.</span><br />
<span class="kw1">int</span> noteDuration <span class="sy0">=</span>
<span class="nu0">1000</span><span class="sy0">/</span>noteDurations<span class="br0">[</span>thisNote<span class="br0">]</span><span class="sy0">;</span><br />
tone<span class="br0">(</span><span class="nu0">8</span><span class="sy0">,</span>
melody<span class="br0">[</span>thisNote<span class="br0">]</span><span class="sy0">,</span>noteDuration<span class="br0">)</span><span class="sy0">;</span><br /> <br />
<span class="co1">// to distinguish the notes, set a minimum
time between them.</span><br />
<span class="co1">// the note's duration + 30% seems to work
well:</span><br />
<span class="kw1">int</span> pauseBetweenNotes
<span class="sy0">=</span> noteDuration <span class="sy0">*</span> <span class="nu16">1.30</span><span class="sy0">;</span><br />
<span class="kw1">delay</span><span class="br0">(</span>pauseBetweenNotes<span class="br0">)</span><span class="sy0">;</span><br /> <span class="co1">// stop the tone playing:</span><br /> noTone<span class="br0">(</span><span class="nu0">8</span><span class="br0">)</span><span class="sy0">;</span><br /> <span class="br0">}</span><br />
<span class="br0">}</span><br /> <br /> <span class="kw1">void</span> <span class="kw3">loop</span><span class="br0">()</span> <span class="br0">{</span><br />
<span class="co1">// no need to repeat the melody.</span><br />
<span class="br0">}</span></div> </div> <br> <br> <div class="sourceblocklink" align="left" dir="ltr"> <a href="http://arduino.cc/en/Tutorial/Tone?action=sourceblock&num=1" type="text/plain"> [دریافت کد]</a></div> </div> <p></p> <p class="vspace"></p>
</div> <p class="vspace"></p> <p> جهت ساخت فایل <span dir="ltr"> pitches.h</span>، روی دکمه "new Tab" در گوشه بالا و سمت راست پنجره کلیک کنید. این دکمه چیزی شبیه این است: </p> <p class="vspace"></p> <div>
<img src="" title /></div>
<p class="vspace"></p> <p>درج در کد زیر: </p> <p class="vspace"></p> <div class="code">
<p></p> <div class="sourceblock " id="sourceblock2"> <div class="sourceblocktext"> <div class="arduino" align="left" dir="ltr"> <span class="coMULTI">/*************************************************<br />
* Public Constants<br /> *************************************************/</span><br />
<br /> <span class="co2">#define NOTE_B0 31</span><br /> <span class="co2">#define NOTE_C1 33</span><br /> <span class="co2">#define NOTE_CS1 35</span><br /> <span class="co2">#define NOTE_D1 37</span><br /> <span class="co2">#define NOTE_DS1 39</span><br /> <span class="co2">#define NOTE_E1 41</span><br /> <span class="co2">#define NOTE_F1 44</span><br /> <span class="co2">#define NOTE_FS1 46</span><br /> <span class="co2">#define NOTE_G1 49</span><br /> <span class="co2">#define NOTE_GS1 52</span><br /> <span class="co2">#define NOTE_A1 55</span><br /> <span class="co2">#define NOTE_AS1 58</span><br /> <span class="co2">#define NOTE_B1 62</span><br /> <span class="co2">#define NOTE_C2 65</span><br /> <span class="co2">#define NOTE_CS2 69</span><br /> <span class="co2">#define NOTE_D2 73</span><br /> <span class="co2">#define NOTE_DS2 78</span><br /> <span class="co2">#define NOTE_E2 82</span><br /> <span class="co2">#define NOTE_F2 87</span><br /> <span class="co2">#define NOTE_FS2 93</span><br /> <span class="co2">#define NOTE_G2 98</span><br /> <span class="co2">#define NOTE_GS2 104</span><br /> <span class="co2">#define NOTE_A2 110</span><br /> <span class="co2">#define NOTE_AS2 117</span><br /> <span class="co2">#define NOTE_B2 123</span><br /> <span class="co2">#define NOTE_C3 131</span><br /> <span class="co2">#define NOTE_CS3 139</span><br /> <span class="co2">#define NOTE_D3 147</span><br /> <span class="co2">#define NOTE_DS3 156</span><br /> <span class="co2">#define NOTE_E3 165</span><br /> <span class="co2">#define NOTE_F3 175</span><br /> <span class="co2">#define NOTE_FS3 185</span><br /> <span class="co2">#define NOTE_G3 196</span><br /> <span class="co2">#define NOTE_GS3 208</span><br /> <span class="co2">#define NOTE_A3 220</span><br /> <span class="co2">#define NOTE_AS3 233</span><br /> <span class="co2">#define NOTE_B3 247</span><br /> <span class="co2">#define NOTE_C4 262</span><br /> <span class="co2">#define NOTE_CS4 277</span><br /> <span class="co2">#define NOTE_D4 294</span><br /> <span class="co2">#define NOTE_DS4 311</span><br /> <span class="co2">#define NOTE_E4 330</span><br /> <span class="co2">#define NOTE_F4 349</span><br /> <span class="co2">#define NOTE_FS4 370</span><br /> <span class="co2">#define NOTE_G4 392</span><br /> <span class="co2">#define NOTE_GS4 415</span><br /> <span class="co2">#define NOTE_A4 440</span><br /> <span class="co2">#define NOTE_AS4 466</span><br /> <span class="co2">#define NOTE_B4 494</span><br /> <span class="co2">#define NOTE_C5 523</span><br /> <span class="co2">#define NOTE_CS5 554</span><br /> <span class="co2">#define NOTE_D5 587</span><br /> <span class="co2">#define NOTE_DS5 622</span><br /> <span class="co2">#define NOTE_E5 659</span><br /> <span class="co2">#define NOTE_F5 698</span><br /> <span class="co2">#define NOTE_FS5 740</span><br /> <span class="co2">#define NOTE_G5 784</span><br /> <span class="co2">#define NOTE_GS5 831</span><br /> <span class="co2">#define NOTE_A5 880</span><br /> <span class="co2">#define NOTE_AS5 932</span><br /> <span class="co2">#define NOTE_B5 988</span><br /> <span class="co2">#define NOTE_C6 1047</span><br /> <span class="co2">#define NOTE_CS6 1109</span><br /> <span class="co2">#define NOTE_D6 1175</span><br /> <span class="co2">#define NOTE_DS6 1245</span><br /> <span class="co2">#define NOTE_E6 1319</span><br /> <span class="co2">#define NOTE_F6 1397</span><br /> <span class="co2">#define NOTE_FS6 1480</span><br /> <span class="co2">#define NOTE_G6 1568</span><br /> <span class="co2">#define NOTE_GS6 1661</span><br /> <span class="co2">#define NOTE_A6 1760</span><br /> <span class="co2">#define NOTE_AS6 1865</span><br /> <span class="co2">#define NOTE_B6 1976</span><br /> <span class="co2">#define NOTE_C7 2093</span><br /> <span class="co2">#define NOTE_CS7 2217</span><br /> <span class="co2">#define NOTE_D7 2349</span><br /> <span class="co2">#define NOTE_DS7 2489</span><br /> <span class="co2">#define NOTE_E7 2637</span><br /> <span class="co2">#define NOTE_F7 2794</span><br /> <span class="co2">#define NOTE_FS7 2960</span><br /> <span class="co2">#define NOTE_G7 3136</span><br /> <span class="co2">#define NOTE_GS7 3322</span><br /> <span class="co2">#define NOTE_A7 3520</span><br /> <span class="co2">#define NOTE_AS7 3729</span><br /> <span class="co2">#define NOTE_B7 3951</span><br /> <span class="co2">#define NOTE_C8 4186</span><br /> <span class="co2">#define NOTE_CS8 4435</span><br /> <span class="co2">#define NOTE_D8 4699</span><br /> <span class="co2">#define NOTE_DS8 4978</span></div> </div> <br><br> <div class="sourceblocklink" dir="ltr" align="left"> <a href="http://arduino.cc/en/Tutorial/Tone?action=sourceblock&num=2" type="text/plain"> [دریافت کد]</a></div> </div> <p></p> <p class="vspace"></p>
</div> <p class="vspace"></p> <h3>به لینک های زیر مراجعه کنید:</h3> <ul>
<li><a class="wikilink" href="http://arduino.ir/Reference/Array"> <span dir="ltr">Array()</span></a> </li> <li><a class="wikilink" href="http://arduino.ir/Reference/For"> <span dir="ltr">for()</span></a> </li> <li><a class="wikilink" href="http://arduino.ir/Reference/Tone"> <span dir="ltr">tone()</span></a> <p class="vspace"></p> </li> <li><a class="wikilink" href="http://arduino.ir/Tutorial/Tone2">PitchFollower</a> - یک صدا را روی بلندگوی piezo و براساس مقدار ورودی آنالوگ، پخش کنید.
</li>
<li><a class="wikilink" href="http://arduino.ir/Tutorial/Tone3">SimpleKeyboard</a> - یک صفحه کلید موزیکال 3 کلیده با استفاده از سنسورهای Force و یک بلندگوی Piezo. </li>
</ul> </div>