Treppenbeleuchtung mit Arduino Ws2812B und 2 PIR - Programmierhilfe benötigt

Hallo,

Nach unzähligen Abenden die ich lesend in diesem Forum verbracht habe benötige ich nun doch ein bischen Hilfe für mein Projekt.

Es handelt sich um eine sensorgesteuerte laufrichtungsabhängige Treppenbeleuchtung wie sie schon vielfach hier im Forum und allg. im Netz zu finden ist/sind.

Nach Lektüre diverser Projekte zu diesem Thema habe ich leider für meinen Fall noch keine Lösung gefunden.

Habe sehr viele Sketche ausprobiert und versucht anzupassen aber keinen Erfolg dabei gehabt.

Lange Rede kurzer Sinn hier mal meine Problemstellung:

Treppenbeleuchtung bestehen aus Arduino Uno 2 PIR Sensoren und einem Photoresistor, 15 Led Streifen a 14 Leds (WS2812B) für die einelnen Stufen (15).

Es soll jeweils die erste Stufe beim hochgehen einfaden und danach die 2te ,dann die erste wieder ausfaden..bis zur 15 Stufe. Runter natürlich umgekehrt.

Die Steuerung des ganzen per Sensorik hab ich im Griff, die Problematik mit 2 Personen gleichzeitig kann ich ignorieren.

Mit dem Sketch bin ich soweit das alles funktioniert...nur nicht so ganz;)

  1. um 14 Leds in der Reihe nacheinander einzuschalten (Stufe für Stufe) evtl ein Delay dazwischen benötige ich sehr viel Code da ich dazu keine Funktion verwenden kann (zb. for Schleife).

  2. bei meiner Art der Programmierung fehlt mir ein fadeing der einzelnen Stufen (einfaden dann die nächste Stufe, dann die erste Stufe ausfaden etc...)

da ich das ganze auch halbwegs verstehen möchte benötige ich eigtl. nur ein paar tipps bzw. starthilfe;)

vielen dank schonmal

daniel

Bastelsketch.ino (37.7 KB)

  1. um 14 Leds in der Reihe nacheinander einzuschalten (Stufe für Stufe) evtl ein Delay dazwischen benötige ich sehr viel Code da ich dazu keine Funktion verwenden kann (zb. for Schleife).

Wieso kannst Du keine Funktion/Schleifen verwenden?

Ich würde nicht eine Stufe beleuchten sondern die ganze Treppe von unten bzw oben langsam einschalten und dann langsam wieder ausschalten sodaß für eine gewisse Zeit die gesamte Treppe beleuchtt ist.

Hast Du ein Netzteil mit genügend Leistung?

grüße Uwe

  1. um 14 Leds in der Reihe nacheinander einzuschalten (Stufe für Stufe) evtl ein Delay dazwischen benötige ich sehr viel Code da ich dazu keine Funktion verwenden kann (zb. for Schleife).

Das musst Du verbessern. Du benötigst eine Funktion, der Du eine Treppenstufennummer übergibst und welche genau diese eine Stufe einfadet.

Dann ein Schleife, welche o.g. Funktion nacheinander die Stufennummer 0-14 übergibt, fertig.

Ausfaden analog. Nach verstreichen der Zeit x nacheinander alle Stufen runterdimmen. Zuerst eine Funktion schreiben, dann diese in einer Schleife aufrufen.

KEINE DELAYS VERWENDEN! NIEMALS!

Mit diesen 2 Funktionen kannst Du dann auch spielen, z.B. eine Gruppe von 3 Stufen in Deiner Laufgeschwindigkeit "hochscrollen", usw.

Oder die Einfadefunktion verändern und schon werden Deine Stufen von den Mitte nach außen hin heller.

Gruß,

Helmuth

P.S. Habe Deinen Code kurz angesehen. Was Dir fehlt, ist ein Verständnis von For-Schleifen.

Wenn du willst kann ich dir einen kompetten Sketch schicken.
Genau das hab ich bei mir seit zwei Jahren am laufen.
Mit faden von oben nach unten oder unten nach oben u.s.w.
gruß

Hallo,

Erstmal vielen Dank für die schnellen Reaktionen hier:)

Beispielsketche nehme ich natürlich gerne an zum lernen und testen.

Ein paar Informationen habe ich noch vergessen zu erwähnen...

Die Leds hängen alle an einem Strip (ein Pin am Arduino), insgesamt 209 Stück (15*14), Netzteil und Hardware sind alles passend und funktionieren. (leds werden getrennt vom arduino versorgt.)
Bibliotheken benutze ich fastLed und oder neopixel.

Logikschaltung mit den PIRs und der Photozelle ist nicht das Problem.

Wichtig ist mir das ich ,bei einer eventuellen "for" Schleife bisher keinerlei möglichkeit gefunden habe , einen Bereich (gruppe)von 14 leds anzusprechen...wie mann sehen kann brauche ich für 14 LEDs an und aus jeweils 28 Zeilen Code. (und das auch nur für an und aus)
Bei 15 Stufen sind das einfach zuviel und zu unprofessionell;)

Ich möchte auch nicht 15 Pins beim Arduino verwenden(für die Stufen) da mir dann der Verkabelungsaufwand zu nervig wird. (und der code würde nur noch mehr aufgebläht werden.)

Für das komplette verständnis der Syntax einer schleife muss ich mich viel mehr und tiefer mit c++ beschäftigen und dafür reicht glaub ich mein Verstand nicht aus;)

Es reicht mir wie gesagt wenn die Stufen nacheinander immer im 14er Block einfaden und im Versatz ausfaden, Farbe auch nur Weiß (die meisten beispiele spielen mir zuviel mit farben).

Ablaufbeispiel:

Hochgehen= trigger ausgelöst> erste stufe eingeblendet und an für ca 3 sekunden, dann 2te stufe einblenden und gleichzeitig die erste stufe ausblenden und das bis zur 15ten..alle gleichzeitig möchte ich nicht anfeuern.

runtergehen= irgendwie umgekehrt;)

Konkrete Frage: wie kann ich einzelne pixel in einer gruppe adressieren (0-13, 14-28 etc)

oder wenn das nicht geht zumindest meine "an und aus codeblöcke" in eine fadeschleife packen.

viel text ich hoffe es ist verständlich:)

danke
daniel

Was ich nicht verstehe, was nützt eine Treppenbeleuchtung, bei der jede Stufe angeht und dann sofort wieder ausgeht?
Bei meiner wird z.B. wenn man unten die Treppe betritt langsam von unten nach oben aufgeblendet und wenn man oben die Treppe verläßt von unten nach oben ausgeblendet.
Sollte man auf der Treppe drehen, wird von oben nach unten ausgeblendet.
Von oben nach unten umgekehrt.
Wenn du eine Stufe einblendest und nach drei Sek. ausblendest gibts da also die Geschwindigkeit, in der ich hoch zu gehen habe vor. Seltsam... und eigentlich nicht zielführend

Konkrete Frage: wie kann ich einzelne pixel in einer gruppe adressieren (0-13, 14-28 etc)

void Stufe_Anschalten(int Stufennummer) { 
  
  for(int i = 0; i < 14; i++) {
  
    leds[ i + (Stufennummer * 14)] = CRGB( 255, 255, 255);
  
  }

  FastLED.show();

}

// Aufruf im Programm z.B. Stufe_Anschalten(5);

Hallo,

@maverick...das ist halt das was ich mir optisch vorgestellt habe...alle stufen gleichzeitig beleuchten zieht viel strom und eigentlich wollte ich nur ein optisches leckerli für meine Frau haben.

Der Ablauf deiner Steuerung passt ja super aber wie bekommst du es hin das mitten auf der treppe die steuerung eine richtungsumkehr mitbekommt?

Wenn es dir nichts ausmacht würde ich gerne mal dein Sketch ausprobieren und damit mal rum"spielen".

@helmuth...

vielen dank das werde ich zuhause sofort mal testen, so ähnlich hatte ich das schonmal gesehen aber aufgrund der fehlenden kentnisse nicht als brauchbar erkannt.

kann ich diese schleife noch für das faden erweitern oder gehört das dann übergeordnet in den Code?

danke euch:)

düse

eigentlich wollte ich nur ein optisches leckerli für meine Frau haben.

Ist das Schlafzimmer oben ? :grinning:

Wenn du ne Lib suchst für die kleinen Funktionen ist >Hier< gut geeignet sie erzeugt nicht soviel Overhead und das Programm bleibt recht kompakt.
Damit kommst du auch mit 209 LED klar.
Gruß
DerDani