Lab-05: Using sensors with Arduino
1. 이론
1.1 Sensors
(Circuit.io의 컴포넌트에 있는 센서)
- 광 센서 : 포토레지스터, 조도 센서(LDR), CDS 등으로 불리며 밝아질수록 저항 값이 내려감.
- 온도 센서 : 디지털과 적외선 방식 등으로 나누어짐. 온도에 따른 저항 차이에 따라 온도 측정.
- 기울기 센서 : 수은을 통해 기울어짐에 따라 스위치가 ON/OFF 되는 방식.
- 초음파 센서 : 신호를 보낸 후 반사되어 돌아오는 시간차를 통해 거리를 측정.
- 가스감지센서 : 가스가 센서부에 달라붙을 시 저항값이 바뀌는 원리를 통해 측정.
- 인체감지센서(적외선 센서) : 센서에서 빛을 쏜 후 인체에 반사되는 적외선을 감지.
그 밖에 가속도 센서, 자이로 센서, 습도 센서, 압력 센서 등이 있다.
2. 실습
2.1 광 센서를 사용하여 LED의 불빛 세기 조절 실습
회로도
int led = 9; //led는 9번핀에 연결
int ldr = A0; //LDR은 A0핀에 연결
int val = 0; //아날로그 신호를 PWM 신호인 256단계로 바꿔주기 위한 변수
void setup()
Serial.begin(9600);
pinMode(led,
OUTPUT);
void loop()
Serial.println(analogRead(ldr)); //Serial Monitor를 통해 ldr값 확인
val = map (analogRead(A0), 0, 1023, 0, 255);
//0-1023까지의 범위로 나오는 조도센서의 신호를 0-255단계의 PWM 신호로 변환을 통해 led에 전달해야 하므로 0-1023의 숫자를 0-255로 치환하기 위한 함수이다.
Serial.println(val);
Serial.println(“---“); //Serial Monitor로 map함수를 통해 변환된 값 확인
analogWrite(led, val); //led에 빛의 세기 조절을 위한 0-255까지의 PWM 신호 전달
- 조도 센서로 부터 받은 값을 7-segment를 이용하여 0-9의 단계로 표시.
2.2 초음파 센서 동작 실습
회로도
int pin = A0; //초음파의 신호 핀을 A0로 설정.
void setup()
Serial.begin(9600); //Serial Monitor 초기화.
void loop()
long duration, inches, cm;
pinMode(pin,
OUTPUT);
//송수신부의 핀이 하나로 되어있는 타입이기 때문에 루프안에서 OUTPUT과 INPUT을 바꿔준다. OUTPUT 상태이므로 송신으로 사용한다.
digitalWrite(pin,
LOW);
delayMicroseconds(2); //2 마이크로초 동안 대기한다.
digitalWrite(pin,
HIGH);
delayMicroseconds(5); //5 마이크로초 동안 초음파를 발생시킨다.
digitalWrite(pin,
LOW);
pinMode(pin, INPUT); //송신부로 사용하던 핀을 수신으로 바꾼다.
duration = pulseIn(pin, HIGH);
//신호핀이 LOW상태에서 다시 HIGH 되기까지의 시간을 마이크로초 단위로 받는다. 즉, pulseIn함수를 통해 송신한 초음파를 수신하기까지의 시간을 구한다.
cm
= duration / 29 / 2;
inches = duration / 74 / 2;
//초음파의 속도는 초당 340m이므로 29마이크로초 당 1센치를 이동한다. 왕복이기 때문에 추가적으로 2를 나눠준다. 인치의 경우 74마이크로초 당 1인치 이동한다.
Serial.print(inches);
Serial.print("in,
");
Serial.print(cm);
Serial.print("cm");
Serial.println(); //Serial Monitor에 출력한다.
delay(100);
2.3 초음파센서를 이용하여 물체가 100cm 이하일 때, LED 동작.