밑에 있는 소스는 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 |