Gast
#1635446
Hallo Leute, ich sitze momentan vor einem kleinen Problem. Ich möchte zwei LEDs über einen bestimmten Zeitraum automatisch faden und dabei manuell dimmen können. Dabei können beide LEDs einen unterschiedlichen Wert haben; z.B. LED1 = 52 und LED2 = 220. Wenn ich jetzt BEIDE heller oder dunkler machen möchte, kommt automatisch eine vor der anderen an die Grenze. Den Helligkeitswert (0...255) muß ich über eine Geradengleichung ausrechnen, da ein Lookuptable bei meiner Aufgabe zu umfangreich wäre. Die Gleichung sieht aus wie folgt: Ergebnis = ( ( m * x ) / 100 ) + n + Verschiebung Dabei sind m (-200...+200) und n (0...255) fix ;x ist die Zeit. Die Verschiebung stellt nun meine Helligkeit höher oder tiefer WÄHREND des fadens. Das Problem ist, dass ich jedes mal über die Grenze hinausschiesse und der uc alles macht; nur nie das Richtige ;-). Für meine Grenzen habe ich if ( Ergebnis > 255 ) OCR1A = pgm_read_word( &pwmtable_16 [255] ); if ( Ergebnis < 0 ) OCR1A = pgm_read_word( &pwmtable_16 [0] ); if ( Ergebnis > 255 ) OCR1B = pgm_read_word( &pwmtable_16 [255] ); if ( Ergebnis < 0 ) OCR1B = pgm_read_word( &pwmtable_16 [0] ); Kann mir einer erklären, warum die Grenzen NICHT beachtet werden und der uc jedes mal son Mist macht? Wäre schön, wenn einer ne Idee hat. LG Jens