ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 피에조 부저와 아두이노를 연결해서 여러 음을 출력하기
    Arduino/피에조 부저 2020. 10. 29. 17:37

    부저와 아두이노의 하드웨어 연결

    부저를 자세히 보면, 부저에 (+) 모양이 보인다.

    이 (+)모양의 선을 아두이노의 9번핀으로 연결한다.

    그 밑에 있는 검은 선은 아두이노의 GND에 연결한다.

     

    부저를 통해 기본 음을 출력해보자.

    음의 출력을 위해서는 주파수를 알고 있어야 한다.

    소스 코드

    #define   SORI_PIN  9   //  부저의 핀으로 부저의 (+)를 아두이노의 9번핀으로 연결
    
    //  부저의 주파수로 각 각 "도레미파솔라시도" 이다.
    int um[8] = {262, 294, 330, 340, 392, 440, 494, 523};
    
    void setup() {
      // put your setup code here, to run once:
    
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      for (int i = 0; i < 8; i++)
      {
        tone(SORI_PIN, um[i], 200); //  해당 주파수를 200은 길이
    
        delay(500);
    
        //  noTone(8);
      }
    }

     

     

    소방차 사이렌을 울려보자.

    소스 코드

    #define   SORI_PIN  9   //  부저의 핀으로 부저의 (+)를 아두이노의 9번핀으로 연결
    
    //  소방차 사이렌 만들기
    void setup() {
      // put your setup code here, to run once:
      pinMode(SORI_PIN,OUTPUT);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      for (int hz = 300; hz <= 750; hz++)
      {
        tone(SORI_PIN, hz);
    
        delay(5);
      }
    
      for (int hz = 750; hz >= 300; hz--)
      {
        tone(SORI_PIN, hz);
    
        delay(5);
      }
    }

     

     

    이번에는 음악을 출력해보자.

    우리가 출력할 음을 하나의 배열로 저장을 한다.

    소스 코드

    const int BUZZER_PIN = 9; //  부저의 (+)핀을 아두이노의 9번핀에 연결
    
    const int C = 261;  //  도
    const int D = 294;  //  레
    const int E = 330;  //  미
    const int F = 340;  //  파
    const int G = 392;  //  솔
    const int A = 440;  //  라
    const int B = 494;  //  시
    const int HC = 523; //  도
    
    //  음과 음의 길이를 표현하는 구조체
    typedef struct 
    {
      int t;            //  음
      unsigned long d;  //  음의 길이
    }TAD;
    
    TAD music[]={
      {G,100},{G,100},{A,100},{A,100},{G,100},{G,100},{E,200},
      {G,100},{G,100},{E,100},{E,100},{D,200},
      {G,100},{G,100},{A,100},{A,100},{G,100},{G,100},{E,200},
      {D,100},{E,100},{C,200}
    };
    
    int musicLen; //  music 배열의 길이
    
    void setup() {
      // put your setup code here, to run once:
      musicLen = sizeof(music) / sizeof(TAD);
    
      
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      for (int i = 0; i < musicLen; i++)
      {
        tone(BUZZER_PIN,music[i].t);
    
        delay(music[i].d * 5);
    
        delay(30);
      }
      
      //  한 곡이 끝나고 1초 쉬자.
      delay(1000);
    }

     

    댓글

Designed by Tistory.