Koflikt

Hallo,

möchte mit einem Mega in einem Programm IR-Signale empfangen aber auch per Utraschall Entfernung messen. Separat funktioniert beides. Packe ich jedoch beie Biblitheken in ein Programm, streikt Arduino 1.5.7, was ich noch verwende.

Hier mal fix der Code:

#include <NewPing.h>   // Ultraschall-Bibl. einbinden
#include <IRremote.h>  // IR-Bibl. einbinden
void setup() {}
void loop() {}

Leider kommt dann beim Compilieren folgende Fehlermeldung:

IRremote\IRremote.cpp.o: In function `__vector_13':
C:\Program Files (x86)\Arduino\libraries\IR_Remote/IRremote.cpp:124: multiple definition of `__vector_13'
NewPing\NewPing.cpp.o:C:\Program Files (x86)\Arduino\libraries\NewPing/NewPing.cpp:284: first defined here
/Arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.8.1/../../../../avr/bin/ld: Disabling relaxation: it will not work with multiple definitions
collect2: error: ld returned 1 exit status

In der newping.h habe ich nichts mit "Vector_13" gefunden. Wo muss ich suchen bzw. was muss ich ändern?

Gruß
RaLach

__vector_13

Das dürfte der 13te Interruptvector in der Tabelle sein.

Hallo,
ich würde in den Lib`s mal nach "gleichen" Pin´s, IRQ und Timer suchen.
Gruß und Glück
Andreas

Vorschlag um dem Fehler nach und nach auf die Schliche zu kommen.
Arbeite mit den US-Sensoren vorläufig ohne die Library.
Ist nicht kompliziert.
Beispiel findest du hier

Bin noch nicht so tief in der Materie, dass mir die Info weiterhilft. Wo finde ich diese Tabelle, wie kann ich das Problem lösen?

Das mit dem direkten Programmieren der US-Sensoren ist ne famose Idee. Danke. Werde ich morgen gleich umsetzen.

Ralach:
Bin noch nicht so tief in der Materie, dass mir die Info weiterhilft. Wo finde ich diese Tabelle, wie kann ich das Problem lösen?

Mach es manuell (Post #3) undd wenn es geht, kannst du dich an die Library rantasten.

Edit:

Ok, hat sich überschnitten.

Ralach:
Bin noch nicht so tief in der Materie, dass mir die Info weiterhilft. Wo finde ich diese Tabelle,

In der Datei iomxx0_1.h findest du deinen Vector 13
Bei mir in: E:\Programme\Arduino\hardware\tools\avr\avr\include\avr

wie kann ich das Problem lösen?

Einen der Konkurrenten dazu zwingen, dass er nicht mehr Timer2 nutzt, sondern einen anderen.

Für den Laien

Die zwei Bibliotheken benutzen jeweils den selben Timer und das geht schief.

So als ob du und dein Vater das Auto gemeinsam steuern wollen. Einer muss nachgeben :slight_smile:

Bei quelloffenem Code kann man das aber lösen durch benutzen eines anderen Timers. Erfordert aber Geduld und Hirnschmalz. Aber das sollte man sowieso haben, wenn man sich mit Microcontrollern beschäftigt.