거리에 따라 선풍기를 돌릴 수 있을까?
20cm보다 가까워졌을때 선풍기가 돌아가도록 연결해 봅시다.
01. 회로 구성하기
쿨링팬에 1채널 릴레이 모듈을 이용해서 작동시키는 회로를 구성해 보겠습니다.
<5V 쿨링팬>
<1채널 릴레이 모듈>
쿨링팬의 GND - GND
쿨링팬의 VCC- 릴레이 NO
릴레이 GND(-) - GND
릴레이 VCC (+) - 5V
릴레이 SIG (S) - D4
릴레이 COM - 5V
초음파센서
VCC - 5V
Trig-11
Echo-12
Gnd-Gnd
02. 소스코드를 업로드하여 작동해보기
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
int relay=4;
const int trig_pin=11;
const int echo_pin=12;
void setup() {
pinMode(relay, OUTPUT);
pinMode(trig_pin, OUTPUT);
pinMode(echo_pin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trig_pin,LOW);
delayMicroseconds(2);
digitalWrite(trig_pin,HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin,LOW);
long duration=pulseIn(echo_pin,HIGH);
long distance=(duration/2)/29.1;
Serial.print(distance);
Serial.println("cm");
if(distance<20){
digitalWrite(relay, HIGH);
delay(500);
}
else{
digitalWrite(relay, LOW);
delay(500);
}
}
01: realy 값에 4를 저장한다
02:trig핀 11번
03:echo핀 12번
04~: setup 함수를 정의한다
05 relay 를 출력으로 설정한다
06:tri핀을 출력으로 설정
07:echo핀을 입력으로 설정
08:통신속도 9600 설정
09~:loop 함수를 정의한다
10: trig핀 Low
11:2마이크로초 대기
12:trig High 신호 출력
13:10마이크로초 대기
14:trig핀 Low
15: duration에 echo핀에 high값 들어온 시간 저장
16:distance에 echo핀 시간을 cm로 환산해서 저장
17:distance 값 출력
18:"cm"문자 출력
19:distance값이 20보다 작다면
20: relay핀을 HIGH로 설정한다
21:그렇지 않다면
22: relay핀 Low