2 Libaries mit dem selben Timer

Moin,

nachdem ich mein PWM Problem scheinbar gelöst habe kommt nun das nächste.

Scheinbar nutzen die SoftPWM und die IRremote Libary den selben Timer,da ich nicht tief genug in der materie stecke um mich an die Timer ran zu wagen frage ich einfach mal ob jemand damit erfahrung hat oder evtl. sogar n Workaround :wink:

LG

Timme

#include <SoftPWM.h>
#include <IRremote.h>

int Array[12] = {255,255,255,255,255,255,255,255,255,255,255,255};
int Update = 1;
int on = 1;
int IRpin = 14;  // Digitales Signal von Pin 14 abgreifen

IRrecv irrecv(IRpin);
decode_results results;




void setup(){
   pinMode (15, OUTPUT);  // Pin 13 (LED) als Ausgang festlegen
   irrecv.enableIRIn(); // IR Empfaenger starten
   
  SoftPWMBegin();
  
  SoftPWMSet(2, 0);
  SoftPWMSet(3, 0);
  SoftPWMSet(4, 0);
  SoftPWMSet(5, 0);
  SoftPWMSet(6, 0);
  SoftPWMSet(7, 0);
  SoftPWMSet(8, 0);
  SoftPWMSet(9, 0);
  SoftPWMSet(10, 0);
  SoftPWMSet(11, 0);
  SoftPWMSet(12, 0);
  SoftPWMSet(13, 0);

  
 }

void loop(){
  
if (Update == 1){
  _UpdatePWM();
  }

 if (irrecv.decode(&results)) 
 {
 
 irrecv.resume(); // Das Signal empfangen
 }
 
 switch(results.value) // Abhaengig vom Signal in den richtigen Modus springen
 {
 
 case 16712445:// On/Off
    if (on == 1){
      _SetArray(000,0);
    }
    else{
      _SetArray(000,255);
    }
 break;
 
 case 16726725: // +
 _SetArray(000,999);
 break;
 
 case 16759365: // -
 _SetArray(000,888);
 break;

 }
 
}


void _SetArray(int ch, int hex_value){
    if (ch == 000){
      switch (hex_value){
        Update = 1;
      
        case 999:
          
          for (int i = 0; i <= 11; i++){
            if ( Array[i] <= 250 ){
              Array[i] = Array[i]+5;
            }
             else{
             Array[i] = 255;
             }  
             
          }
         
        case 888:
          for (int i = 0; i <= 11; i++){
            if ( Array[i] >= 5 ){
              Array[i] = Array[i]-5;
              Update = 1;
             } 
              else{
              Array[i]= 0;
              } 
             
          }
          
        case 1 ... 255:
          for (int i = 0; i <= 11; i++){
            Array[i] = hex_value;
             }          
      }
    
    }
}


void _UpdatePWM(){
int  Array_cor = 2;
for (int i = 0; i <= 11; i++){
  Array_cor++;
  SoftPWMSet(Array_cor, Array[i]);
}
Update = 0;
}

Arduino: 1.8.0 (Windows 7), Board: “Arduino Nano, ATmega328”

libraries\Arduino-IRremote-master\IRremote.cpp.o (symbol from plugin): In function `MATCH(int, int)’:

(.text+0x0): multiple definition of `__vector_7’

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

collect2.exe: error: ld returned 1 exit status

exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.

Dieser Bericht wäre detaillierter, wenn die Option
“Ausführliche Ausgabe während der Kompilierung”
in Datei → Voreinstellungen aktiviert wäre.

combie:
Bei mir werkelt ein PCA9685 .
Das ist die BESTE Lösung.

Und jetzt kennst du auch einen der Gründe mehr.

da ich nicht tief genug in der materie stecke um mich an die Timer ran zu wagen

Wer nicht wagt, der nicht gewinnt.

Ok ich glaube ich hab die Lösung gefunden, in der boarddefs.h
dieser Lib version kann man den gewünschten Timer auswählen...

LG

Timme