Hallo stardust19322,
schau dir mal den Befehl "select case" an. Damit wäre es denke ich möglich schon sehr viel zusammen zu fassen.
Dazu die Interrupts für die zwei Taster nutzen um einmalig je eine Variable zu setzen die die Schleife abbricht oder auswählbar macht ob fading oder nicht fading.
V und V2 sind zwar sehr kurze Variablen, sie "sprechen" aber auch nicht - wenn du sie zb umbennenst in RGB_taster und Fading_taster dann sprechen sie schon etwas. Wenn du den Codeaufbau auf eine Select_Case inklusive dem Fading aufbaust dann könntest du damit sehr viel Code ein sparen. Die Farbenwahl würde ich direkt im case auswählen - also case 1 (soll rot sein), "rot = 1023, grün = 0, blau = 0". So bei jeder Farbwahl verfahren, dann braucht man kiene Rücksicht darauf beim programmieren nehmen, welche Farbe man in der if-Abfrage davor gewählt hatte. Das wäre dann das Hauptprogramm.
Da sich im Code die Anzahl der waits dadurch reduzieren müssten, wäre es möglich auch hier für die Wartezeiten Variablen zu vergeben. Ich habe zwei Zeiten gesehen - "wait 1" wird zu "wait waitms1000" oder "1sec" und waitms 10 wird zu "wait waitms10" oder "10msec" - damit hast du dann praktisch auch direkten Zugriff auf die Fadingzeiten und könntest diese dann auch mit manipulieren.
Das Fading würde ich versuchen so halten das die Bedingungen für den Durchlauf und auch der Step (2 oder -2) einfach ausgetauscht werden können. Ob das mit einem For-Next Konstrukt möglich ist sagt die Hilfe oder ein Versuch. Ich müsste es jetzt selbst nachlesen und/oder ausprobieren. Wenn es damit nicht möglich sein sollte zu tauschen, dann das Konstrukt auf etwas passendes ändern.
Diese Massnahme allein würden den Code innerhalb der beiden verschiedenen Fadings geschätzt schon auf über die Hälfte reduzieren.
Ich hoffe es wird dir helfen.
Viele Grüße
Jörg
Lesezeichen