Anfänger Projekt - Dimmen von LEDs mit Arduino

Gestern Abend habe ich endlich testen können :slight_smile:

Aufgabe war ja das einschalten der LEDs nacheinander mit einem Fade-Effekt. Dann sollen diese eine gewisse Zeit "an" bleiben und sodann in umgekehrter Reihenfolge wieder ausdimmen.

Ich habe es für meine Ansprüche gut hinbekommen.
Ist der Code hierfür interessant? Dann stelle ich ihn der Allgemeinheit gerne zur Verfügung.

Achja: Wenn es fertig ist, dann soll es unsere Treppenbeleuchtung werden.
Dazu habe ich nun die Sensoren bestellt und kann mein Projekt dann weiter vorantreiben.

Beste Grüße

Natürlich ist Code immer interessant. Entweder als gutes oder schlechtes Beispiel. :wink: Nein, keine Sorge. Schlimmstenfalls gibt es ein paar Tipps zur Optimierung.

Guten Morgen,

ich poste meinen Code nachher mal :D. Ich habe noch eine weitere Frage:

Die Ansteuerung von 4 LED SMD-Strips mit einer Länge von etwa 30cm funktioniert doch sicherlich auch?
Was müsste ich dazu beachten?

Ich dachte an 5050 SMDs. Ob nun "weiß" oder "RGB" ist mir noch unklar.
Ich weiß nur nicht, wie ich es anschließen müsste.

Bei RGB würde wohl jede der Farben an einen OUT-Kanal angeschlossen werden, um die Farben entsprechend zu mischen. Außerdem müsste ich einen Strip mit "gemeinsamer Anode" kaufen Arduino Playground - TLC5940.

Die Spannung der Strips liegt bei 12V - Die könnte ich doch per sep. Netzteil liefern?
Brauche ich weitere Artikel (Vorwiderstände, Transistoren, etc.)?

Viele Grüße

Hallo alex_e
bei Interesse, ich habe eine Treppenlichtbeleuchtung mit 14 Stufen seit einem halben Jahr in Betrieb.
Funktioniert tadellos, auch mit dimmen.
Hab diese auch mit 5050 smd Streifen erstellt, unter jeder Stufe hab ich 6 SMD als Streifen installiert und diese
über 12V versorgt. Faden funktioniert auch, auch in die verschiedenen Richtungen, d.h. kommst du von unten läuft das
Licht nach oben, gehst du oben raus wird von unten noch oben ausgedimmt, drehst da auf der Treppe wird von oben nach unten
gedimmt u.s.w.
Man muß ja nicht alles selbst erfinden :-))
Gruß
Bernward

Wenn die Strips für 12V konstruiert sind, dann haben sie die Vorwiderstände bereits integtiert. Das kannst Du leicht visuell kontrollieren. LED-Strips von ein bißchen Länge überschreiten schnell den maximalen Strom den der TLC brinngen kann (120mA). Du brauchst auf alle Fälle Transistoren zur Ansteuerung. Mit dem TLC wird es schwierig da dieser als Ausgänge Konstant-Strom-Senken kat (es fließt ein Konstantstrom vom +12V über die LED in den "Ausgang" nach Masse). Falls die Strips mehr als 120mA brauchen dann brauchst Du einen 1kOhm Widerstand vom Ausgang auf +5V. Den TLC stellst Du auf 10mA und vom Ausgang entweder auf einen ULN2803 oder mit einem 1kOhm Widerstand auf einen Transistor.

Grüße Uwe

Soso,

ich habe heute die beiden IR-Sensoren intergriert.
Ich habe diese hier verwendet: Gravity: 80cm Arduino Infrared Proximity Sensor - DFRobot

Ich war noch meinen Code schuldig:

#include "Tlc5940.h"

const int v_fade_in = 40; // Geschwindigkeit Fade-In
const int v_fade_out = 20; // Geschwindigkeit Fade-Out
const int einschaltdauer = 10; //Einschaltdauer in Sekunden
const int sensor_oben = 4; // DigitalPin des oberen Sensors
const int sensor_unten = 5; //DigitalPin des unteren Sensors

const int t_einschaltdauer = einschaltdauer * 1000; // Umrechnung in Millsekunden

void setup()
{
  Tlc.init();

  pinMode(sensor_unten,INPUT);
  pinMode(sensor_oben,INPUT);
  
}

void loop()
{
Tlc.clear(); // Setzt den TLC zurück

if(digitalRead(sensor_oben) == LOW)  fade_in_oben(); 
if(digitalRead(sensor_unten) == LOW)  fade_in_unten(); 
  
}

// Wenn Sensor OG betätigt wird, LED von oben nach unten einschalten
void fade_in_oben(){
      for(int led=0;led<11;led++){
          for (int p=0; p<4095; p+=v_fade_in) {
            Tlc.set(led, p);
            Tlc.update();
            delay(5);
          }
        }
        // Eingeschaltet lassen
        delay(t_einschaltdauer);
        // Ausschalten
        fade_out_oben();
        
}

// Wenn Licht von oben eingeschaltet wurde in umgekehrter Reihenfolge ausschalten
void fade_out_oben(){
      for(int led=10;led>=0;led--){
          for (int r=4095; r>=0; r-=v_fade_out) { 
              if(r<v_fade_out){r=0;} // Nachglimmen der LED verhinden (Wert 0 wird nicht erreicht)
              Tlc.set(led, r);
              Tlc.update();
              delay(5);
          }
      }
}

// Wenn Sensor EG betätigt wird, LED von unten nach oben einschalten
void fade_in_unten(){
      for(int led=10;led>=0;led--){
          for (int p=0; p<4095; p+=v_fade_in) {
            Tlc.set(led, p);
            Tlc.update();
            delay(5);
          }
      }
      // Eingeschaltet lassen
        delay(t_einschaltdauer);
        // Ausschalten
        fade_out_unten();
}

// Wenn Licht von unten eingeschaltet wurde in umgekehrter Reihenfolge ausschalten
void fade_out_unten(){
      for(int led=0;led<11;led++){
          for (int r=4095; r>=0; r-=v_fade_out) {    {
            if(r<v_fade_out){r=0;} // Nachglimmen der LED verhinden (Wert 0 wird nicht erreicht)
            Tlc.set(led, r);
            Tlc.update();
            delay(5);
          }
      }
}

Was mir noch eingefallen ist: Unten hat die Treppe 3 Stufen ohne seitliche Wand oder ein Geländer - Den Sensor dort irgendwo in Position zu bringen erscheint mir noch unmöglich.

Eine Lichtschranke fällt ohne seitliche Begrenzungen auch flach. Ich hatte noch an einen Trittsensor gedacht - Die Treppe soll gefliest werden. Gibt es vielleicht noch andere Ideen?

Mach mal ein Foto von den drei letzten Stufen. Ich kanns mir nicht vorstellen. Kommt da kein Geländer mit einem Teil das bis zum Boden reicht?
grüße Uwe

Moin Uwe,

weil die Kamera leider nicht hier ist kann ich nur mit einem gegoogleten Bild dienen :grin:

So ähnlich, nur eben 3 Stufen und nicht 2 ohne seitliche Begrenzung oder Geländer: Bio-Bau Bonn

Hast Du, wie im Beispiel unter der Stufe Platz?

Wenn ja könntest Du 3 bis 4 PIR-Sensoren montieren, sodaß sie die Füße vor der ersten Stufe bemerken.

Auch seitlich an der Wand könntest Du einen PIR montieren der die erste Stufe überwacht.

Einen Trittsensor auf der ersten Stufe oder davor finde ich wenig sinnvoll da diese Verschleißteile sind.

Grüße Uwe

Danke Uwe,

gibt es denn "kleine" PIRs? Ich möchte natürlich nur erfassen, wer wirklich auf die Treppe geht - Also erste Stufe mittig - 90° mit einem Radius von einem halben Meter.

Viele Grüße

Nachtrag Nr. 1: 60° würden für einen PIR natürlich auch genügen :stuck_out_tongue:

Nachtrag 2: Ich könne natürlich auch mehrere Entfernungsmesser über der ersten Stufe in der Decke anbringen. Die Decken werden sowieso abgehängt. 3 Sensoren mit einer Reichweite von etwa 2m dürften einen Menschen vor der ersten Stufe ja leicht erkennen.

Wenn Du ihn n der Decke montierst reicht einer und Du brauchst ihn nur so montieren daß er gerade ncoh etwas vor der ersten Stufe sieht. Dabei ist es egal ob auch die halbe Treppe detecktiert wird.
Grüße Uwe

Nabend liebes Forum,

ich brauche erneut euren Experten-Rat:

Die von mir verwendeten Sensoren funktionieren nur träge und nicht zuverlässig beim Durchschreiten.
Link zu meinen Sensoren: http://ielektros.de/infrared-sensor-switch

Könnte ein SRF01 (http://de.manu-systems.com/SRF01.shtml) oder ein SRF02 (Ultraschallsensor mit I2C-Bus und RS232 SchnittstelleMikrocontroller-Elektronik.de) Ultraschallsensor besser funktionieren?

Wenn ja: Wie muss ich ihn anschließen? Ich steige nicht wirklich durch was die Thematik anbelangt :~

Lieben Dank für Eure Hilfe,
Viele Grüße,
Alex

Nabend,

andere Idee die mir noch in den Sinn kam: Macht es Sinn die Sensoren mit jeweils eigenen 5V Spannung zu versorgen?
Würde das die Signalqualität bzw. die Reaktionsgeschwindigkeit verbessern?

Viele Grüße