7. 실제 세계와의 통로 센서 정보영재 석사 김석전
센서 소개 아날로그 센서 CdS 조도 센서 디지털 센서 온습도 센서, 화염감지, 기울기, 진동, 초음파 등 - 대부분 아날로그 측정값이나 인터페이스는 디지털
밝기 감지 하기 CdS(황화 카드뮴) 조도 센서 사용 밝으면 저항값이 작아지고, 어두워지면 저항값이 커진다. 빛up ->저항 down->high V input 빛down ->저항 up ->low V input 입력 : CdS 조도센서 출력 : LED
하드웨어 세팅 입력세팅 : 센서값은 저항값으로 아날로그로 입력되므로 A0에 연결하고 Vcc를 걸어준다. 10K보호저항을 연결하고 Gnd에 연 결해 준다. 출력 세팅 : 펄스폭변조가능한 포트 D11번에 LED연결하고 보호 저항 1K를 연결한다. Gnd에 연결해 준다.
알고리즘 CdS입력핀 0으로 정하기 LED출력핀 11번으로 정하기 시리얼 통신정하기 LED 출력 정하기 지연 주기
코딩 int lightPin = 0; int ledPin = 11; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); } void loop() Serial.println(analogRead(lightPin)); analogWrite(ledPin, analogRead(lightPin)/2); delay(10);
온습도 감지하기 입력 : DHT11 온도, 습도 동시측정은 아님 서로 배타적으로 측정값을 읽어 들임. 0~50도, 20%~90% 출력 : 시리얼통신을 통해 출력한다. 1초마다 한번씩 온도와 습도 값을 읽어 올 수 있음. 센서를 사용하기위해선 라이브러리를 다운받아야 함.
DHT11 라이브러리 다운 받기 http://playground.arduino.cc/main/DHT11Lib C:\Program Files (x86)\Arduino\libraries\DHT11 폴더 만들 기 Dht11.h, dht11.cpp파일을 폴더로 옮겨준다.
하드웨어 세팅 정면방향일경우 : 1번 핀 : Vcc 2번핀 : 데이터 신호 3번핀 : 사용 안함 4번핀 : GND 2번 : pwm 2번 – 저항4.7k – 5v 3번 : 사용안함 4번 : Gnd
알고리즘 Dht11에서 데이터 시그널을 pwm2번으로 입력 받는다. 1초이상 의 지연 시간이 필요함. 읽어들인 값이 ok, checksum error, timeout, unknown 중에 하 나로 표시하기 읽어들인 값을 시리얼 통신으로 출력한다. 습도와 온도 표시하기를 무한 반복
코딩 #include <dht11.h> #define DHT11PIN 2 dht11 DHT11; void setup() { Serial.begin(9600); Serial.println("DHT11 TEST PROGRAM "); Serial.print("LIBRARY VERSION: "); Serial.println(DHT11LIB_VERSION); Serial.println(); } void loop() Serial.println("\n"); int chk = DHT11.read(DHT11PIN); Serial.print("Read sensor: "); switch (chk) { case DHTLIB_OK: Serial.println("OK"); break; case DHTLIB_ERROR_CHECKSUM: Serial.println("Checksum error"); case DHTLIB_ERROR_TIMEOUT: Serial.println("Time out error"); default: Serial.println("Unknown error"); } Serial.print("Humidity (%): "); Serial.println((float)DHT11.humidity, 2); Serial.print("Temperature (°C): "); Serial.println((float)DHT11.temperature, 2); delay(2000); 코딩
화재 감지하기 화염의 파장을 인식하여 감지하고, 감지된 신호를 아두이노 디 지털 입력으로 인식하여 출력하는 실습 센서값이 기준 전압보다 작으면 low 센서값이 기분 전압보다 크면 high 입력 받은 low, high값을 이용해 led ON/OFF를 설정해 준다. 결국 불이 났으면 LED가 ON되고, 평상시는 OFF이다.
하드웨어 세팅 센서 1번핀 : 데이터값, 2번핀 : GND, 3번핀 : Vcc 1번핀 : D2 2번핀 : GND LED : D3 – 저항 1k - GND
알고리즘 Led는 3번으로, 센서는 2번으로 설정 Led는 output, 센서는 input으로 설정 센서 디지털 입력이 low이면 led출력을 high로 아니라면 led출 력을 low설정하여 무한 루프
코딩 int led = 3; int sensor = 2; void setup() { pinMode(led, OUTPUT); pinMode(sensor, INPUT); } void loop() if( digitalRead(sensor) == LOW ) digitalWrite(led, HIGH); else delay(100); 코딩