Quick 'n' Dirty Vorschlag, der was von Tiefpass hat.
Ich notier dir das ganze aber in C, da ich von Basecom absolut garnichts halte. (DA TOTAL INEFFIZENT!)
So, wenn du die Funktion jetzt alle 1/4 sec aufrufst (ja nicht zu oft, sonst wird die Änderung zu krass), sollte das ganze passen.Code:16 Bit variablen: currentadcval: Momentaner ADC wert preadcval: ADC wert vom Vorherigen durchlauf diff: Differenz der Werte void pwm_output(currentadcval){ if(currentadcval>preadcval){ diff=currentadcval-preadcval; PWM+=diff/4; // Faktor entsprend skalieren, aber nicht zu groß machen und immer Potenzen von 2 verwenden! (Hät den Code klein!) }else{ PWM=currentadcval; } preadcval=currentadcval; }







Zitieren
Lesezeichen