아두이노 LED, 부저, 초음파센서 이용한 침입방지 시스템
- 자작 프로그램
- 2019. 11. 20.
학교에서 아두이노 과제로 한번 만들어 보았다.
원래 얼굴인식 도어락을 만들려고 했는데 부품 가격이 너무 많이 나가서 학교에 있는 부품으로 만들어 보았다.
일단 도면은 이렇다
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가 켜지게 되고 부저가 울리게 된다.