-
In function `__vector_7':
539: multiple definition of `__vector_7'
/home/circuits/Arduino/libraries/IRremote/src/irremote126 first defined here
error: ld returned 1 exit status
exit status 1해당 오류는 iRremote와 piezo를 동시에 사용할 때, 타이머에서 오류가 발생하면 표시되는 오류이다.
#include<IRremote.h> IRrecv ir(6); //ir센서가(출력) 연결된 곳 decode_results results; void setup() { ir.enableIRIn(); //적외선센서활성 pinMode(2, OUTPUT); pinMode(3, INPUT); Serial.begin(4800); } void loop() { analogWrite(11, 0); //led빨 analogWrite(10, 0); //led파 analogWrite(9, 0); //led초 analogWrite(13, 0); //피에조 digitalWrite(2, HIGH); delayMicroseconds(10); digitalWrite(2, LOW); long duration = pulseIn(3, HIGH); if (duration == 0) { return; } long distance = duration / 58.2; int hertz = map(duration, 0, 1023, 20, 4000); //저항값과 부저의 주파수의 범위가 달라서, 가변저항의 값인 0~1023 //부저의 주파수값인 20~4000을 매핑시키는 함수. //0~1023인 가변저항값이랑 20~4000의 부저값을 매핑시킨다는 의미. if (distance < 50) { analogWrite(11, 255); delayMicroseconds(2); tone(13, hertz, 100); } else if (distance < 100) { analogWrite(10, 255); delayMicroseconds(2); tone(13, hertz, 100); } else if (distance < 200) { analogWrite(9, 255); delayMicroseconds(2); } // delay(100); }
해당 오류가 발생했던 코드이다. 여기서 loop문의 tone을 digitalWrite(piezo, HIGH); 으로 변경해서 소리의 값 출력을 하나로 통일시켜 주어야 했다. 하지만 이렇게 되면 내가 원하는 형식의 거리마다 차별을 주는 소리의 크기 출력값을 변경하지 못했다.
이 문제의 경우 circuits의 환경에서는 수정이 불가해서, 상단에 기재한 digitalWrite를 사용하거나, circuits 환경이 아닌, IDE환경이나 cpp 환경에서는 수정이 가능한 오류이다. (라이브러리 수정을 통해)
해당 참고용 링크를 하단에 남긴다.
IDE 설정 ::
CPP 환경 설정 ::
'개발 > Arduino' 카테고리의 다른 글
아두이노_프로젝트. 04. 아두이노 프로젝트 정리. (0) 2020.12.06 아두이노_프로젝트. 03. 구현 오류. loop문의 실행이 한 번만 될 때. (0) 2020.12.02 아두이노_프로젝트. 01. tinkercad-circuits 이용하기 및 설계 (팀) (0) 2020.12.02 댓글 (비로그인 댓글 허용하지 않습니다.)