|
|
![]() ÀúÀÚ : http://www.arduino.ws/ Á¦¸ñ : Play Melody Flash ¼³¸í : ¹è¿º¯¼ö¿¡ ¿¬¼ÓÀ¸·Î ÀúÀåµÈ ¸á·Îµð¸¦ ¿¬ÁÖÇÑ´Ù, ÂüÁ¶ : Modified at UCLM, Workshop by Sylvia Molina ![]() ¹ÚÀÚ(timming)ÀÇ ¹®Á¦¿Í À½Á¤(tone)ÀÇ ¹ß¼º¿¡ ´ëÇØ ¾Ë¾Æ¾ß ÇÑ´Ù. Á÷·Ä Æ÷Æ®·Î H ¹®ÀÚ¸¦ º¸³»¸é ¸á·Îµð¸¦ ½ÃÀÛÇÑ´Ù. ¹ß¼º °ø½Ä À½Á¤µé(tones)ÀÇ °è»êÀº ´ÙÀ½ÀÇ ¼ö½Ä(mathematical)À» µû¸¥´Ù. °ø½Ä : timeHigh = 1/(2 * toneFrequency) = period / 2 1À½°è(octave)¿¡ ÇÊ¿äÇÑ À½Á¤µéÀº ´ÙÀ½ÀÇ Ç¥(table)¿¡ Á¤ÀǵǾî ÀÖ´Ù. À½¸í = Á֯ļö = ÁÖ±â = ½Ã°£(ÆÞ½º ¹ÝÀü ½Ã°£À¸·Î ÁÖ±âÀÇ 1/2 ÀÌ´Ù) c = 261 Hz = 3830 = 1915 d = 294 Hz = 3400 = 1700 e = 329 Hz = 3038 = 1519 f = 349 Hz = 2864 = 1432 g = 392 Hz = 2550 = 1275 a = 440 Hz = 2272 = 1136 b = 493 Hz = 2028 = 1014 C = 523 Hz = 1912 = 956 ¾ÆµàÀÌ³ë ¸á·Îµð ¼Ò½º // 1 À½°è(octave)¸¸ ¹ß¼ºÀÌ °¡´ÉÇÏ´Ù. int ledPin = 13; // ÀÛµ¿ Ç¥½Ã±â´Â D13¿¡ ¿¬°áµÈ RUN-LED¸¦ ±×´ë·Î »ç¿ëÇÑ´Ù int speakerOut = 9; // ½ºÇÇÄ¿´Â D9 ¿Í GND¿¡ ¿¬°áÇÑ´Ù. (°í°¨µµ ¾ÐÀü¼ÒÀÚ¸¦ »ç¿ë) byte names[] = {'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C'}; // À½Á¤ÀÇ Á¤ÀÇ int tones[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956}; // À½Á¤¿¡ ´ë½ÅÇÏ´Â ¹ß¼º½Ã°£ // ¸á·Îµð ±æÀÌ : 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 byte melody[] = "8c8d8e8f8g8a6d6c2f2d2a2c2d2a1f2c2d2a2a2g2p8p8p8p"; int count = 0; int count2 = 0; int count3 = 0; int MAX_COUNT = 24; int statePin = LOW; int val = 0; void tocaCancion() { digitalWrite(speakerOut, LOW); // ÃÖÃÊ ¹ß¼ºÃâ·ÂÀ» 0À¸·Î for (count = 0; count < MAX_COUNT; count++) // 24 ¸á·Îµð À̳»¿¡¼ ¹Ýº¹ { statePin = !statePin; // ÇÉÀÇ »óŸ¦ µÚÁý´Â´Ù digitalWrite(ledPin, statePin); // ÇÉÀÇ »óÅ·ΠLED¸¦ ÄÒ´Ù. for (count3 = 0; count3 <= (melody[count*2] - 48) * 30; count3++) { for (count2=0;count2<8;count2++) // ´ÙÀ½ À½Á¤À» ¼±Åà { if (names[count2] == melody[count*2 + 1]) // À½Á¤À» Àд´٠{ digitalWrite(speakerOut,HIGH); // ½ºÇÇÄ¿¿¡ 1À» Ãâ·Â (ÄÒ´Ù) delayMicroseconds(tones[count2]); // À½Á¤À» Ç¥Çö (Áö¿¬½Ã°£À¸·Î ó¸®) digitalWrite(speakerOut, LOW); // ½ºÇÇÄ¿¿¡ 0À» Ãâ·Â (²ö´Ù) delayMicroseconds(tones[count2]); // À½Á¤À» Ç¥Çö (Áö¿¬½Ã°£À¸·Î ó¸®) } if (melody[count*2 + 1] == 'p') // À½Á¤¿¡ p¹®ÀÚ°¡ µé¾î ¿À¸é Á¤Áö { digitalWrite(speakerOut, 0); // ½ºÇÇÄ¿¿¡ 0À» Ãâ·Â (²ö´Ù) delayMicroseconds(500); // p ¹®ÀÚ´Â 0.5 Ãʰ£ ½ºÇÇÄ¿¸¦ ²ö´Ù. } } } } } void setup() // ±âÆÇÀÇ ÃʱâÈ { pinMode(ledPin, OUTPUT); pinMode(speakerOut, OUTPUT); beginSerial(9600); } void loop() // ¹«Çѹݺ¹ ÁÖÇÔ¼ö { val = serialRead(); // Á÷·ÄÆ÷Æ®¸¦ Àд´٠if (val != -1) // ÀÔ·ÂÀÌ -1 ´Ï¸é µ¥´ÏÅͰ¡ ¾ø´Ù { if (val == 'H') tocaCancion(); // Á÷·ÄÆ÷Æ®·Î µé¾î¿Â ¹®ÀÚ°¡ H Àΰ¡? ±×·¸´Ù¸é ¹ß¼ºÀ» ½ÃÀÛÇÑ´Ù. } } ÷ºÎ ÆÄÀÏÀº play_melody.pde ¿Í sound_string.pde ÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¹«·á ¼ÒÇÁÆ®¿þ¾î·Î, ½Åü¿Í Àç»ê »óÀÇ ¾î¶² À§Çè°ú ¼ÕÇØ¸¦ º¸»óÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº GNU ¹«·á ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷±ÔÁ¤À» µû¸¨´Ï´Ù. Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA ![]() |
![]() ![]() ![]() ![]() ![]() | ![]() |
![]() |
![]() |