안녕하세요
초음파센서와 습도센서로 서보모터 작동 후 환풍기를 돌리는 코드에 대해 질문드렸었는데요
싸이클이 반복되지 않아 서보모터를 2번핀이 아닌 다른핀에 꽂으라 하셔서 11번핀에 꽂고 돌렸는데
초음파 센서로 서보모터와 환풍기를 작동시키고 다시 닫았을 때 다시 싸이클이 멈춥니다...
뭐가 문제인지 모르겠어서 답답한데 도와주시면 감사합니다 ㅜㅜㅜ
#include<EEPROM.h>
#include <DHT11.h>
#include <Servo.h>
int trig = 8;
int echo = 9;
int pin=6; // humidity
int cool = 7;
DHT11 dht11(pin);
int stay=0;
int fan=0;
int stay_add=20;
int fan_add=21;
Servo myservo;
void setup()
{
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
Serial.begin (9600);
pinMode(cool,OUTPUT);
myservo.attach(11);
}
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 > 13) // 500 : 임의의 기준
{
stay = 0;
}
else
{
stay = stay2 + 1;
} // stay 변수 입력
if(humi > 45) // 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);
digitalWrite(cool,LOW);
}
else
{
myservo.write(90);
digitalWrite(cool,HIGH);
}
}
else
{
if(fan==1)
{
myservo.write(90);
digitalWrite(cool,HIGH);
}
else
{
myservo.write(180);
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(3000);
}
|