Hallo,
auf die Gefahr hin, dass jemand mit Standardantworten kommt wie "lies mal hier, lies mal da", habe ich eine gewisse Verständnisblockade bezüglich der Zusammenfassung von Sketchen. Aufgabenstellung ist bei einem Nano folgende: an den Ausgängen 5,6 und 9 ist eine RGB-LED angeschlossen, die über einen Farbwechselsketch zwischen verschiedenen Farben sanft wechselt. Einen solchen Sketch habe ich auch gefunden und delay() gegen millis () getauscht. Funktioniert. Jetzt soll die interne LED einen Herzschlag simulieren. Auch dafür habe ich einen passenden Sketch gefunden. Auch da habe ich ein delay gegen millis getauscht. Funktioniert. Dann habe ich beide Sketche kombiniert und kompiliert, so wie es in der einen oder anderen "Anleitung" steht. Jetzt funktioniert nur der Farbwechsel, aber nicht der Herzschlag. Setzte ich // vor den Farbwechsel, funktioniert der Herzschlag (logisch, weil Farbwechsel ist ja deaktiviert). Die Beispiele für zwei "parallele" Abläufe beziehen sich immer nur auf zwei LED und nicht auf Ansteuerungen allgemein. Zum allgemeinen Verständnis: es handelt sich um eine Halloween-Deko; ein Skelett hat RGB-LED als Augen und der Nano sitz in der Brust und leuchtet in einem freundlichem Rot (Betriebs-LED). Jetzt soll die interne LED den Effekt eines schlagenden Herzens simulieren. Anbei der Code, vielleicht kann mir da jemand auf die Sprünge helfen.....
const int rotPin = 5;
const int gruenPin = 6;
const int blauPin = 9;
const int herz = LED_BUILTIN;
unsigned long lmillis;
const long interval = 1000;
byte i = 0;
boolean up = true;
byte Fadearray[] = {
0, 2, 4, 8, 12, 20, 32, 44, 56, 68, 80, 92, 104, 116, 128, 140,
152, 164, 176, 188, 200, 212, 224, 236, 255, 240, 210, 180, 150,
120, 90, 60, 40, 25, 25, 40, 60, 90, 120, 150, 180, 210, 240, 255,
230, 205, 180, 155, 130, 105, 80, 55, 30, 20, 16, 8, 4, 2, 0,
};
int r = 0;
int g = 0;
int b = 0;
void setup() {
pinMode(rotPin, OUTPUT);
pinMode(gruenPin, OUTPUT);
pinMode(blauPin, OUTPUT);
pinMode(herz, OUTPUT);
}
void loop() {
herzschlag();
farbwechsel();
}
void herzschlag() {
if (millis() - lmillis >= 11) {
if (i == 58) {
up = false;
unsigned long lMillis = millis();
while (millis() - lMillis < 650)
//delay(600);
i = 0;
}
i++;
analogWrite(13, Fadearray[i]);
lmillis = millis();
}
}
void farbwechsel() {
for (b = 0; b < 100; b++) {
analogWrite(blauPin, b);
unsigned long lMillis = millis();
while (millis() - lMillis < 50)
;
}
for (r = 0; r < 100; r++) {
analogWrite(rotPin, r);
unsigned long lMillis = millis();
while (millis() - lMillis < 50)
;
}
for (b = 100; b > 0; b--) {
analogWrite(blauPin, b);
unsigned long lMillis = millis();
while (millis() - lMillis < 50)
;
}
for (g = 0; g < 100; g++) {
analogWrite(gruenPin, g);
unsigned long lMillis = millis();
while (millis() - lMillis < 50)
;
}
for (r = 100; r > 0; r--) {
analogWrite(rotPin, r);
unsigned long lMillis = millis();
while (millis() - lMillis < 50)
;
}
for (b = 0; b < 100; b++) {
analogWrite(blauPin, b);
unsigned long lMillis = millis();
while (millis() - lMillis < 50)
;
}
for (g = 100; g > 0; g--) {
analogWrite(gruenPin, g);
unsigned long lMillis = millis();
while (millis() - lMillis < 50)
;
}
}