?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

아두이노 통신프로젝트 책 온습도 측정장치 코딩관련 질문드립니다.

페이지 정보

작성자 IronK 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-02-01 17:27 조회1,060회 댓글1건

본문

안녕하세요. 책을 구입해서 휴대용 온습도계를 따라서 만들고 있는데요.

온습도 센서 데이타를 불러와서 시리얼 통신으로 PC에서 값을 보여주는 테스트는 잘 되는데

책에 링크해놓으신 블루투스로 내보내도록 하는 소스가 컴파일 에러가 발생합니다.

확인해 보내 dht11 클래스를 라이브러리로 부터 상속받아서 사용할때 read함수는 매개변수가

한개만 입력하게 되어있는데 저자께서 작성해놓으신 read 함수는 인자값이 두개가 들어가도록 되어있습니다.

그리고  소스 마지막 부분에 DHT11_RETRY_DELAY 변수도 선언이 안되어있어 컴파일 시 에러가 

발생합니다. 수정된 소스 알려주시면 감사하겠습니다.  수고하세요.

 

#include <DHT11.h>
#include <SoftwareSerial.h>

int pin=5;    // 연결한 아두이노 디지털 핀 번호
DHT11 dht11(pin); 
SoftwareSerial BTSerial(2, 3); //Connect BT's TX, RX

float temp_sum = 0;
float humi_sum = 0;
int count = 0;

#define SENDING_INTERVAL 40000
unsigned long prevReadTime = 0;


void setup()
{
   Serial.begin(9600);
   BTSerial.begin(9600);
}

void loop()
{
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
    temp_sum = temp_sum + temp;
    humi_sum = humi_sum + humi;
    count = count + 1;
  }
  else
  {
    BTSerial.print("Error No :");
    BTSerial.print(err);
    BTSerial.println();    
  }
  
  if(millis() - prevReadTime > SENDING_INTERVAL) {
    BTSerial.print("thingspeak:key=xxx&field1=");
    BTSerial.print((int)(temp_sum / count));
    BTSerial.print("&field2=");
    BTSerial.print((int)(humi_sum / count));
    BTSerial.print("[*]");
    
    count = 0;
    temp_sum = 0;
    humi_sum = 0;
    prevReadTime = millis();
  }
  
  
  delay(DHT11_RETRY_DELAY); //delay for reread
}

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

라이브러리가 다른 종류로 선택된게 아닐까 싶습니다. 아래 링크의 라이브러리를 받아서 설치해서 사용해보세요.
https://drive.google.com/uc?export=download&id=0B3L4pZE60Jv0SzRsTTMxZGZNblU
라이브러리의 DHT11.h 파일에 보면 DHT11_RETRY_DELAY 값이 1000(ms)으로 설정되어 있습니다. read() 함수도 파라미터 2개(온습도)를 받습니다.