2016. 2. 8. 01:20
부품 테스트 - 센서 작품/쿼드콥터2016. 2. 8. 01:20
센서는 다음 모델을 썼습니다.
EBIMU-9DOFV2
간단하게 출력 테스트를 해봤는데요. EBIMU-9DOFV2는 roll, pitch, yaw 데이터를 문자열로 줍니다.
센서를 아두이노와 연결하여 데이터가 나오는지 확인해 보았습니다.
위 영상의 코드는 아래와 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include "SoftwareSerial.h" #define SIZEOFSIGN 4 #define DATANUMBER 22 #define ROLL 0 #define PITCH 1 #define YAW 2 #define STARTBITNUM 2 SoftwareSerial mySerial(2,3);//Rx Tx int s = 0, d = 0, data_ok = 0; int start_bits[STARTBITNUM], data_bits[DATANUMBER*2]; char data; int i = 0; void setup() { Serial.begin(115200); mySerial.begin(57600); } void loop() { if(mySerial.available()){ data= mySerial.read(); Serial.print(data); } } | cs |
다음으로 제대로된 값이 나오는 지 확인하기 위해서
센서의 출력을 "SerialChart"라는 프로그램을 이용하여 그래프로 나타내어 보았습니다.
그러기 위해서는 문자열로 된 데이터를 roll, pitch, yaw 별로 숫자로 변환해 주어야 했습니다.
위 코드의 영상은 아래와 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #include "SoftwareSerial.h" SoftwareSerial mySerial(2,4);//Rx Tx char data[40]; int i = 0; double roll, pitch, yaw; void printAll(char* ch) { int n; for(n=0; n<i; n++){ Serial.print(ch[n]); } Serial.println(""); } void trans_ascii_to_num(char * SBuf, double * DegRoll, double * DegPitch, double * DegYaw) { int value, value2; value=FindComma(SBuf); //Serial.print(value); SBuf[value]='\0'; *DegRoll=atof(SBuf); value++; value2=FindComma(&SBuf[value]); SBuf[value+value2]='\0'; *DegPitch=atof(&SBuf[value]); value=value+value2+1; value2=FindComma(&SBuf[value]); SBuf[value+value2]='\0'; *DegYaw=atof(&SBuf[value]); Serial.print(*DegRoll); Serial.print(", ");Serial.print(*DegPitch); Serial.print(", ");Serial.println(*DegYaw); } int FindComma(char * buf) { int n; for(n=0;n<40;n++) { if(buf[n]==',') break; } return n; } void setup() { Serial.begin(115200); mySerial.begin(57600); } void loop() { if(mySerial.available()){ data[i]= mySerial.read(); i++; if(data[i-1] == 0x0A) data[i-1] = ','; if(data[i-1] == '*'){ // printAll(data); trans_ascii_to_num(data, &roll, &pitch, &yaw); i=0; } } } | cs |
'작품 > 쿼드콥터' 카테고리의 다른 글
조립 후 테스트 (0) | 2016.02.08 |
---|---|
하드웨어 조립 (0) | 2016.02.08 |
부품 테스트 - 배터리 (0) | 2016.02.08 |
부품테스트 ESC 및 BEC (0) | 2016.02.08 |
부품 주문 (0) | 2016.02.08 |