극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기18

in #kr2 years ago

안녕하세요! Jimae입니다.

오늘은 예약포스팅을 통해서 글을 쓰고있기에 양해 부탁드립니다. ㅠㅠ

자!! 저번에 이어서 마저 시작을 하자면 데이터를 보내고 난뒤

    case DATACONFIRM:
                     while(BTSerial.available())  //BTSerial 값이 있으면
                     {
                        char blueChar = (char)BTSerial.read();  //BTSerial int형식의 값을 char형식으로 변환
//                        Serial.println(blueChar);   // 디버깅 코드
                        BlueString+=blueChar;   //수신되는 문자열을 BlueString 모두 붙임 (1바이트씩 전송되는 것을 모두 붙임)
                        delay(5);           //수신 문자열 끊김 방지
                     }
  
                     if(!BlueString.equals(""))  //myString 값이 있다면
                     {
                         if(BlueString == "ok")  
                         {
                           programStep = DATASEND;
                           BlueString="";  //BlueString 변수값 초기화
                           
                           blueTimer = millis(); 
                           previousblueTimer = blueTimer;
                           break;
                         }
                       BlueString="";  //BlueString 변수값 초기화
                     }

                     blueTimer = millis();

                     if(blueTimer - previousblueTimer > 3000)   // 3초이상 데이터 안들어올경우 대기상태로 돌아감
                     {
                        programStep = SIGNALWAITING;
                        blueTimer = millis();
                        previousblueTimer = blueTimer;
                     }
                       
                     break;

데이터를 확인하는 과정을 거칩니다.

그러기 위해서는 핸드폰 어플리케이션 쪽에서 블루투스롤 통해서 데이터를 제대로 받았으면 "ok"로 데이터를 보내주기로 약속이 되어있었습니다.

                     while(BTSerial.available())  //BTSerial 값이 있으면
                     {
                        char blueChar = (char)BTSerial.read();  //BTSerial int형식의 값을 char형식으로 변환
//                        Serial.println(blueChar);   // 디버깅 코드
                        BlueString+=blueChar;   //수신되는 문자열을 BlueString 모두 붙임 (1바이트씩 전송되는 것을 모두 붙임)
                        delay(5);           //수신 문자열 끊김 방지
                     }

그래서 우선 블루투스에 데이터를 읽고 난뒤

                    if(!BlueString.equals(""))  //myString 값이 있다면
                     {
                         if(BlueString == "ok")  
                         {
                           programStep = DATASEND;
                           BlueString="";  //BlueString 변수값 초기화
                           
                           blueTimer = millis(); 
                           previousblueTimer = blueTimer;
                           break;
                         }
                       BlueString="";  //BlueString 변수값 초기화
                     }

블루투스를 통해서 "ok" 가 제대로 들어온다면 다시한번 DATASEND 모드로 변경하는것이고 그렇지 않다면 타이머를 통해서 SIGNALWAITING 모드로 돌아가 블루투스에 데이터가 들어오길 기다리는 모드로 갈것입니다.

                     blueTimer = millis();

                     if(blueTimer - previousblueTimer > 3000)   // 3초이상 데이터 안들어올경우 대기상태로 돌아감
                     {
                        programStep = SIGNALWAITING;
                        blueTimer = millis();
                        previousblueTimer = blueTimer;
                     }
                       
                     break;

이것이 3초동안 데이터가 들어오지 않는 다면 다시 처음으로 돌아가는 루틴이죠.

중간에 블루투스의 연결이 끊길수도 있기에 이러한 조치가 필요했습니다.

왜냐하면 프로그램은 계속 돌아야 하기때문에요.

이상 글이길어졌군요. 다시한번 예약포스팅을 통해서 이렇게 글을 올리게된점 죄송합니다.

좋은하루 되세요.

극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기1
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기2
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기3
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기4
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기5
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기6
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기7
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기8
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기9
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기10
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기11
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기12
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기13
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기14
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기15
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기16
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기17

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

어지러워서 포스팅 그냥 쭉 내림;;;ㅋㅋㅋㅋㅋ

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.029
BTC 57893.29
ETH 3130.56
USDT 1.00
SBD 2.44