정보나눔

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

블루투스 관련하여 질문있습니다.
김동휘 | 2015-06-03

현재 제가 짠 코딩중에 void loop 5번째줄에 digital write 를 넣음으로서

블루투스에 전압이 끊어 졌을때 인식하여 A0 REDLED에 빛을 내고있는데요 

여기에서 끊어졌을때 바로 빛이 나는것이 아닌 일정시간이상 지난후 소리를 낼려면 delay를 바로위에 넣으면 되긴되는데

그렇게 되면 전체적으로 딜레이를 넣은 시간동안 텀이 생겨버려서 .. 버벅거리는 듯이 반응이 느립니다.

이런 딜레이 반응 말고 지연없이 블루투스가 차단되고 몇십초뒤에 소리가 나는 코딩을 알수있을까요?

 

 

#include <SoftwareSerial.h> 
#include <Servo.h>
SoftwareSerial BTSerial(2, 3); 
byte buffer[1024]; 
int bufferPosition; 
Servo myservo; 
int yellowLed = 12;
int redLed = A0;
int greenLed = A1;
int redState = 0;
int yellowState = 0;
int greenState = 0;

int servoState = 0;
void setup (){
  pinMode(redLed, OUTPUT);
  pinMode(yellowLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  myservo.attach(9); 
  BTSerial.begin(9600);
  Serial.begin(9600);
  bufferPosition = 0; 
}
void loop (){
  if (BTSerial.available()){
    byte data = BTSerial.read();
    Serial.write(data); 
    buffer[bufferPosition++] = data; 
    digitalWrite(A0, HIGH); 
        
        if(data == '5'){ 
      if(redState == 0){ 
        digitalWrite(A0, LOW);
    }
        }
        
           if(data == '2'){ 
      if(redState == 0){ 
        digitalWrite(A0, LOW);
    }
        }
        
            if(data == '3'){ 
      if(redState == 0){ 
        digitalWrite(A0, LOW);
    }
        }
   
        if(data == '5'){ 
      if(greenState == 0){ 
        digitalWrite(12, LOW);
    }
        }
        
           if(data == '2'){ 
      if(greenState == 0){ 
        digitalWrite(12, LOW);
    }
        }
        
            if(data == '3'){ 
      if(greenState == 0){ 
        digitalWrite(12, LOW);
    }
        }
        
                if(data == '2'){ 
      if(yellowState == 0){ 
        digitalWrite(A1, LOW);
    }
        }
        
                if(data == '3'){ 
      if(yellowState == 0){ 
        digitalWrite(A1, HIGH);
    }
        }
   
        
   
    
    if(data == '3'){ 
      if(servoState <= 120){ 
        servoState += 90; 
        myservo.write(servoState); 
        delay(150);
      }
    }
    
    if(data == '2'){  
      if(servoState >= 30){ 
        servoState -= 90;
        myservo.write(servoState); 
        delay(150);
      }
    }
  }
   else{
    digitalWrite(12, HIGH); 
    delay(150);
    
  }
 } 

이전글   |    http://kocoafab.cc/tutorial/view/297 관련 문의입니다.... 2015-06-02
다음글   |    앱인벤터 블루투스 압력센서 연동에 관한 질문입니다... 2015-06-03