Guten Abend, ich habe ein kleines Projekt vor, ich möchte zwei LED strips Dimmen.
Habe zwei Bewegungsmelder Module und ein zusätzlichen Schaltkontakt von einem Funkempfänger,
jetzt möchte ich wenn einer von den Kontakten geschlossen wird ( BWM oder Funkempfänger )
sollen die LED Strip in einer Zeit X langsam hochdimmen und wenn der Kontakt geöffnet wird in einer zeit X wieder runtergedimmt werden.
Habe jetzt schon mit dem Standard Programm von Adruino mit dem Fade Skatch und dem Button Skatch
experimentiert, aber komme irgend wie nicht zum ziel.
Guten Abend, habe mich die tage nochmal mit dem Code beschäftigt für mein Vorhaben.
Habe das ganze erstmal mit einem Taster realiesiert, wenn ich den Taster gedrückt halte dimmt die LED hoch,
aller dings wieder holt sie das in der zeit delay(30).
Wenn ich den Taster nur kurz betätige dann dimmt die LED in der Zeit delay 30 hoch und geht danach aus.
Mein ziel ist es wenn ich den Kontakt schließe ( Taster gedrückt ) halte soll die LED in der Zeit x hoch dimmen und so lange in dem hoch gedimmten zustand bleiben bis ich den Kontakt wieder öffne ( Taster los lasse ).
Beim Los lassen des Tasters soll die LED wieder runterdimmen bis sie ausgeht und auch aus bleiben.
Füge mal die ersten versuche des Cods bei.
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 11; // the number of the LED pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
// fade in from min to max in increments of 5 points:
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 1) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
Wenn Du die for-Schleife öffnest und diese Aufgabe loop überläßt, geht es in die richtige Richtung:
#define VERZOEGERUNG 30
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 11; // the number of the LED pin
uint32_t altMillis;
int fadeValue;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
if (millis() - altMillis >= VERZOEGERUNG) {
altMillis=millis();
if (digitalRead(buttonPin)) {
if (fadeValue < 255) {
fadeValue++;
}
} else {
if (fadeValue > 0) {
fadeValue--;
}
}
analogWrite(ledPin, fadeValue);
}
}