안녕하세요
초음파센서와 습도센서로 서보모터 작동 후 환풍기를 돌리려고 하는데
첫번째 싸이클에서 다음으로 넘어가지 않아서 질문드립니다.
서보모터를 제외했을때는 잘 돌아가는데
서보모터를 추가하니 넘어가지 않네요....
도와주세요 ㅠㅠㅠ
아래 코드 첨부했습니다 ㅜㅜㅜ
#include
#include
#include
int trig = 8;
int echo = 9;
int pin=4; // humidity
int cool = 7;
DHT11 dht11(pin);
int stay=0;
int fan=0;
int stay_add=0;
int fan_add=254;
Servo myservo;
int pos = 0;
void setup()
{
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
Serial.begin (9600);
pinMode(cool,OUTPUT);
myservo.attach(2);
}
void loop()
{
digitalWrite(trig, LOW);
digitalWrite(echo, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
unsigned long duration = pulseIn(echo, HIGH);
float distance = duration /29.0/2.0 ; // 거리 인풋 받음
int err; // result code
float temp, humi; // temperature, humidity
if((err=dht11.read(humi, temp))==0)
{
Serial.print("temperature:");
Serial.print(temp);
Serial.print(" humidity:");
Serial.print(humi);
Serial.println();
}
else
{
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
} // 습도 받음
int stay2=EEPROM.read(stay_add);
if(distance > 50) // 500 : 임의의 기준
{
stay = 0;
}
else
{
stay = stay2 + 1;
} // stay 변수 입력
if(humi > 50) // 42 : 임의의 기준
{
fan = 1;
}
else if (stay > 2)
{
fan = 1;
}
else
{
fan = 0;
} // fan 상수 지정
Serial.print("fan const=");
Serial.println(fan);
int fan2 = EEPROM.read(fan_add);
Serial.print("fan2 const=");
Serial.println(fan2);
if(fan2==1)
{
if(fan==0)
{
myservo.write(180);
delay(1000);
digitalWrite(cool,LOW);
Serial.println("close");
}
else
{
myservo.write(90);
delay(1000);
digitalWrite(cool,HIGH);
}
}
else
{
if(fan==1)
{
myservo.write(90);
delay(1000);
digitalWrite(cool,HIGH);
Serial.println("open");
}
else
{
myservo.write(180);
delay(1000);
digitalWrite(cool,LOW);
}
}
EEPROM.write(fan_add, fan);
EEPROM.write(stay_add, stay); // 저장소에 fan, stay 상수 저장
Serial.print("distance=");
Serial.println(distance);
Serial.print("stay const=");
Serial.println(stay);
Serial.println("1 cycle end");
delay(2000);
}
|