Angepinnt Projekt: LED-Treppenstufenbeleuchtung mit IR-Lichtschranken

    Richtig. Die Hardware ändern beeinflusst den gesamten Programmablauf, dann stimmt kein Timing mehr.
    Ich bin mir grad nicht sicher, ob ich den Quellcode überhaupt veröffentlicht habe, nun ist er anbei.

    Um die Zeit zu erhöhen oder verringern, kann man mit den Werten für DELAY_FADE und DELAY_LED spielen. Code sollte dank guter Kommentare (ich war von mir selber überrascht, als ich den gerade nach solanger Zeit rausgekramt habe) selbsterklärend sein.

    Ich hab' den Code nicht weiter angepackt, sondern einfach so angehängt, wie ich den vor Jahren mal gezippt habe ;)
    Auch wenn keinerlei Lizenzinfos dabei sind, versteht ihn unter "CC BY-NC" freigegeben.

    EDIT: Zu kompilieren natürlich mit AVR-GCC und entsprechenden Standard-Libs.
    Supi was ihr hier auf die Beine stellt. Echt klasse. Leider habe ich absolut keine Ahnung von Atmel und Co, hätte aber gerne solch eine Steuerung in meinem Haus. Da ich gerade mitten in der Kernsanierung stecke passt das Zeitlich jetzt sowas zu installieren.
    Frage an euch wer kann mir helfen eine Platine zu bauen oder noch besser, wer hat eine bestückte über oder würde das komplette bestücken bzw programmieren für mich übernehmen?
    Hallo zusammen,

    ich habe derzeit ein Problem mit meiner Schaltung zu der ich im Moment noch keine Idee habe - vielleicht hat hier jemand einen goldenen Tipp.

    Obere Lichtschranke:
    läuft einwandfrei - nie Probleme

    Untere Lichtschranke:
    Phänomen 1: Nach dem auslösen mittels Lichtschranke läuft die Treppe meistens 3 mal von unten nach oben durch.
    Phänomen 2: Schalte ich im Wohnzimmer das Licht ein (Stromstoßschalter) geht die Treppe ebenfalls von unten los.

    Vielleicht hat jemand einen Tipp oder eine Idee wie sich das Problem eingrenzen lässt?!

    EDIT: Ich setzte dieses Netzteil ein:
    reichelt.de/SNT-MW-DR120-12/3/…12&SEARCH=SNT+MW-DR120-12

    Viele Grüße,
    Chris

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PeterPanAK47“ ()

    Hallo zusammen,

    ich habe mit sehr viel Begeisterung diesen Thread gelesen und bin dabei das Projekt nachzubauen...

    Mir fehlen noch die Platine und die Möglichkeit den ATmega zu flashen.

    Falls hier wer zufällig ( ;) ) noch ne Platine, und ggf. einen schon geflashten ATmega hat wäre ich sehr dankbar für die Möglichkeit zum Kauf, ansonsten werde ich mir das Zeugs dann selber besorgen müssen.

    Gruß
    Carsten
    Hallo miteinander!

    Erst einmal möchte ich mich bei Euch für dieses interessante Forum bedanken und Euch zu diesem hervorragenden Projekt beglückwünschen. Wahnsinn was man durch Teamwork alles so bewerkstelligen kann.

    Nun zu meinem Anliegen:
    Ich habe eine Treppe, die sich wesentlich von den vorherigen Treppen unterscheidet. Genau genommen handelt es sich um drei Treppen. Nach fünf Stufen gehen von einem Podest zwei Treppen in entgegengesetzte Richtung ab.
    Die Treppe nach rechts hat ebenfalls fünf Stufen und die Treppe nach links hat sieben Stufen.

    Zu meinen Fragen:
    1. Kann das Programm so umgeschrieben werden, dass ab der fünften Stufe 2 Stufen gleichzeitig beleuchtet werden und 10 und 11 dann wieder allein leuchten?

    2. Kann ich oben die zwei notwendigen IR Lichtschranken parallel schalten, so dass von beiden Seiten die Treppe ausgelöst werden kann?

    Vielen Dank.

    Jens
    Hallo,

    da ich dieses Thema einfach nur super finde. Habe ich mich - mit den Grundlagen - beschäftigt.
    Ich habe meine Abwandlung davon auf einem Steckbrett aufgebaut und ein Arduino steuert den Ablauf.


    Spoiler anzeigen

    Quellcode

    1. //5 LED werden durch 2 Taster betätigt, je nach Taster wird die Richtung beeinflusst.
    2. int LED1 = 1; //LED an Pin 1
    3. int LED2 = 2; //LED an Pin 2
    4. int LED3 = 3; //LED an Pin 3
    5. int LED4 = 4; //LED an Pin 4
    6. int LED5 = 5; //LED an Pin 5
    7. int unten = 8; //Taster unten an Pin 8 grünes Kabel
    8. int oben = 11; //Taster oben an Pin 11 blaues Kabel
    9. int an_aus = LOW; //aktueller LED-Zustand LEUCHTET oder NICHT
    10. int druckunten; //aktueller Zustand Taster unten
    11. int druckoben; //aktueller Zustand Taster oben
    12. int vorherunten = HIGH; //letzter Taster-Zustand unten
    13. int vorheroben = HIGH; //letzter Taster-Zustand oben
    14. int zeit = 0; // 0 Sekunden für Vergleich entprellen
    15. int prellen = 250; // Entprellzeit
    16. int stufenzeit = 750; // Zeitunterschied zwischen den LED
    17. void setup()
    18. {
    19. pinMode(oben, INPUT_PULLUP); //Taster oben mit PULLUP
    20. pinMode(unten, INPUT_PULLUP); //Taster unten mit PULLUP
    21. pinMode(LED1, OUTPUT);
    22. pinMode(LED2, OUTPUT);
    23. pinMode(LED3, OUTPUT);
    24. pinMode(LED4, OUTPUT);
    25. pinMode(LED5, OUTPUT);
    26. }
    27. void loop()
    28. {
    29. druckunten = digitalRead(unten); //Taster einlesen
    30. druckoben = digitalRead(oben); //Taster einlesen
    31. if (druckunten==HIGH && vorherunten==LOW && millis()-zeit > prellen) //linker Taster gedrückt? UND war vorher nicht gedrückt UND entprellen
    32. {
    33. if (an_aus==HIGH) //LED-leuchtet? wenn ja wechsele zustand auf LOW
    34. an_aus=LOW;
    35. else
    36. an_aus=HIGH;
    37. zeit = millis();
    38. digitalWrite(LED1, an_aus); //LED 1 schalten
    39. delay(stufenzeit); //Verzögerung
    40. digitalWrite(LED2, an_aus); //LED 2 schalten
    41. delay(stufenzeit); //Verzögerung
    42. digitalWrite(LED3, an_aus); //LED-3 schalten
    43. delay(stufenzeit); //Verzögerung
    44. digitalWrite(LED4, an_aus); //LED-4 schalten
    45. delay(stufenzeit); //Verzögerung
    46. digitalWrite(LED5, an_aus); //LED-5 schalten
    47. delay(stufenzeit); //Verzögerung
    48. }
    49. if (druckoben==HIGH && vorheroben==LOW && millis()-zeit > prellen)
    50. {
    51. if (an_aus==HIGH)
    52. an_aus=LOW;
    53. else
    54. an_aus=HIGH;
    55. zeit = millis();
    56. digitalWrite(LED5, an_aus);
    57. delay(stufenzeit);
    58. digitalWrite(LED4, an_aus);
    59. delay(stufenzeit);
    60. digitalWrite(LED3, an_aus);
    61. delay(stufenzeit);
    62. digitalWrite(LED2, an_aus);
    63. delay(stufenzeit);
    64. digitalWrite(LED1, an_aus);
    65. delay(stufenzeit);
    66. }
    67. vorherunten = druckunten;
    68. vorheroben = druckoben;
    69. }
    70. // ENDE




    Das Programm funktioniert (fast) zu meiner Zufriedenheit bis auf:
    • die Laufrichtung wird beim Abschalten nicht umgekehrt
    Der untere Taster (aktuell einfach durch ein Kabel simuliert) wird betätigt, die LED fangen von unten nach oben zum Leuchten an ---- passt soweit. Jetzt wird das obere Ende der Treppe erreicht --- obere Taster betätigt die LED verdunkeln von oben nach unten --- passt nicht ---- sollten von unten nach oben "Nachlaufen".

    Vielleicht kann einer von euch "Coding-Profis" da mal einen kurzen Blick draufwerfen ob das mit einfachen Mitteln zu lösen ist.

    Danke Gruß Max


    edit: Bild eingefügt

    So ähnlich sieht der Testaufbau aus.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Maexle“ ()

    Du schaltest bisher mit dem einen Schalter LED 1->5, mit dem anderen Schalter 5->1. Und das tust du immer egal ob die LEDs an waren oder nicht. Mit der folgenden Änderung wird abhängig vom Zustand (AN/AUS) die Richtung bestimmt.

    Quellcode

    1. if (an_aus==HIGH) //LED-leuchtet? wenn ja wechsele zustand auf LOW
    2. {
    3. an_aus=LOW;
    4. zeit = millis();
    5. digitalWrite(LED5, an_aus); //LED 1 schalten
    6. delay(stufenzeit); //Verzögerung
    7. digitalWrite(LED4, an_aus); //LED 2 schalten
    8. delay(stufenzeit); //Verzögerung
    9. digitalWrite(LED3, an_aus); //LED-3 schalten
    10. delay(stufenzeit); //Verzögerung
    11. digitalWrite(LED2, an_aus); //LED-4 schalten
    12. delay(stufenzeit); //Verzögerung
    13. digitalWrite(LED1, an_aus); //LED-5 schalten
    14. delay(stufenzeit); //Verzögerung
    15. }
    16. else
    17. {
    18. an_aus=HIGH;
    19. zeit = millis();
    20. digitalWrite(LED1, an_aus); //LED 1 schalten
    21. delay(stufenzeit); //Verzögerung
    22. digitalWrite(LED2, an_aus); //LED 2 schalten
    23. delay(stufenzeit); //Verzögerung
    24. digitalWrite(LED3, an_aus); //LED-3 schalten
    25. delay(stufenzeit); //Verzögerung
    26. digitalWrite(LED4, an_aus); //LED-4 schalten
    27. delay(stufenzeit); //Verzögerung
    28. digitalWrite(LED5, an_aus); //LED-5 schalten
    29. delay(stufenzeit); //Verzögerung
    30. }


    Nimm das mal anstatt der Zeilen 45-61 und das folgende anstatt 67-83:

    Quellcode

    1. if (an_aus==HIGH) //LED-leuchtet? wenn ja wechsele zustand auf LOW
    2. {
    3. an_aus=LOW;
    4. zeit = millis();
    5. digitalWrite(LED1, an_aus); //LED 1 schalten
    6. delay(stufenzeit); //Verzögerung
    7. digitalWrite(LED2, an_aus); //LED 2 schalten
    8. delay(stufenzeit); //Verzögerung
    9. digitalWrite(LED3, an_aus); //LED-3 schalten
    10. delay(stufenzeit); //Verzögerung
    11. digitalWrite(LED4, an_aus); //LED-4 schalten
    12. delay(stufenzeit); //Verzögerung
    13. digitalWrite(LED5, an_aus); //LED-5 schalten
    14. delay(stufenzeit); //Verzögerung
    15. }
    16. else
    17. {
    18. an_aus=HIGH;
    19. zeit = millis();
    20. digitalWrite(LED5, an_aus); //LED 1 schalten
    21. delay(stufenzeit); //Verzögerung
    22. digitalWrite(LED4, an_aus); //LED 2 schalten
    23. delay(stufenzeit); //Verzögerung
    24. digitalWrite(LED3, an_aus); //LED-3 schalten
    25. delay(stufenzeit); //Verzögerung
    26. digitalWrite(LED2, an_aus); //LED-4 schalten
    27. delay(stufenzeit); //Verzögerung
    28. digitalWrite(LED1, an_aus); //LED-5 schalten
    29. delay(stufenzeit); //Verzögerung
    30. }

    Wenn jemand Futter für seine Haustiere (Hamster, Mäuse, Ratten, etc) braucht... Nagers Futterstube - der Laden meiner Frau ;)
    Infos über Cree LEDs: pct.cree.com/
    Meine Projekte: [1] [2] [3]
    Ist nicht so schwer ;) Ich habe deine if(an_aus...) Abfrage so erweitert, dass der gespeicherte Zustand dazu verwendet wird die Laufrichtung zu bestimmen anstatt wie bisher nur deine Schalter. Die Codestellen unterscheiden sich dann dadurch, dass eben beim einen Schalter 1->5 beim Anschalten und 5->1 beim Ausschalten gemacht wird und beim anderen andersherum.
    (Ich habe das Setzen der Pins in die IF-Abfrage verfrachtet anstatt dahinter)
    Wenn jemand Futter für seine Haustiere (Hamster, Mäuse, Ratten, etc) braucht... Nagers Futterstube - der Laden meiner Frau ;)
    Infos über Cree LEDs: pct.cree.com/
    Meine Projekte: [1] [2] [3]
    Hallo,

    das Projekt scheint ja schon eingeschlafen zu sein. Ich möchte das ganze auch an meiner Treppe realisieren.
    Großes Problem, die unteren zwei Stufen sind frei, d.h. ich habe links und rechts keine Wand um den Sensor zu installieren.
    Nun will ich den adjustable sensor an der Wand der dritten Stufe installieren und hierbei schräg einbauen.
    Hat jemand eine Idee wie das funktioniert und wie ich den Sensor schräg in die Wand einbauen könnte?

    Danke.
    und, wenn du die Sensoren knapp über die erste Stufe installierst? Evtl. mit einer geschickten Idee verkleiden?
    Nimm ein Laserpointer und schau einfach mal, wann du in den Strahl läufst... ich denke, zu spät

    Ich habe auch ein nettes System gesehen, bei dem ein kleiner Beschleunigungssensor unter den ersten Stufen war...
    Wenn du gut programmieren kann, dann wäre das evtl. genau das richtige für deine Treppe... Ein guter digitaler Filter wird aber unumgänglich sein, um Fehlalarme zu vermeiden.

    VG

    Basti

    Patt schrieb:


    Großes Problem, die unteren zwei Stufen sind frei, d.h. ich habe links und rechts keine Wand um den Sensor zu installieren.
    Hat jemand eine Idee wie das funktioniert und wie ich den Sensor schräg in die Wand einbauen könnte?

    Hallo,
    ich hatte auch das Problem, dass an der untersten Stufe eine Lichtschranke sehr unpraktisch zu installieren wäre.
    Ich habe dann einen kleines Bewegungsmeldemodul hinter eine Leiste montiert.
    Schau hier: uwiatwerweisswas.schmusekaters…ICHT/13_Elekt_Abdeckg.JPG
    Kannst du den Bewegungsmelder entdecken?
    Hier ist er ganz links zu sehen:
    uwiatwerweisswas.schmusekaters…UFLICHT/11_Elektronik.JPG
    uwiatwerweisswas.schmusekaters…UFLICHT/12_Elektronik.JPG
    Gruß Helles Licht