Hey guys,
Sorry, dass ihr warten musstet. Aber ich bin beruflich derzeit sehr eingespannt/unterwegs. Aber nun ist ja Freitag

Also hier nun die Komponenten, die ich verbaut habe:
- LED-Streifen: Je Schaltkreis 5 Streifen á 14 weiße LEDs (24Vdc)
- Widerstände: jeweils 10kOhm
- Transistoren: TIP120 (
Datenblatt TIP 120)
- Netzteil: 24V mit 1.0A und max. 24W (
SYS 1308-2424-W2E - kam mit den LED-Streifen zusammen)
- Kabel: 2x0.14mm² Zwillingslitze (Genau genommen überwiegend diese hier:
ZL214SWW)
- Step-Down: Sollte ein "
Pololu 5V Step-Up/Step-Down Voltage Regulator S18V20F5" sein. Ganz sicher bin ich hier leider nicht, da mir die Typenbezeichnung auf der Platine nicht eindeutig erscheint und ich die Verpackung nicht mehr habe (Hier finde ich alle diese hier:
reg14a 0J7765). Gegeben wurde er mir aber als "5V-Output für Arduino" und am Ausgang liegen laut Multimeter zumindest "4.98" V an. Falls es euch hilft: Hier noch 2 Bilder

Der Code ist im Wesentlichen noch derselbe (außer, dass 1 Schaltkreis auskommentiert wurde und "and" zu "&&" wurde - und PIN13 nach Empfehlung aktiviert wurde). Vollständigkeitshalber aber hier nochmal richtig:
//-----------------------------------------------------
//Schaltkreise 1 und 2 sind identisch und unterscheiden sich nur durch Zahl 1 bzw. 2
//-----------------------------------------------------
#define Transistor1 3 //Transistor für Schaltkreis 1 an PIN 3 angeschlossen (=PWM-Pin)
#define Transistor2 5
#define Schalter1 10 //Schalter für Schaltkreis 1 an Pin 10
#define Schalter2 8
boolean SwitchWasClosed1 = true; //registriere, ob Schalter schon länger offen ist
boolean SwitchWasClosed2 = true;
unsigned long startMillis1; //Startzeit für neue Periode
unsigned long startMillis2;
unsigned long startFadeDownMillis1; //Startzeit für Fadingeffekt (Nur bei Licht-Aus)
unsigned long startFadeDownMillis2;
byte brightness1 = 0; //Anfangshelligkeit
byte brightness2 = 0;
//Diese Parameter sind für beide Schaltkreise gleich und bleiben konstant
const unsigned long fadingPeriod = 15; //Verzögerungszeit für Fading - je groesser, desto langsamer
const unsigned long maxPeriod = 720000; //Maximale Leuchtdauer (in ms) -> 12 min
byte maxBrightness = 250; // maximale Helligkeit (255=max)
void setup() {
// put your setup code here, to run once:
pinMode(Transistor1, OUTPUT);
pinMode(Transistor2, OUTPUT);
pinMode(Schalter1, INPUT_PULLUP);
pinMode(Schalter2, INPUT_PULLUP);
startMillis1 = millis(); //initial Startzeit;
startMillis2 = millis();
startFadeDownMillis1 = millis(); //initiale Startzeit für downfading (damit es überhaupt losgeht)
startFadeDownMillis2 = millis();
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite (LED_BUILTIN, ((int)millis() & 0x200) != 0 ); // blinkt mit 1,024 Hz - zum Debugging: Läuft Arduino noch?
schalter1(); //Durchführung/Überwachung von Schalter 1
// schalter2(); //Durchführung/Überwachung von Schalter 2
}
//___________________________Schalter 1___________________________
void schalter1() {
if (digitalRead(Schalter1) == LOW) //Zusatz if-Bedingung wird benötigt um Timer neu zu setzen + Zustand zwischen fading an und fading aus zu unterscheiden (sonst Licht-An-Licht-Aus-Loop)
{
if (brightness1 > 5) //wenn Licht vorher an war, fading Licht aus (sonst tue nichts)
{
fadeDown1();
}
if (brightness1 <= 5) //Wenn Licht dunkel genug, schalte ganz aus und setze Variablen auf default zurück
{
SwitchWasClosed1 = true; // Schalter war zu --> "fading an" Schleife wird als nächstes durchlaufen
digitalWrite(Transistor1, LOW); //Setze Transistor auf definierten Wert "0" zurück
brightness1 = 0; //setze Anfangsbrightness wieder auf 0
}
}
else //Wenn Schalter geschlossen wird, mache Licht an
{
//if (brightness1 <= maxBrightness and SwitchWasClosed1 == true and millis() - startMillis1 >= fadingPeriod) //wenn erfüllt: noch keine mximale Helligkeit + Schalter gerade geöffnet worden + Zeit für nächsten Fading-Schritt
if (brightness1 <= maxBrightness && SwitchWasClosed1 == true && millis() - startMillis1 >= fadingPeriod) //wenn erfüllt: noch keine mximale Helligkeit + Schalter gerade geöffnet worden + Zeit für nächsten Fading-Schritt
{
analogWrite(Transistor1, brightness1); //setze Helligkeit
brightness1++; //erhöhe Helligkeit (bis Maximum erreicht ist)
startMillis1 = millis(); //setze aktuelle Zeit als neue Startzeit (um Fading zu erzielen)
}
if (millis() - startMillis1 >= maxPeriod) //wenn die maximale Wartezeit vorüber ist (Tür ist zu lange offen geblieben), wieder Licht aus (mit fading)
{
SwitchWasClosed1 = false; //Sage, dass Schalter offen stehen geblieben ist -> lasse Licht aus (sonst loop im fading)
fadeDown1();
if (brightness1 <= 5) //Wenn minimale Helligkeit erreicht, muss Transistor auf LOW gezogen werden, sonst glimmen die LED weiter
{
digitalWrite(Transistor1, LOW);
}
}
}
}
void fadeDown1() //Funktion zum Ausdimmen der LED an Schalter 1
{
if (millis() - startFadeDownMillis1 >= fadingPeriod and brightness1 > 5)
{
analogWrite(Transistor1, brightness1); //setze Helligkeit
brightness1--; //erhöhe Helligkeit bis Maximum erreicht
startFadeDownMillis1 = millis(); //setze aktuelle Zeit als neue Startzeit fuer Downfading
}
}
/*
//___________________________Schalter 2___________________________
void schalter2() {
if (digitalRead(Schalter2) == LOW) //Zusatz if-Bedingung wird benötigt um Timer neu zu setzen + Zustand zwischen fading an und fading aus zu unterscheiden (sonst Licht-An-Licht-Aus-Loop)
{
if (brightness2 > 5) //wenn Licht vorher an war, fading (sonst tue nichts)
{
fadeDown2();
}
if (brightness2 <= 5) //Wenn Licht dunkel, schalte ganz aus und setze Variablen auf default zurück
{
SwitchWasClosed2 = true; // Schalter war zu --> "fading an" Schleife wird als nächstes durchlaufen
digitalWrite(Transistor2, LOW); //Setze Transistor auf definierten Wert "0" zurück
brightness2 = 0; //setze Anfangsbrightness wieder auf 0
}
}
else //Wenn Schalter geöffnet wird, mache Licht an
{
if (brightness2 <= maxBrightness and SwitchWasClosed2 == true and millis() - startMillis2 >= fadingPeriod) //wenn erfüllt: noch keine mximale Helligkeit + Schalter grade geöffnet worden + Zeit für nächsten Fading-Schritt
{
analogWrite(Transistor2, brightness2); //setze Helligkeit
brightness2++; //erhöhe Helligkeit bis Maximum erreicht
startMillis2 = millis(); //setze aktuelle Zeit als neue Startzeit
}
if (millis() - startMillis2 >= maxPeriod) //wenn die maximale Wartezeit vorüber ist, wieder Licht aus (mit fading)
{
SwitchWasClosed2 = false; //Sage, dass Schalter offen stehen geblieben ist -> lasse Licht aus (sonst loop im fading)
fadeDown2();
if (brightness2 <= 5) //Wenn minimale Helligkeit erreicht, muss Transistor auf LOW gezogen werden, sonst glimmen die LED weiter
{
digitalWrite(Transistor2, LOW);
}
}
}
}
void fadeDown2() //Funktion zum Ausdimmen der LED
{
if (millis() - startFadeDownMillis2 >= fadingPeriod and brightness2 > 5)
{
analogWrite(Transistor2, brightness2); //setze Helligkeit
brightness2--; //erhöhe Helligkeit bis Maximum erreicht
startFadeDownMillis2 = millis(); //setze aktuelle Zeit als neue Startzeit fuer Downfadi
Beste Grüße - ich hoffe, das hilft euch wieder ein Stück weiter
