정보나눔

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

Light Application_Arduino ver[PART 2] _ 소스코드..
이형섭 | 2016-11-03

밑에 있는 소스는 led 네오픽셀을 빼고 만들어보려고 led내용만 빼고 해본건데요

모터가 말을 듣질 않습니다.. 컴파일에는 문제가 없는데 어디가 잘못된 걸까요..

 

 

#include <DHT11.h>
                // 온도센서 라이브러리

#include <SoftwareSerial.h>
       // 소프트웨어 씨리얼 라이브러리(블루투스용)
 
#define PIN A3
 
DHT11 dht11(6);                  // 온도센서 데이터 핀
SoftwareSerial BTSerial(2, 3);   // 블루투스 통신전용 핀 (RX, TX)

 
int BA = 9;
int DA = 12;
int PA = 3;
int light;
int i;
int sum;
int a,b;
int flag = 0;
int address = 0;
int err;
int BT;
float temp, humi;
char data;
 
void setup()
{
 
  Serial.begin(115200);
  BTSerial.begin(9600);
  pinMode(PA, OUTPUT);
  pinMode(DA, OUTPUT);
  pinMode(BA, OUTPUT);
  //strip.begin();
  //strip.show();
  light = analogRead(A4);
  if(light < 500){flag = 0;}
  else if(light >= 500){flag = 1;}
  Serial.println("Mode Select!!");
}
 
void loop()
{
  if(BTSerial.available())                 // 블루투스로 자동모드와 수동모드 설정
  {
    Serial.println((char)BTSerial.read());
    if(BTSerial.read() == '1')             // 블루투스로 '1'의 값이 들어올 경우
    {
      Serial.println("Auto Mode");         // 라이트어플리케이션 자동모드 사용
      while(1)
      {      
      Serial.println("Type,\tstatus,\tHumi(%),\tTemp(C),\tBrg");
      data = BTSerial.available();
      Sensing();
      Auto_Mode();
      //Led_Control();
      if(data == '1')break;                // 블루투스로 '1'의 값이 또 들어올 경우 자동모드 해제
      }
    }
    else if(BTSerial.read() == '2')        // 블루투스로 '2'의 값이 들어올 경우
    {
      Serial.println("Hand Mode");         // 라이트어플리케이션 수동모드 사용
      while(1)
      {      
      Serial.println("Type,\tstatus,\tHumi(%),\tTemp(C),\tBrg");
      data = BTSerial.available();
      //Led_Control();
      Sensing();
      Hand_Mode();
      if(data == '2')break;                 // 블루투스로 '2'의 값이 또 들어올 경우 수동모드 해제
      }      
    }
  }  
}
 
void Sensing()
{
  // READ DATA
  if((err=dht11.read(humi, temp))==0)
  {
    Serial.print("temperature:");
    Serial.print(temp);
    Serial.print(" humidity:");
    Serial.print(humi);
    Serial.print("");
  }
  else
  {
    Serial.println();
    Serial.print("Error No :");
    Serial.print(err);
    Serial.println("");    
  }
  Serial.print("  ");
  Serial.print(analogRead(A4));
  Serial.print("  ");
  delay(1000);
}
 
void Hand_Mode()                // 라이트 어플리케이션 수동모드
{
  while(!BTSerial.available())  // 블루투스 데이터 값이 들어올 때까지 동작 대기
  if(BTSerial.available())      // 블루투스 데이터가 수신 될 경우
  {
    BT = BTSerial.read();       // 블루투스로 수신된 데이터를 BT 변수에 저장
    if(BT == 'd'&& flag == 0)   // BT에 저장된 값이 d이며, 플래그가 0일 경우
    {
      Cutton_On();              // 커튼 동작 함수
      flag = 1;                 // 플래그 SET
    }
    else if(BT == 'u'&& flag == 1) // BT에 저장된 값이 u이며, 플래그가 1일 경우
    {
      Cutton_Off();                // 커튼 동작 함수
      flag = 0;                    // 플래그 RESET
    }
    else
    {
    }
  }
    
}
void Auto_Mode()
{
  light = analogRead(A4);
 
  if(light < 500 && flag == 0)
  {
    Cutton_On();
    flag = 1;
    Serial.println(flag);
  }
  else if(light >= 500 && flag == 1)
  {
    Cutton_Off();
    flag = 0;
    Serial.println(flag);
  }
}
 
 
void Cutton_On()
{
  digitalWrite(DA,HIGH);
  digitalWrite(PA,HIGH);
  digitalWrite(BA,LOW);
  delay(7000);
  digitalWrite(BA,HIGH);  
}
void Cutton_Off()
{
  digitalWrite(DA,LOW);
  digitalWrite(PA,HIGH);
  digitalWrite(BA,LOW);
  delay(7000);
  digitalWrite(BA,HIGH);   
}

이전글   |    12V전원을 써서 LED 바 제어시 문제!! ^^ 2016-11-03
다음글   |    Temboo를 이용한 메일전송관련입니다 ㅠㅠ 이런에러가 나옵니다 ㅠㅠㅠ 어떤이유일까요... 2016-11-03