Processor

【라즈베리파이】 wiringPi C 언어 : 부저 멜로디 연주하기

작성자 임베디드코리아 작성일26-02-17 18:03 조회119회 댓글0건
--->>> 예제 : Buzzer.c  음계 0~7 입력 <<<---------------------
#include <wiringPi.h>
#include <softTone.h>
#include <stdio.h>
#include <stdlib.h>

#define BUZZER_PIN 4

#define DO_L 523
#define RE 587
#define MI 659
#define FA 698
#define SOL 784
#define RA 880
#define SI 987
#define DO_H 1046

//int scale [8] = { 262, 294, 330, 349, 392, 440, 494, 525 };

unsigned int SevenScale (unsigned char scale)
{
unsigned int _ret = 0;
switch (scale)
{
case 0:
_ret = DO_L;
break;
case 1:
_ret = RE;
break;
case 2:
_ret = MI;
break;
case 3:
_ret = FA;
break;
case 4:
_ret = SOL;
break;
case 5:
_ret = RA;
break;
case 6:
_ret = SI;
break;
case 7:
_ret = DO_H;
break;
}
return _ret;
}

void Change_FREQ(unsigned int freq)
{
pwmWrite(BUZZER_PIN, freq);
softToneWrite (BUZZER_PIN, freq);
}

void STOP_FREQ (void)
{
softToneWrite (BUZZER_PIN, 0);
}

void Buzzer_Init (void)
{
softToneCreate (BUZZER_PIN) ;
STOP_FREQ();
}

int main (void)
{
if(wiringPiSetupGpio() == -1)
return 1;

// printf("Buzzer operationg..\n");
Buzzer_Init();

int i;
for(i=0; i < 8; i++) {
Change_FREQ (SevenScale(i));
delay(500);
STOP_FREQ();
}

while(1)
{
}
return 0;
}
------------------------------------------------------------------------
$ gcc  -o  scale_Buzzer  scale_Buzzer.c  -lwiringPi 
$ sudo  ./scale_Buzzer

--->>>예제 : schoolbell_Buzzer.c  <<<------------------------------------
#include <wiringPi.h>
#include <softTone.h>

#define SPKR 6 /* GPIO25 */
#define TOTAL 32 /* 학교종의 전체 계이름의 수 */

int notes[] =
{ /* 학교종을 연주하기 위한 계이름 */
    391, 391, 440, 440, 391, 391, 329.63, 329.63, \
    391, 391, 329.63, 329.63, 293.66, 293.66, 293.66, 0, \
    391, 391, 440, 440, 391, 391, 329.63, 329.63, \
    391, 329.63, 293.66, 329.63, 261.63, 261.63, 261.63, 0
};

int musicPlay( )
{
    int i;
    softToneCreate(SPKR); /* 톤 출력을 위한 GPIO 설정 */
    for (i = 0; i < TOTAL; ++i)
    {
    softToneWrite(SPKR, notes[i]); /* 톤 출력 : 학교종 연주 */
    delay(280); /* 음의 전체 길이만큼 출력되도록 대기 */
}
return 0;
}

int main( )
{
    wiringPiSetup( );
    musicPlay( ); /* 음악 연주를 위한 함수 호출 */
    return 0;
}
-------------------------------------------------------------------
$ gcc  -o  schoolbell_Buzzer  schoolbell_Buzzert.c  -lwiringPi
$ sudo  ./schoolbell_Buzzer