?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | 별개의 코드를 합치는 과정에서의 오류..

페이지 정보

작성자 빙빙이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-10-13 18:55 조회1,975회 댓글1건

본문

대학교 학부생이 '아두이노 우노' 보드를 사용하여 드론을 제작하려고 하는데

이 보드에 Multiiwii 2.4 버전과 함께 드론 제작에 사용되는 센서인 소나센서(LV-MaxSonar-EZ2)의 코드를 인터넷을 통해서 구해서 각각 별개로 작동이 되는 것을 확인하였습니다.

그래서 이 소나센서의 코드를 Multiiwii 2.4버전에서  새탭으로 열어서 추가시켜서 하나로 합치려고 하는데

컴파일 하는 과정에서 아래와 같은 오류 문구가 처음 떴습니다.

그래서 인터넷에서 해결 방법을 찾는 과정에서 'setup'과 'loop'의 오류는 새탭으로 열지않고

Multiwii 소스 코드에 직접 넣어주니까 오류가 사라졌는데 그 아래의 HardwareSerial, vector 관련 오류는 계속 발생하네요..

문구를 보면 setup과 loop가 겹치기 때문에 오류가 발생하는 것 같아 해결한 것 같고

이 외에 아래 오류를 어떻게 해결해야할지 고민이네요..

(Multiiwii 2.4 코드는 너무 많아서 첨부파일로 첨부하였고, 소나센서의 코드는 아래에 작성해놨습니다)

 

-------------------------------------------------------------------------------------------------------------

 

**처음 발생했던 오류**

 

sketch\MultiWii.ino.cpp.o (symbol from plugin): In function `setup':

 

(.text+0x0): multiple definition of `setup'

 

sketch\MultiWii.cpp.o (symbol from plugin):(.text+0x0): first defined here

 

sketch\MultiWii.ino.cpp.o (symbol from plugin): In function `setup':

 

(.text+0x0): multiple definition of `loop'

 

sketch\MultiWii.cpp.o (symbol from plugin):(.text+0x0): first defined here

 

HardwareSerial0.cpp.o (symbol from plugin): In function `Serial':

 

(.text+0x0): multiple definition of `__vector_18'

 

sketch\Serial.cpp.o (symbol from plugin):(.text+0x0): first defined here

 

HardwareSerial0.cpp.o (symbol from plugin): In function `Serial':

 

(.text+0x0): multiple definition of `__vector_19'

 

sketch\Serial.cpp.o (symbol from plugin):(.text+0x0): first defined here

 

collect2.exe: error: ld returned 1 exit status

 

exit status 1

보드 Arduino/Genuino Uno 컴파일 에러.

 

--------------------------------------------------------------------------------------------------------------

 

** 수정 후 'setup', 'loop' 관련 오류는 사라지고 아래와 같은 오류는 계속 발생 **

 

HardwareSerial0.cpp.o (symbol from plugin): In function `Serial':

 

(.text+0x0): multiple definition of `__vector_18'

 

sketch\Serial.cpp.o (symbol from plugin):(.text+0x0): first defined here

 

HardwareSerial0.cpp.o (symbol from plugin): In function `Serial':

 

(.text+0x0): multiple definition of `__vector_19'

 

sketch\Serial.cpp.o (symbol from plugin):(.text+0x0): first defined here

 

collect2.exe: error: ld returned 1 exit status

 

exit status 1

보드 Arduino/Genuino Uno 컴파일 에러.

 

--------------------------------------------------------------------------------------------------------

 

 

**소나센서(LV-MaxSonar-EZ2 / MB1020) 코드**

 

/*

This code reads the Analog Voltage output from the

LV-MaxSonar sensors

If you wish for code with averaging, please see

playground.arduino.cc/Main/MaxSonar

Please note that we do not recommend using averaging with our sensors.

Mode and Median filters are recommended.

*/

 

const int anPin1 = 0;

long distance1;

 

void setup() {

  Serial.begin(9600);  // sets the serial port to 9600

}

 

void read_sensors(){

  /*

  Scale factor is (Vcc/512) per inch. A 5V supply yields ~9.8mV/in

  Arduino analog pin goes from 0 to 1024, so the value has to be divided by 2 to get the actual inches

  */

  distance1 = analogRead(anPin1)/2;

}

 

void print_all(){

  Serial.print("S1");

  Serial.print(" ");

  Serial.print(distance1);

  Serial.print("inches");

  Serial.println();

}

 

void loop() {

  read_sensors();

  print_all();

  delay(50);

}

 

 

 

** Multiwii 2.4 버전을 첨부하려고 하였는데 용량이 커서 올라가지 않네요...

자료대신 다운받을 수 있는 링크 첨부하는 점 양해 바랍니다..

https://code.google.com/archive/p/multiwii/

댓글목록

최고관리자님의 댓글

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

아두이노에서 탭은 cpp, h 파일 개념과는 다릅니다. 그냥 ino 파일을 잘라서 분리해 두는 정도고, 컴파일 할 때 하나의 파일처럼 합쳐집니다. 그래서 cpp, h 파일처럼 생각하고 같은 변수를 각 탭마다 선언하면 컴파일 에러납니다.
일단은 하나의 ino 파일을 이용해서 코드 작성하시고 테스트 한 뒤, 나중에 컴파일 해보면서 탭으로 분할하시길 추천합니다.