44
설정 방법
- 가변저항으로 측정 거리를 최대 10cm까지 조절할 수 있다.
이 코드는 아두이노와 적외선 장애물 감지 센서를 사용하여 장애물의 유무를 감지하고 결과를 Serial Monitor에 출력하는 예제입니다. 적외선 장애물 감지 센서는 적외선(IR)을 발사하여 반사된 신호를 통해 장애물이 있는지 확인합니다. 장애물이 가까울수록 반사 신호가 강해지며, 이 신호를 감지하여 LOW 신호를 출력하는 방식으로 동작합니다.
코드 설명
- 변수 선언 및 초기화
int sensor = 7;
int value = 0;
sensor
: 센서가 연결된 디지털 핀 번호(여기서는 핀 7)입니다.value
: 센서의 감지 상태 값을 저장하는 변수로,loop()
함수에서 장애물의 유무를 확인하는 데 사용됩니다.
setup()
함수
void setup()
{
pinMode(sensor, INPUT);
Serial.begin(9600);
}
pinMode(sensor, INPUT);
: 핀 7을 입력 모드로 설정하여 센서의 출력 신호를 읽을 수 있게 합니다.Serial.begin(9600);
: 시리얼 통신을 시작하며, 초당 9600 비트 속도로 Serial Monitor에 데이터를 출력할 수 있습니다.
loop()
함수
void loop()
{
value = digitalRead(sensor);
if (value == LOW) // 장애물이 감지된 경우
{
Serial.println("Obstacle detected");
}
else // 장애물이 감지되지 않은 경우
{
Serial.println("No obstacle detected");
}
delay(1000); // 1초 대기 후 다시 센서 값 확인
}
-
value = digitalRead(sensor);
:sensor
핀에서 디지털 값을 읽어옵니다. 이 값은 LOW(0) 또는 HIGH(1)일 수 있으며, 장애물이 감지된 경우 LOW로 설정됩니다.if (value == LOW)
: 센서가 LOW 신호를 출력할 때, 장애물이 감지되었음을 의미하며"Obstacle detected"
메시지를 Serial Monitor에 출력합니다.else
: 센서가 HIGH 신호를 출력할 때, 장애물이 감지되지 않았음을 의미하며"No obstacle detected"
메시지를 출력합니다.delay(1000);
: 1초 동안 대기한 후 센서 값을 다시 확인합니다. 이 지연을 통해 Serial Monitor에 메시지가 빠르게 반복되는 것을 방지하고, 매 초마다 장애물 상태를 확인하도록 설정합니다.
동작 원리
- 적외선 장애물 감지 센서 동작:
- 센서는 적외선을 방출하고, 장애물의 유무에 따라 적외선이 반사되면 그 신호를 감지합니다.
- 장애물이 감지되면 센서는 LOW 신호를 출력하고, 장애물이 없으면 HIGH 신호를 출력합니다.
- 아두이노와 적외선 센서의 상호작용:
- 아두이노의 디지털 핀을 통해 센서의 신호를 읽고,
digitalRead()
함수를 사용하여 신호 상태를 확인합니다. - 장애물이 감지된 경우 LOW 신호가 입력되며, 아두이노는 Serial Monitor에 “Obstacle detected”라는 메시지를 출력합니다.
- 장애물이 없으면 HIGH 신호가 입력되어 “No obstacle detected”라는 메시지를 출력합니다.
- 아두이노의 디지털 핀을 통해 센서의 신호를 읽고,
- 출력 예시
- 장애물이 감지되면, Serial Monitor에 “Obstacle detected”라는 메시지가 출력됩니다.
- 장애물이 없는 경우, “No obstacle detected”라는 메시지가 출력됩니다.
int sensor = 7; // Sensor input value pin 7
int value = 0; // Variable to store sensor value
void setup()
{
pinMode(sensor, INPUT); // Set pin mode for sensor input
Serial.begin(9600); // Start serial communication at 9600 bps
}
void loop()
{
value = digitalRead(sensor); // Read the digital signal from the sensor
if (value == LOW) // If the sensor outputs LOW (usually means an obstacle is detected)
{
Serial.println("Obstacle detected"); // Display message on Serial Monitor
}
else // If the sensor outputs HIGH (no obstacle detected)
{
Serial.println("No obstacle detected"); // Display message on Serial Monitor
}
delay(1000); // Wait for 1 second before checking again
}
이 코드는 간단한 장애물 감지 기능을 구현하며, 1초 간격으로 주변에 장애물이 있는지 확인하고 Serial Monitor에 감지 결과를 출력합니다.