---------------------------------------------------------------------------------
온습도계 모델명 dht-11입니다. 많이 쓰는 것 같더군요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #define dht11_pin 54 // 아두이노 2560 Mega에서 A0(Analog 0)핀의 번호입니다. ........ long cm, inch; // cm, inch를 long 타입으로 전역변수 선언 byte read_dht11_dat() // 데이터 읽어오기 함수 선언 센서에서는 8bit씩 데이터가 전송됩니다. 총 40bit { byte i = 0; byte result=0; for(i=0; i< 8; i++) { while (!digitalRead(dht11_pin)); delayMicroseconds(30); if (digitalRead(dht11_pin) != 0 ) bitSet(result, 7-i); while (digitalRead(dht11_pin)); } return result; } void setup() { //핀 초기화 pinMode(dht11_pin, OUTPUT); digitalWrite(dht11_pin, HIGH); } void loop(){ byte dht11_dat[5]; byte dht11_in; byte i;// start condition digitalWrite(dht11_pin, LOW); delay(10); digitalWrite(dht11_pin, HIGH); delayMicroseconds(1); pinMode(dht11_pin, INPUT); delayMicroseconds(40); if (digitalRead(dht11_pin)) { Serial.println("dht11 start condition 1 not met"); // wait for DHT response signal: LOW delay(1000); return; }//dht 연결 확인 및 오류 출력 delayMicroseconds(80); if (!digitalRead(dht11_pin)) { Serial.println("dht11 start condition 2 not met"); //wair for second response signal:HIGH return; }//dht 연결 확인 및 오류 출력 delayMicroseconds(80);// now ready for data reception for (i=0; i<5; i++) { dht11_dat[i] = read_dht11_dat(); } //위의 함수 호출 pinMode(dht11_pin, OUTPUT); digitalWrite(dht11_pin, HIGH); byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];// check check_sum if(dht11_dat[4]!= dht11_check_sum) { Serial.println("DHT11 checksum error"); } } |
dht-11 온습도 센서 |
사진에 보시면 VCC,GND,S 3개의 단자가 있습니다. 센서에 대한 설명이 나와있는 pdf를 읽어보면
VCC :허용전력이 3~5.5V인만큼 아두이노의 3.3V나 5V 출력 단자에 연결을 하고
GND는GND에 그리고
Signal단자는 자신이 설정할(한) 단자에 연결을 해주시면 됩니다. 저는 A0에 연결하였습니다.
아두이노에서의 코드입니다. 인터넷에 검색하면 많이 나오는 흔한 코드입니다.
댓글 없음:
댓글 쓰기