LED Lampe

Hallo.

So habe vor ein par Tagen mein StarterKit bekommen.
Habe bisher einige LED Tutorials nachgebaut und möchte nun schon ein grösseres Projekt angehen… wo ich doch noch einige Fragen habe.

Projekt: Möchte eine LED Lampe bauen mit dem NeoPixel Strip. Den Strip werde ich auseinanderschneiden (unterschiedliche abstände). Habe am Schluss dann ca. 50 – 70 LED Stücke.

Mit dem Taster möchte ich diverse LED Lichtshows abspielen.

Was ist noch unklar:
Wie kann ich das Netzteil an Arduino anschliessen ohne dass ich es in die Luft jage?
Muss ich für den NeoPixel Strip ein Transistor dazwischenschalten?

Da ich kein Elektroniker bin und mit Strom nicht immer zu spassen ist habe ich eine Illustration erstellt. Vielleicht kann mir jemand sagen ob das ganze so OK ist? (Naja Arduino bekommt noch kein Strom…)

Für jeden Tipp sehr Dankbar.

Schaltplan wäre schöner, aber besser als nichts :wink:

Netzteil einstellbar braucht es nicht. Besorg dir ein ordentliches 5V Netzteil. Das wirst du benötigen. Die Strips können gute 4A ziehen.

Nun wird es aber ein Problem geben. Wenn du die 5V auch am Arduino klemmst, darfst du ihn nicht über USB programmieren, wenn die 5V Stecken. Du musst ihn vorher aus der 5V Buchse nehmen. Nicht nur das Netzteil abklemmen, denn dann versucht die USB Schnittstelle auch die Leds zu speisen. Ggf. einen kleinen Schalter einbauen um die Spannung am Arduino abzuschalten oder ein USB Kabel nehmen, an dem keine 5V ankommen.

Den 10k W>>I<<derstand kannst du weglassen. Taster kannst du auch mit 2 Adern einlesen. Einfach die internen Pullups aktivieren.

In der Zeichnung ist die Datenleitung an den NeoPixeln falsch angeschlossen, so würde das also nicht funktionieren. Die Datenleitung gehört natürlich auf "DIN" und nicht auf "DO", also:

(Arduino) D6 ---> 330 Ohm ---> DIN (NeoPixel1)

und dann weiter:

(NeoPixel1) DO ---> DIN (NeoPixel2) etc.

Nun wird es aber ein Problem geben. Wenn du die 5V auch am Arduino klemmst, darfst du ihn nicht über USB programmieren, wenn die 5V Stecken. Du musst ihn vorher aus der 5V Buchse nehmen.

Uui… Danke für den Hinweis.
Das Endprodukt wird eine sehr Komplexe form haben. Ich glaube nicht dass ich es so Konstruieren kann dass es sich noch grossartig auseinanderbauen lässt.

Zu beginn möchte ich das ganze mit der „FastLED library“ testen → dann zusammenbauen und dann beim fertigen Produkt eigene Shows programmieren (Gesamteindruck usw.).

Wenn ich einen Schalter einbaue bekommen die LEDs keinen Strom was das testen schwieriger macht.

Könnte man mit dem Netzstecker in die Hohlbuchse von Arduino? Und die LEDs direkt an Arduino anschliessen? → Ne Arduino liefert ja zu wenig Strom…

Ich habe hier einen Knopf… Was würdet Ihr machen?

Die Datenleitung gehört natürlich auf “DIN” und nicht auf “DO”, also:

Danke.
Konnte mit dem Strip noch nichts Testen. Die Post hat ihn irgendwo verschlampt.

hi,

Du hast ja auf keinem bild 5V am arduino hängen.

also einfach einen schalter, mit dem Du die 5V-quelle zum 5V-pin des arduino schaltest. bevor Du auf USB anhängst, den schalter auf aus...

gruß stefan

Ja Arduino hatte bisher noch kein Strom.

Achso, jetzt verstehe ich erst was sschultewolter meinte mit “Nicht nur das Netzteil abklemmen, denn dann versucht die USB Schnittstelle auch die LEDs zu speisen”

Also jetzt bekommen die LEDs wirklich nur Strom über das Netzteil und Arduino ist mit Strom versorgt.

Wirklich eins zu eins mit dem USB zu Testen geht wohl leider nicht, muss ich wohl damit Leben.

Wie gesagt, das einfachste wäre, ein USB Kabel anzufertigen, was keine 5V mitführt.

Hast du einen Link? Wie, Was, Wo? Bei Google komme ich nur auf USB-Shops...

Kabel müsste man selber machen. Geht auch mit einem bereits fertigen Kabel. Kabelummantelung aufschneiden, und hoffen das die 5V farblich gekennzeichnet sind. Durchschneiden und Schrumpfschlauch drum.

Alternativ, könnte man schaun, ob man UVCC auf dem Uno trennen kann durch durchschneiden der Leiterbahn. Dann ist aber Garantie weg vom Uno.

Ah, OK. Liegen ja genug USB Kabel bei mir rum. Danke.

Dann warte ich mal auf meine Bestellungen und Teste das ganze am Steckbrett.

So bin im Testmodus angekommen.

Eine Frage hätte ich noch zu der Pullups aktivierung…
Zuerst habe ich die Tasterschaltung mit dem wiederstand angeschlossen. Taster abfrage funktionierte einwandfrei. Dann wollte ich die PullUp Aktivierung Testen, alles umgestöpselt wie hier: http://playground.arduino.cc/Deutsch/Eingang

const int TasterPin = 8; // Taster an Pin 8 angeschlossen

//Variablen

int Leuchtmodus = 0; // Variable für die verschiedenen festgelegten Farben


void setup() {

  FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);

  // Festlegen der Ein- und Ausgänge
  pinMode(TasterPin, INPUT); //Setzt den TasterPin als Eingang
  digitalWrite(TasterPin, HIGH); // Pull Up Wiederstand aktivieren

}

void loop() {

  // Abfrage ob der Taster gedrückt ist
  int TasterStatus = digitalRead(TasterPin);

  //Wenn Taster gedrückt ist, Leuchtmodus +1
  if (TasterStatus == HIGH) {
    Leuchtmodus = Leuchtmodus++;
    delay(500);
  }

Da der Taster ja auf High ist wird der ganze Loop abgespielt. Also dachte ich könnte den Tasterstatus auf LOW setzen. Der Loop bleibt jetzt zwar stehen aber ich kann ihn auch nicht abfragen mit dem Taster…

Was genau mach ich falsch?

Erst Pullup, (richtige Logik)
Dann Pulldown (inverse Logik)

Also

 int TasterStatus = digitalRead(TasterPin);

Ändern in

 int TasterStatus = !digitalRead(TasterPin);

Nimm erst mal nur 10 Neopixel, die kann USB noch mit versorgen. In der Anfangsphase, bis du erst mal die Lib zum Laufen bekommst und die ersten Effekte durchgespielt hast, wirst du am meisten neu flashen müssen und damit per USB an den Controller müssen. Sonst vergisst man im Eifer des Gefechtes doch mal das Abschalten ;) Wenn du die Neopixel komplex verkabelst, vergiss nicht, das der nicht ganz unerhebliche Strom auch ankommen muß. Spendiere ein paar Elkos zur Spannungsstabilisierung über die 5V. es ist auch nicht verkehrt, wenn du die 5V E-förmig in mehreren Strängen verkabelst und auf jeden Strang dann einen Elko mit ein paar 100µF setzt. Die Datenleitung muß aber wie beim Stripe hintereinander von Pixel zu Pixel verlaufen. Auch ein stufenweiser Aufbau mit Zwischenkontrolle ist nicht ganz verkehrt. Wenn du z.B. nach 100 Pixeln erst mal testest, ob die laufen usw. Wenn man alles aufbaut und es läuft nicht, dann ist sonst erst mal Land unter :)

Wenn ich einen Schalter einbaue bekommen die LEDs keinen Strom was das testen schwieriger macht.

Nur der Vollständigkeit halber: IMMER die Spannungsversorgung von Arduino UND Leds trennen. An Neopixel ein Datensignal anzulegen während sie keine Betriebsspannung bekommen, ist ein ziemlich sicherer Weg, sie zu zerschießen. An einem Inputpin eine Spannung größer der Bertriebsspannung (0 V, wenn ausgeschaltet) mögen die meisten Controller gar nicht.

Ok der Pullup funktioniert, es wahr 3 Uhr morgens und das Steckkabel war nicht ganz eingesteckt. :confused:

int TasterStatus = !digitalRead(TasterPin);

Was genau sagt das Ausrufezeichen aus? (True/False?)

Im moment werden noch Neopixel und Arduino seperat mit Strom versorgt, bis ich die Programmierung habe. Habe noch ein Mikro dazugefügt (siehe Zeichnung). Den Stromschalter habe ich entfernt und werde das ganze mit dem Stromlosen USB steuern wie von “sschulterwolter” empfholen.

wenn du die 5V E-förmig in mehreren Strängen verkabelst und auf jeden Strang dann einen Elko mit ein paar 100µF setzt.

Sry verstehe ich noch nicht ganz? So wie in V.05? Ich nehme an es ist kein Problem die Kabel direkt an den Transistor zu Löten? (Habe kaum Platz in der Lampe)

Werde am schluss 52 Neopixel habe (Stücke nicht Stripes). 312 Lötstellen :cold_sweat:
Ich werde aber immer eins Löten und dann gleich Testen.

Ich habe bis jetzt das Mikro, Taster und FastLED Library mit einzelnen Sketches erfolgreich getestet.

Jetzt wollte ich das ganze zusammenfügen. Die ganzen define und setups habe ich vereinheitlicht. Und den Loop aus der Library kopiert.

//----------------------------------------------------------------------------------------Loop
void loop() {

  // Abfrage ob der Taster gedrückt ist
  int TasterStatus = !digitalRead(TasterPin);  // Ausrufezeichen zum umkehren von HIGH und LOW - durch den PullUp

  //Wenn Taster gedrückt ist, Leuchtmodus +1
  if (TasterStatus == HIGH) {
    Leuchtmodus = Leuchtmodus++;
    delay(500);
  }

  // Anzahl der Leutmodi auf 5 begrenzen. (0 bis 4)
  if (Leuchtmodus == 5) {
    Leuchtmodus = 0;
  }

  //+++++++++++++++ LEUCHTPROGRAMME +++++++++++++++++

  // ------------------------------------Modus 0 = Rot blinkendes Licht
  if (Leuchtmodus == 0) {
  // hier kommt der Code aus einem Beispiel....   
     uint8_t  i;
    uint16_t minLvl, maxLvl;
    int      n, height; usw...

Hatte beim ersten versuch zu viele geschlossene Klammern Fehlermeldung. Dies konnte ich noch beheben jetzt bekomme ich folgende

FertigesScript.ino: In function 'void loop()':
FertigesScript:97: error: 'Wheel' was not declared in this scope
FertigesScript:104: error: 'Wheel' was not declared in this scope
FertigesScript:140: error: a function-definition is not allowed here before '{' token
FertigesScript:192: error: expected `}' at end of input
FertigesScript:192: error: expected `}' at end of input

Ich verstehe das Problem nicht.

Kann man das ganze einfacher Lösen?

z.B. if (Leuchtmodus == 0) { dann spiele den Code aus der Datei XY ab

Hallo, zur Warnung: NeoPixel Strip kenne ich nicht. Dennoch hätte ich ein paar Anregungen:

  • Spannungsversorgung: Eine Diode zwischen Netzteil und Arduino könnte die Elektronik schützen, wenn mal ein USB-Kabel [u]mit[/u] Spannungsversorgung zum Einsatz käme, da dann nur Strom zum Arduino fließen kann. Gleichzeitig könnte ein Optokoppler oder Relais (nur geschlossen bei Spannung durch Netzteil) zwischen Ausgang 6 und NeoPixel Strip letzteren schützen, wenn der Arduino alleine angeschlossen wäre. Es wäre blöd, wenn Du Dir die mühsam aufgebaute Schaltung zerschießen würdest.
  • Taster1: Bei einem Taster kann man nur sequenziell von einem Lichtprogramm zum nächsten wechseln, außerdem fehlt eine Rückmeldung. Wie fändest Du eine Drehschalter, eventuell mit Kodierung?
  • Taster2: Mir hat die Auswertung der Signalflanke besser gefallen, könntest Du mal probieren.

(Edit: Hier habe ich Code entfernt.)

Viel Erfolg mit Deinem Projekt, ich würde gerne lesen, ob es funktioniert hat!

#define uint8_t  x
#define uint16_t minLvl

Ist aber Unsinn.

Das deklariert keine Variable. Das ist eine reine Text-Ersetzung. Dadurch wird vor dem Kompilieren jedes "uint8_t" durch "x" ersetzt und jedes "uint16_t" durch "minLvl".

Das verursacht noch mehr Fehler

Serenifly: Ist aber Unsinn.

Ich habe den Unsinn gelöscht, sollte nicht stehen bleiben. Danke!

Frage 1:

Eine Diode zwischen Netzteil und Arduino könnte die Elektronik schützen, wenn mal ein USB-Kabel mit Spannungsversorgung zum Einsatz käme

OK, gibt es verschiedene Stärken bei Dioden? Ich glaube die hätte ich sonst hier (siehe Bild)

Frage 2:

Optokoppler oder Relais (nur geschlossen bei Spannung durch Netzteil) zwischen Ausgang 6 und NeoPixel Strip

Habe ich glaube ich auch hier? (siehe Bild). Verstehe nicht ganz wie ich diese Anschliessen müsste? Welches Kabel zu welchem der 6 Füsse?