BASIC4MCU | 질문게시판 | 아두이노 온습도 센서로 모터 구동 및 속도조절 질문입니다
페이지 정보
작성자 굥태굥태 작성일2020-12-14 15:46 조회26,080회 댓글3건본문
안녕하세요, 아두이노로 요즘 열심히 코딩(?)과 전기회로 공부를 하고 있는 한 고등학생입니다.
하다가 막히는 부분이 있어서 가입 후 질문드리러 왔습니다.
아두이노 우노 보드 1개 + DC모터 1개 + DHT11온습도 센서 1개 + 기타등등(트랜지스터,저항,전선)
이 구성품으로 온습도를 재서 일정 온도나 습도 이상 되면 DC모터가 작동하는걸 해보고싶습니다.
세부사항은 다음과 같습니다.
1. DHT11을 이용하여 온습도 측정, 시리얼 모니터에 표기
2. 온도가 28을 넘어가거나, 습도가 45넘어갈 때 DC모터가 작동
3. 온도가 더 높아지거나, 습도가 더 높아질 수록 DC모터의 회전속도가 빨라지게
이 세가지 조건으로만 실험해보려고 합니다.
기존에 아두이노-DC모터 돌려보는건 했었고, 아두이노-DHT11온습도센서 작동하는것도 해보았는데
둘을 연결시키려 하니 전선을 어디에 꽂아야할지 모르겠고 코딩도 어떻게 작성해야하는지 모르겠습니다.
우선 제가 작성했던 코드를 올려놓겠습니다. 잘 부탁드립니다!
그리고 첨부사진은 제가 온습도측정을 할때 썼던 회로 구조입니다.
#include <DHT11.h>
int pin = A1;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
}
void loop()
{
int err;
float temp, humi;
if ((err = dht11.read(humi, temp)) == 0)
{
Serial.print("온도 = ");
Serial.print(temp);
Serial.print(", 습도 = ");
Serial.print(humi);
Serial.print("%");
Serial.println();
}
else
{
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
}
delay(DHT11_RETRY_DELAY); //delay for reread
if (humi>=18)
{
Serial.print("습도가 높다");
Serial.println();
}
if (temp>=28)
{
Serial.print("온도가 높다");
Serial.println();
}
else
{
}
}
댓글 3
조회수 26,080master님의 댓글
master 작성일아두이노-DC모터 예제소스는 어디에 있나요?
master님의 댓글
master 작성일
#include <DHT11.h>
//
int pin=A1;
int motorPin=9;
//
DHT11 dht11(pin);
//
void setup(){
pinMode(motorPin,OUTPUT);
Serial.begin(9600); while(!Serial){}
}
//
void loop(){
int err;
float temp,humi;
//
if((err=dht11.read(humi,temp))==0) {
Serial.print(" 온도="); Serial.print(temp);
Serial.print(",습도="); Serial.print(humi); Serial.print("%"); Serial.println();
}
else{
Serial.println();
Serial.print("Error No :"); Serial.println(err);
}
//
if(humi>=18){ Serial.println("습도가 높다"); }
if(temp>=28){ Serial.println("온도가 높다"); }
//
if(Serial.available()){
int speed=Serial.parseInt();
if(speed >=0 && speed <=255){ analogWrite(motorPin,speed); }
}
//
delay(DHT11_RETRY_DELAY);
}
단순히 합치기만하면 위처럼 됩니다.
master님의 댓글
master 작성일
#include <DHT11.h>
//
int pin=A1;
int motorPin=9;
//
DHT11 dht11(pin);
//
void setup(){
pinMode(motorPin,OUTPUT);
Serial.begin(9600); while(!Serial){}
}
//
void loop(){
int err;
float temp,humi;
//
if((err=dht11.read(humi,temp))==0) {
Serial.print(" 온도="); Serial.print(temp);
Serial.print(",습도="); Serial.print(humi); Serial.print("%"); Serial.println();
}
//
if (humi>=45 && temp>=28){ Serial.println("온도 및 습도가 높다"); analogWrite(motorPin,255); }
else if(temp>=28 || temp>=28){ Serial.println("온도 또는 습도가 높다"); analogWrite(motorPin,100); }
else { Serial.println("온도 및 습도가 낮다"); analogWrite(motorPin, 0); }
//
delay(DHT11_RETRY_DELAY);
}