아두이노와 초음파센서를 사용하여 거리에 따라 LED 색을 변하는 프로젝트를 만들 수 있다.
아래는 간단한 예시 코드이다. 이 코드는 초음파센서로 측정된 거리에 따라 RGB LED의 색상을 변화시킨다.
거리가 가까워지면 빨간색에서 시작하여 멀어질수록 파란색으로 변화한다.
코딩
// 초음파 센서 핀 정의
#define trigPin 13
#define echoPin 12
// RGB LED 핀 정의
#define redPin 9
#define greenPin 10
#define bluePin 11
// 초음파 센서 변수
long duration;
int distance;
// RGB LED 변수
int redValue = 255;
int greenValue = 0;
int blueValue = 0;
void setup() {
// 핀 모드 설정
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
// 시리얼 통신 시작
Serial.begin(9600);
}
void loop() {
// 초음파 센서로 거리 측정
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
// 거리에 따라 LED 색상 변경
if (distance <= 30) {
redValue = 255;
greenValue = 0;
blueValue = 0;
} else if (distance > 30 && distance <= 60) {
redValue = 0;
greenValue = 255;
blueValue = 0;
} else {
redValue = 0;
greenValue = 0;
blueValue = 255;
}
// LED에 색상 적용
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
// 시리얼 모니터에 거리 출력
Serial.print("Distance: ");
Serial.println(distance);
// 500ms 대기
delay(500);
}
준비품 : 아두이노uno R3, 초음파센서, 3색 LED, 300옴 저항 3개
![]() |
![]() |
![]() |
![]() |
아두이노 우노 R3 | 초음파 센서 | 3색 LED | 300옴 저항 |
다음과 같이 회로에 요소들을 연결한다

먼저 3색 LED의 RED를 아두이노 9번핀, GREEN을 10번핀, BLUE를 11번핀에 300옴 저항을 각각 연결하여 아두이노에 연결한다.
다음 초음파센서의 TRIG를 아두이노 2번핀에 연결하고, ECHO를 아두이노 3번핀에 연결한다.
센서의 VCC를 아두이노 +5V에 연결하고, 센서의 GNE는 아두이노 GND에 똑같이 연결한다.
그리고 3색 LED의 2번 다리를 +5V에 연결하고 USB케이블을 아두이노 포트에 연결한다.
다음 아두이노 IDE를 실행하여 다음과 같이 코딩한다.

초음파 센서의 TRIG, ECHO핀을 매크로 상수로 TREG는 2로, ECHO는 3으로 선언한다.
삼색 LED의 RED를 9, GREEN은 10, BLUE은 11로 정의한다.
void setup문에서 핀모드를 TRIG는 OUTPUT로, ECHO는 INPUT로 설정한다.
다음 void loop문에서 digitalWrite(TRIG, LOW/HIGH)는 초음파센서의 TRIG에서 초음파를 발사하는 부분이다.
long distance = pulseIn(ECHO, HIGH)/58.2; 는 pulseIn 명령어를 사용하여 ECHO에 초음파가 들어오는 시간을 계산한다. 여기서 58.2는 시간을 cm단위로 변환하여 주는 역활을 한다.
삼색 LED의 R, G, B를 모두 255로 설정하여 초기상태에서는 LED를 끄게한다.
여기서 255로 설정하는 이유는 삼색LED의 공동다리가 "+" 이기 때문이다. 만일 LED의 공동다리가 "-"이라면 R, G, B의 값을 모두 0으로 해주어야 한다.
다음 if문에서 distance < 10은 거리 10cm이하에서는 RED가 켜지고, 거리 20cm 이하에서는 GREEN을 켜며, 30cm이하에서는 BLUE가 켜진다. 여기서 analogWrite값을 0으로 정해주어야만 LED가 켜진다. 위에서 얘기한것처럼 LED의 공동핀이 "-"인 경우는 analogWrite값을 255로 정해주어야 할 것이다.
위와 같이 전부 코딩을 끝낸 후 업로드 시켜주면 초음파에 어떠한 물체가 감지되면 거리에 따른 값이 LED에 현시될 것이다.
출력 결과
https://www.youtube.com/watch?v=jP6X4kVFmto&t=20s
'아두이노 기초' 카테고리의 다른 글
TCS3200 RGB 컬러센서를 사용하여 3색 LED 제어하기 (0) | 2020.08.01 |
---|---|
아두이노에 LCD패널을 연결하여 초음파센서에서 측정된 거리를 현시하기 (0) | 2020.07.28 |
아두이노에 3색 LED를 사용하여 자동으로 색갈 변화시키기 (0) | 2020.07.28 |
2. 아두이노 UNO에 LED를 연결하여 깜빡이기 (0) | 2020.07.28 |
1. 아두이노란 무엇인가? (0) | 2020.07.28 |