본문 바로가기

개발자/라즈베리파이4

라즈베리파이4 부저 buzzer 실습 코드

반응형

 

 

버저 또는 비퍼(영어: buzzer 또는 beeper)는 소리 신호 알림 장치이며, 기계, 전자 기계, 압전 방식(piezoelectric)으로 되어 있다. 버저의 종류에는 알람 기기, 타이머, 또 마우스 클릭이나 키 입력과 같은 사용자 입력의 확인 등이 있다.

 

센서 파트 넘버: SFM-27 12V Alarm buzzer 

 

이 SFM-27 능동 부저는 몇 데시벨(95dB 이상!)을 가지고 있습니다. 이 부저는 귀가 먹먹한 소리가 모든 주의를 끌기 때문에 경보 시스템에 주로 사용됩니다. 이 부저는 12V에 적합하지만 3V에서 24V 사이의 전압을 처리할 수 있습니다. 이 부저는 자체 주파수(3000Hz)를 생성하므로 전원을 연결하기만 하면 경보가 활성화됩니다. 

 

 

이미지

 

 

연결도

 

- 파일 이름: buzzertest.c

- 소스코드: 할당된 gpio 번호는 예고 없이 변경할 수 있습니다.

 

* 주의 사항 

 

부저 테스트 코드는 아래와 같다. 해당 GPIO 핀을 정의하고, 핀 모드를 설정하고, 전원을 ON, OFF 하면 부저에서 알람 소리가 크게 난다. 가장 아래 부분에 sig_handler 함수는 운영체제에서 지원하는 함수로 ctrl-c를 눌러 프로그램 종료 시에 GPIO 핀을 초기 상태 0으로 하고 빠져나오는 함수인데, 모든 액츄에이터 제어 함수에 공통적으로 포함한다. 

 

 

#include <signal.h> //Signal 사용 헤더파일
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h> //exit() 사용 헤더파일

#include <wiringPi.h>

//#define BUZCONTROL  27	//GPIO 5
#define BUZCONTROL  28	//GPIO 20

void sig_handler(int signo); // SIGINT 핸들러 함수

int main (void)
{
	if(wiringPicheck()) printf("Fail\n");
		
	signal(SIGINT, (void *)sig_handler);	
	
	int i;
	while(1)
	{	
		printf("here \n");
		
		pinMode (BUZCONTROL, OUTPUT);
		
		//delay(1000);
			
		digitalWrite(BUZCONTROL, 1);
		delay(1000);
		digitalWrite(BUZCONTROL, 0);
		delay(1000);

		
	}	
  
  return 0 ;
}

int wiringPicheck(void)
{
	if (wiringPiSetup () == -1)
	{
		fprintf(stdout, "Unable to start wiringPi: %s\n", strerror(errno));
		return 1 ;
	}
}

void Bpluspinmodeset(void)
{
	pinMode (BUZCONTROL, OUTPUT);
	
}

void sig_handler(int signo) // ctrl-c 로 종료시 실행되는 함수
{
    printf("process stop\n"); 	
	digitalWrite(BUZCONTROL, 0);
	exit(0);
}

 

 

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^