PWM ist nichts anderes als HIGH und LOW und das eben mit verschiedenen An- und Aus-Zeiten (Duty cycle) und Werten zwischen 0 (=DauerAus) und 255(= DauerAn). Eine "echte" analoge Ausgabe hat der Arduino Uno nicht.
Also sollte eigtl. auch die PWM-Ansteuerung noch funktionieren.
Zur Not kann man die IR-Signale aber auch händisch mit der Funktion microseconds() und einem delay realisieren.
Das würde dann z.B. so aussehen:
int pin = 13;
int freq = 38;
void wait(unsigned int time)
{ unsigned long start = micros();
while(micros()-start<=time)
}
void high(unsigned int time, int freq, int pinLED)
{ int pause = (1000/freq/2)-4;
unsigned long start = micros();
while(micros()-start<=time)
{ digitalWrite(pinLED,HIGH);
delayMicroseconds(pause);
digitalWrite(pinLED,LOW);
delayMicroseconds(pause);
}
}
void IRCommand(void)
{ high(2000,freq,pin); wait(27830);
high(390,freq,pin); wait(1580);
high(410,freq,pin); wait(3580);
high(400,freq,pin);
}
void setup()
{ pinMode(pin, OUTPUT);
}
void loop()
{ IRCommand();
// delay(5000);
}
Ich würde aber erstmal testen, ob das Problem nicht woanders liegt.