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 동작.