로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Arduino Open Source
아듀이노 함수의 상세설명
작성자 avrtools™        
작성일 2008/08/22
첨부#1 play_meloy.pde.zip (3KB) (Down:1207)
Link#1 (Down:361)
ㆍ추천: 0  ㆍ조회: 3494   
  아듀이노 멜로디 연주
저자 : 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
  
 AVRTOOLS™
   
  0
9999
윗글 LCD 문자표시 (신형)
아래글 아듀이노 4비트 LCD (구형)
    N         제목    글쓴이 작성일 조회 추천
판매상품의 사용설명서는 다른 자료실에,,, avrtools™ 2011/08/30 (화) 1496 0
23 LCD 문자표시 (신형) avrtools™ 2012/04/12 (목) 2156 0
22 아듀이노 멜로디 연주 avrtools™ 2008/08/22 (금) 3494 0
21 아듀이노 4비트 LCD (구형) avrtools™ 2008/09/02 (화) 4370 0
20 아듀이노 가변저항 avrtools™ 2008/08/26 (화) 3114 0
19 직렬 데이터 이동(shift) 출력 avrtools™ 2012/04/10 (화) 1748 0
18 디지털 신호의 펄스폭을 측정하는 함수 avrtools™ 2012/04/10 (화) 2007 0
17 EEPROM 읽기, 쓰기 함수 avrtools™ 2012/04/10 (화) 2346 0
16 변수의 크기 avrtools™ 2012/04/10 (화) 1658 0
15 플레시 메모리에 상수를 저장하고 읽는 함수 avrtools™ 2012/04/10 (화) 1965 0
14 소프트웨어 Serial 함수 avrtools™ 2012/04/10 (화) 1847 0
13 아듀이노 터치스위치 [3] avrtools™ 2008/08/11 (월) 4156 0
12 아듀이노 shiftOut avrtools™ 2008/09/10 (수) 3412 0
11 아듀이노 스위치와 LED점등 avrtools™ 2008/08/13 (수) 4730 0
10 아듀이노의 주파수 출력 함수 avrtools™ 2009/10/20 (화) 2798 0
9 One Button Switch Library avrtools™ 2012/03/09 (금) 1882 0
8 아듀이노 논리연산 avrtools™ 2008/08/26 (화) 3053 0
7 아듀이노 PS2 키보드 읽기 avrtools™ 2008/09/10 (수) 4148 0
6 아듀이노 가로채기 함수 avrtools™ 2008/08/23 (토) 3253 0
5 아듀이노 전용명령 avrtools™ 2008/09/16 (화) 3959 0
4 아듀이노 PWM 출력과 타이머1 전용명령 avrtools™ 2008/08/19 (화) 3608 0
3 8비트 포트의 단일비트 조작방법 avrtools™ 2010/10/30 (토) 2406 0
2 직렬포트에서 문자를 받아 숫자 int로 저장 avrtools™ 2012/04/08 (일) 1722 0
1 직렬통신포트의 초기화 avrtools™ 2012/04/06 (금) 1500 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0