?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

소프트웨어 시리얼 관련 질문드립니다.

페이지 정보

작성자 니나니나노 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-05-11 23:20 조회772회 댓글1건

본문

현재 우노 하나로 마이크로 2개에서 전송하는 블루투스 값을 읽어 오려 하는데 안되서 조언을 구하고자 합니다.

#include <SoftwareSerial.h>
SoftwareSerial BTkangjung(2,3);
SoftwareSerial BTTeam(4,5);

uint32_t preVal[7];
uint32_t preVal1[7];

union
{
  byte bVal[4];
  uint32_t Val;
}data[7];

union
{
  byte bVal1[4];
  uint32_t Val1;
}data1[7];

void setup()
{
  Serial.begin(9600);
  BTkangjung.begin(9600);
  BTTeam.begin(9600);  
}

void loop()

  BTkangjung.listen();
  unsigned char n;
  
  if(BTkangjung.available())
  {
      for(n=0;n<7;n++)
      {
        if( BTkangjung.read() == 's' )
        {
            n = BTkangjung.read();

            if(n<255)
            {
              data[n].bVal[0] = BTkangjung.read();
              data[n].bVal[1] = BTkangjung.read();
              data[n].bVal[2] = BTkangjung.read(); 
              data[n].bVal[3] = BTkangjung.read();
 
              if( data[n].Val > 1024 )
                  data[n].Val = preVal[n];
              else
                  preVal[n] = data[n].Val;

              Serial.print(n); Serial.print(". "); Serial.println(data[n].Val);
            }
         }
      }
     delay(40);
   }

   BTTeam.listen();
   unsigned char i;
   
   if(BTTeam.available())
   {
      for(i=0;i<7;i++)
      {
        
        if( BTTeam.read() == 's' )
        {
            i = BTTeam.read();

            if(i<255)
            {
              data1[i].bVal1[0] = BTTeam.read();
              data1[i].bVal1[1] = BTTeam.read();
              data1[i].bVal1[2] = BTTeam.read(); 
              data1[i].bVal1[3] = BTTeam.read();
 
              if( data1[i].Val1 > 1024 )
                  data1[i].Val1 = preVal1[i];

              else
                  preVal1[i] = data1[i].Val1;

              Serial.print(i); Serial.print("1. "); Serial.println(data1[i].Val1);
            }
         }
      }     
       delay(40);
   }
}   
 

 

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

SoftwareSerial 을 2개 사용하는 경우 문제가 발생할 수 있다고 들었습니다. 하나를 하드웨어 시리얼(D0, D1)으로 교체해서 테스트 해보시는게 어떨까 싶습니다.