아두이노 LED, 부저, 초음파센서 이용한 침입방지 시스템

학교에서 아두이노 과제로 한번 만들어 보았다.

원래 얼굴인식 도어락을 만들려고 했는데 부품 가격이 너무 많이 나가서 학교에 있는 부품으로 만들어 보았다.

 

일단 도면은 이렇다

LED는 2,3번 핀

부저는 GND, 9번 핀

초음파 센서는 5V,GND,7,8번 핀이다.

 

완성본은 이렇다.

반응형
#define CM 11
#define INC 10
#define TP 7
#define EP 8
int tones[] = {261, 294, 330, 349, 392, 440, 494}; // 부저 알림음
void setup() {
	pinMode(2, OUTPUT); // LED핀 출력 설정
	pinMode(3, OUTPUT); // LED핀 출력 설정
	pinMode(TP, OUTPUT); // 초음파센서 거리 측정
	pinMode(EP, INPUT); // 초음파센서 거리 측정
	Serial.begin(115200); //시리얼 포트 설정
	Serial.println("---------Start Program---------");
}
void loop() {
	long microseconds = TP_init();
	long distance_cm = Distance(microseconds, CM);
	Serial.print("Distacne_CM = ");
	Serial.println(distance_cm);
	if(distance_cm <= 5) { //거리가 5 이하가 되면
		digitalWrite(2, HIGH); // LED 킨다
		for(int i=0; i<7; i++) { //부저가 울린다
			tone(9,tones[i],500);
			delay(1000);
		}
	delay(2000);
	digitalWrite(2, LOW);
	}
}
long TP_init() {
// Trig핀에 HIGH 값을 입력하여 초음파 신호를 내보내고 EP 핀의
// 값이 HIGH 가 되는 시간을 측정하여 반환 해준다.
	digitalWrite(TP, LOW); 
	delayMicroseconds(2); 
	digitalWrite(TP, HIGH); 
	delayMicroseconds(10);
	digitalWrite(TP, LOW);
	long microseconds = pulseIn(EP,HIGH); 
	return microseconds; 
}
long Distance(long time, int flag) // 측정된 값(시간)을 CM으로 변환
{
	long distacne;
	if(flag)
		distacne = time /29 / 2 ; 
	else
		distacne = time / 74 / 2; // INC
	return distacne;
}

 소스는 이렇다.

 

우선 setup 부분에 핀을 각각 설정을 해준다.

초음파 센서로 거리를 측정하고 측정된 값을 CM으로 변환을 해준다.

CM값이 5 이하로 나오게 되면 LED가 켜지게 되고 부저가 울리게 된다.

 

 

 

댓글

Designed by JB FACTORY