정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

싸이클 질문드립니다.
신기섭 | 2016-06-03

안녕하세요

 

초음파센서와 습도센서로 서보모터 작동 후 환풍기를 돌리려고 하는데

 

첫번째 싸이클에서 다음으로 넘어가지 않아서 질문드립니다.

 

서보모터를 제외했을때는 잘 돌아가는데

 

서보모터를 추가하니 넘어가지 않네요....

 

도와주세요 ㅠㅠㅠ

 

아래 코드 첨부했습니다 ㅜㅜㅜ

 

 

#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);

}

이전글   |    오렌지보드에 소스업로드 오류 2016-06-03
다음글   |    고급자료실에 있는 433 RF모듈 LED 실습에 대한 질문입니다.... 2016-06-03