ich möchte hier ein Fass aufmachen, wo ich so nach und nach meine Lösungen für diverse Lichtsteuerungen vorstelle. So soll im Laufe der Zeit eine Sammlung an Ideen bzw Lösungen entstehen, von der wohl auch der eine oder andere von Euch profitieren kann.
Den Beginn mache ich mal mit einer Hausbeleuchtungssteuerung, die anders als viele fertige Lösungen nicht mit einem fixen Ablauf arbeiten, sondern wo die einzelnen LEDs zufallsgesteuert ein- bzw ausgeschaltet werden. Dadurch ergibt sich bei größeren Häuseransammlungen ein nicht nachvollziehbares Wechseln der Lichter in den Häusern. Im nachfolgenden Beispiel sind 5 LEDs im Einsatz.
Zum Nachbau benötigt man folgende Komponenten:
- Steckbrett
- 5 LEDs nach Wahl
- 5 Widerstände 1kOhm
- 1 Arduino mit mind. 5 digitalen Ausgängen
- Jumperkabeln in ausreichender Länge und Menge
Ich verzichte hier auf das Zeigen eines Schaltplans, da der oben gezeigte Aufbauplan in meinen Augen aussagekräftig genug sein und eh jeder wissen sollte, wie man eine LED mit Strom versorgt. Und hier noch der zugehörige Sketch:
Code: Alles auswählen
// ---------------------------------
// Hausbeleuchtung durch Zufallszahl
// ---------------------------------
int Anzahl=5; // Anzahl angeschlossener LEDs
long Streckung=7000; // Erhoeht die Wartezeit (in ms)
int Tab[]={0,0,0,0,0}; // Status-Tabelle der LEDs; 0=aus, 1=an
int Zufall; // Wert der zufaellig ausgewaehlten LED
int Wartezeit; // Wartezeit zwischen 2 Veraenderungen
void setup() {
// Zufallszahlengenerator Start
randomSeed(analogRead(0));
// PINs auf OUTPUT setzen
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
void loop() {
// waehlt eine der 5 LEDs zufaellig aus
Zufall=random(Anzahl);
// wenn die LED aus ist, setze Status in Tabelle auf 1 und schalte LED ein
if (Tab[Zufall]==0) {
Tab[Zufall]=1;
digitalWrite(Zufall+8,HIGH); }
// wenn die LED an ist, setze Status in Tabelle auf 0 und schalte LED aus
else {
Tab[Zufall]=0;
digitalWrite(Zufall+8,LOW); }
// ermittle Zufallszahl fuer die Wartezeit setze delay
Wartezeit=random(50);
delay((Wartezeit*100)+Streckung);
}
int Anzahl=5;
long Streckung=7000;
int Tab[]={0,0,0,0,0};
Bei Anzahl ist die Anzahl der angeschlossenen LEDs anzugeben.
Bei long Streckung=7000; ist ein Wert bis 32000 einzugeben, um die die Wartezeit gestreckt wird, bis die nächste LED an oder aus geht.
Bei int Tab[].... muss für jede LED eine 0 eingeben werden.
Und im loop-Teil sind bei beiden digitalWrite Befehlen die PIN-Nummer, mit der begonnen wird, zu ändern (in meinem Fall beginne hängt die erste LED auf PIN 8).
Und hier ist auch das größte Problem: die Anzahl der steuernden LEDs ist am Arduino (egal, welchen man hat) begrenzt. Desweiteren ist man auch mit der Strommenge schnell am Limit. Die nächste Version wird diesbezüglich kein Limit haben, aber für Mehrparteienhäuser, wo nur einzelne Fenster zufallsgesteuert beleuchtet werden sollen, ist diese Lösung mit Sicherheit ausreichend.