fade out , stay on, fade in

Hallo zusammen,

ich versuche seit einiger zeit mein eigenes RGB Led programm zu schreiben.
Ich habe mir vorgestellt bei “schwarz” anzufangen. Mit rot “fade out” geht es dann richtig los (timer setzen), nach dem faden soll die rote Led aber an bleiben (timer setzen).
Jetzt soll die gruene Led aufleuchten “fade out” (timer setzen) während die rote noch an ist (so hab ich dann schon die farbe gelb). Als nächstes rot “fade in” grün soll aber weiter an sein… das alles mit grün und blau, bis blau rot. Leider blick ich es nicht und benötige HILFE. Ich nutze das programm Fading aus dem Arduino example, habe schon ein bischen rumprobiert. Habe jedoch keine idee wie ich die zeilen aender muss dass
die Led’s an bleiben.

Habe die Fading zeilen unten stehen, in der mitte des fade vorgangs möchte ich ensprechend einen code einfügen dass die Led an bleibt.

analogWrite(rotledPin = High); geht nicht, auch nicht wenn es deklariert ist.
Dann steckt das fading in der schleife und geht apprupt aus wenn der zyklus vorbei ist. Und fade in wird ignoriert.

anmerkung: Kein void steup() für analogWrite.
Das unten ist ein programmdummy um zu
veranschaulichen was ich aendern will.


int rotledPin = 3;
int gruenledPin = 5;
int blauledPin = 6;

void setup() {

}

void loop() {

for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(rotledPin, fadeValue);
delay(30);
}

// bitte bitte bleib jetze an
analogWrite(rotledPin, do not go off);
delay(timer);

for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(redledPin, fadeValue);
delay(30);

// so weiter, G, B und zurück bis R
}
}


bin auch für andere lösungen zu haben.

bedanke mich vorab
Gruß jimmi

P.S.: Glaube ist schöner wenn ich gleich mit rot anfange.

Ich bin nicht sicher, ob ich mitgekommen bin.

Du willst, wenn ich das richtig verstanden hab, folgendes:

  • Rot fade-in
  • Grün fade-in
  • Rot fade-out

Probier mal “analogWrite(rotledPin, 255);”, ob dann die rote LED an bleibt.

Möglicherweise musst Du

int fadeValue;
for(fadeValue = 255; ...

schreiben, das kann ich aber hier leider nicht testen.

Wenn Du das Fading von Schwarz nach Rot im Setup machst, dann kannst Du im Loop ohne Probleme endlos ohne Sonderfallbehandlung von Rot über Gelb nach Grün über Cyan nach Blau nach Lila und wieder nach Rot faden… :slight_smile:

Hallo Joghurt,

vielen Dank für deine Idee. Doctor gerade am Code.
Der siecht jetzt so aus:

int ledPin = 9; // LED connected to digital pin 9

void setup() {
// nothing happens in setup
}

void loop() {
// fade in from min to max in increments of 5 points:
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}

for(int fadeValue = 255; fadeValue = 255; fadeValue = 255) {
analogWrite(ledPin, fadeValue);
delay(5000);
}

// fade out from max to min in increments of 5 points:
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
}

Wenn ich den Code in der MItte so einfüge:
for(fadeValue = 255); dann geht gar nichts.

ich kann die Zeilen Fehlerfrei auf das Arduino Board senden
doch dieser Verhält sich folgender massen:

Led fade out (leuchtet auf in 30 Milkliskunden) dann aber leuchtet
und leuchtet … die Led für immer.

der Code ist auch quatsch. Weil ich doch, nach den anfaden die Led nicht
wieder faden will sondern die Led bei 255 also 5Volt haltzen möchte, und zwar
eine von mir vorgegebene Zeit.

Ich möchte den Code möglichst einfach halten. Das muss doch gehen, ist wie im
Auto die Innenbeleuchtung. Tür auf Warten bis das Drexlicht angeht, Türe zu
warten bis das Drexlicht ausgeht. Die Autobauer sind halt Spinner denen geht
vom fade out und fade in einer ab. Früher war es viel besser Atotür auf Licht an Autotür zu Licht aus, kein warten bis mann was sieht. Aber genug vom Auto,
mir wird einer abgehen wenn mein Audrino die Farben mischt wie ich will.

Bitte weiterhin um eure Ideen, Anregungen und Codes!

Nochmal mein Vorgang:

Rote Led soll in 10 sekunden aufleuchten und anbleiben.

Jetzt soll die grüne Led in 10 Sekunden aufleuchten und anbleiben.
Beide sollen jetz Leuchten, etwa 5 Sekunden (rot und grün).

(Das ergibt dann Farbe gelb.)

Jetzt soll rote Led in 10 Sekunden ausgehen.
Die grüne Led bleibt an.

Jetzt soll in 10 Sekunden die blaue Led aufleuchten und anbleiben.
Beide sollen jetz Leuchten, etwa 5 Sekunden (grün und blau).

(Das ergibt dann Farbe magenta.)

Jetzt soll grüne Led in 10 Sekunden ausgehen.
Blau bleibt an.

Jetzt soll rote an in … usw.

Gruß jimmi

for(int fadeValue = 255; fadeValue = 255; fadeValue = 255) { analogWrite(ledPin, fadeValue); delay(5000); }

For funktioniert so nicht, probier

analogWrite(ledPin,255);
delay(5000);

Bzw. eigentlich ist das sowieso unnötig, da die LED ja schon an ist. Das delay alleine sollte eigentlich reichen.

Wenn ich das mache gibt es ne böse meldung:

error: expected unqualified-id before ‘for’

hier der code jetzt:

int ledPin = 9; // LED connected to digital pin 9

void setup() {
// nothing happens in setup
}

void loop() {
// fade in from min to max in increments of 5 points:
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}

analogWrite(ledPin,255);
delay(5000);

}

// fade out from max to min in increments of 5 points:
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
}

das habe ich als erstes versucht mit und ohne klammern,
dann erst habe ich

"for(int fadeValue = 255; fadeValue = 255; fadeValue = 255) {
analogWrite(ledPin, fadeValue);
delay(5000);

diese zeilen eingefügt und dann ging es zu kompalieren
(oder wie sich der vorgang schimpft).
Aber beide Aenderungen sind nutzlos!

geht nicht

Öhm, ist da hinter dem delay(5000) eine '}' zuviel...?

kompilieren ;)

errore code: error: 'nt' does not name a type In function 'void loop()':

geht auch nicht ohne } hinter (5000)

Das klingt als hättest Du bei einer int-Definierung das "i" vergessen...?

Und wenns das nicht ist solltest Du vielleicht wirklich mal probieren fadeValue außerhalb der for zu definieren.

Hallo,

heute habe ich nochmals alles angeschaut, und siehe da.
Geht ab wie Windhund der Code. Vielen Dank Joghurt.

int raPin = 9; //red Led Pin 9

void setup() {
// nothing happens in setup
}

void loop() {
// fade in from min to max in increments of 5 points:
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
// sets the value (range from 0 to 255):
analogWrite(raPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(50); }
{
//light up the red led
analogWrite(raPin, 255);
// wait for 5000 milliseconds (5sec.)
delay(5000);
}
// fade out from max to min in increments of 5 points:
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
// sets the value (range from 0 to 255):
analogWrite(raPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(50);
}
}

Jetzt muss ich noch die 2 anderen Farben irgendwie zwischen rein
fummeln.

Schön zu hören. ;)