정보나눔

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

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

안녕하세요

 

초음파센서와 습도센서로 서보모터 작동 후 환풍기를 돌리는 코드에 대해 질문드렸었는데요

 

싸이클이 반복되지 않아 서보모터를 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);

}

이전글   |    구름 조명 프로젝트 질문입니다. 2016-06-04
다음글   |    구름 조명(완성) 제작중 질문 드립니다 2016-06-07