ich habe ein wenig an meinem Treppenprojekt programmiert, bin allerdings überzeugt, das es eine bessere und effizientere Lösung als meine geben muss. Das ganze soll wie folgt funktionieren:
- Mittels Bewegungsmelder erfasse ich, ob jemand oben oder unten die Treppe betritt.
- Nun beginnen die Stufen von unten (bzw oben) alle nacheinander zu leuchten.
- Wenn alle Stufen an sind und die Treppe am anderen Ende verlassen wurde, beginnen die Stufen von unten (oder oben) herab nach einander wieder aus zu gehen
- Wird die Treppe nicht verlassen (warum auch immer) läuft nachdem alle Stufen an sind, eine Zeit ab, die den Ausschaltvorgang einleitet.
Die Treppe hat 16 Stufen, die LED Streifen werde ich über einen 24 Ch DMX Decoder ansteuern, das ist nicht das Problem.
Bevor ich nun den Code poste, möchte ich vorab einfach mal beschreiben, wie ich esim ersten Anlauf gelöst habe:
Über Merker stelle ich die Zeit bis zum einschalten der nächsten Stufe ein, die maximale Helligkeit die erreicht wird, und die Wartezeit bis zum automatischen ausschalten.
Lösungsansatz 1:
Eine Kette aus RS Flip Flops, die sich sequenziell durch Triggert bis alle "1" sind. Das habe ich allerdings nie so richtig gescheit zum laufen bekommen, und hatte dann das Problem mit dem nach und nach aus schalten.
Lösungsansatz 2: (so habe ich es derzeit gemacht):
Ich lasse einen Zähler hochzählen und vergleiche für jede Stufe, ob der Zählerstand grösser/ gleich die Stufe ist, zum ausschalten wird die Logik umgekehrt und nach unten gezählt.
Probleme habe ich hierbei, die Ausschaltung nach dem Timeout zu realisieren, das will einfach noch nicht so wie ich es mir denke.
An alle beiden Ansätzen stört mich, das es eine Unmenge an Bausteinen ist.
In einer anderen Programmierumgebung würde ich versuchen es mit einem Unterprogramm und einem Schieberegister zu lösen, dem ich einfach die Anzahl der Stufen vorgebe.
Wie seid ihr an diese Problemstellung ran gegangen? Den Programmentwurf kann ich heute Abend auch mal anhängen.
Kommentar