Neopixel2

Aus letsgoing
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Normale RGBs

Eine RGB-LED besteht bekanntermaßen aus 3 LEDs: einer roten, einer grünen und einer blauen. Jede LED hat zwei Anschlüsse: Eine Anode und eine Kathode. RGB-LEDs haben entweder eine gemeinsame Anode oder eine gemeinsame Kathode. Man braucht also für eine RGB-LED 4 Anschlüsse. Um die unterschiedlichen Farben zu erzeugen, kann man über die PWM-Pins die Werte für jede Farbe zwischen Null und 255 einstellen. Man hat also 256 * 256 * 256 Möglichkeiten - das sind 16,7 Mio theoretisch mögliche Farben! Man braucht allerdings für jede RGB-LED drei Pins. Selbst mit einem Arduino-Mega (der verfügt über 15 PWM-Pins) lassen sich nur 15 RGBs einzeln ansteuern. Wenn man 4 RGBs unabhängig steuern möchte, hat man schon einen ordentlichen Kabelsalat!

NeoPixel

Bezugsquellen

Händler:
http://www.exp-tech.de/Shields/Prototyping/NeoPixel-Mini-PCB-Pack-of-5.html

Umfangreiche Information und Bastelideen (Hersteller):
https://learn.adafruit.com/adafruit-neopixel-uberguide Neopixel von Adafruit bieten hier phantastische Möglichkeiten: Mit nur einem Pin kann ich jede einzelne RGB eines Streifen mit 30, 60 oder 144 RGBs einzeln ansteuern. Die Neopixel-RGBs gibt es als Ringe, Matrix oder einzeln. Jede RGB hat einen kleinen Chip und wird über ein spezielles Protokoll angesprochen. Damit das funktioniert, müssen in einem bestimmten Takt Informationen an die einzelnen RGBs gesendet werden. Die einzeln RGB-LEDs werden als Pixel bezeichnet und sind durchnummeriert - beginnend mit Null! Die dritte RGB wird somit mit Pixel 2 angesprochen. Für den Betrieb der Pixel ist ein Microcontroller (z.B. Arduino) notwendig.

Sensor CH18 Neopixel1.jpg


SMD-Neopixel

NeopixelEinzel.jpg NeopixelAnschluss.jpg

Jede Neopixel-RGB hat 4 Anschlüsse:

  • G für GROUND (hier 2 mal zum Durchschleifen),
  • + für VCC bzw. 5V (hier 2 mal zum Durchschleifen) (zwingend 5 Volt, mit weniger Volt funktionieren sie nicht, mit mehr Volt gehen sie kaputt!)
  • I für Data IN (der erste Pixel wird mit einem Pin des Arduinos verbunden, bei den folgenden Pixel kommt hier das Signal vom vorherigen Pixel)
  • O für Data OUT (geht zum nächsten Pixel)

Es empfiehlt sich zwischen die Zuleitung (5Volt und GND) einen Kondensator (ca 1000 [math]\mu[/math] F , 6.3V oder höher) zu schalten um die Pixel zu schützen.
Außerdem sollte zwischen dem Pin und dem ersten Pixel ein Vorwiderstand geschaltet werden (300-500 [math]\Omega[/math]).

Die NeoPixel können jeweils mit einem Abstand von maximal ca 15cm hinterinander geschaltet werden. Bei größerer Distanz kann es zu Datenverlust oder Lücken in der Stromversorgung kommen und die LED wird nicht korrekt angesteuert.


Spannungsversorgung - Stromversorgung

ACHTUNG: Die kleinen Neopixel-RGBs ziehen ganz gut Strom. Jede Farbe zieht 18,5 mA. Das macht pro Pixel maximal 55 mA. Da unser Arduino über die 5V-Stromversorung nur maximal 500 mA bereitstellen kann, sind 8 Pixel die Obergrenze. Bei längeren Ketten muss man auf eine externe Stromversorung zurückgreifen.

Hinweis: Die 55mA werden jedoch nur bei voller Helligkeit und weißem Licht benötigt. Meistens reicht es aus mit 20mA pro Pixel zu rechnen.

ACHTUNG: Bei externer Stromquelle: Nur 5 Volt Netzteile verwenden. Nur 5 Volt - Akkus verwenden --> bei 6 Volt werden die Neopixel zerstört!


Ketten von Neopixeln

  • Neopixel Ringe
  • Neopixel Streifen

NeopixelRing.jpg NeopixelStrip.jpg

Einzelne Neopixel

  • SMD Neopixel mit Steckbrett-Pins
  • SMD Neopixel zum Löten
  • HMD-Neopixel (klassische Form mit 4 Beinchen) 5mm
  • HMD-Neopixel (klassische Form mit 4 Beinchen) 8mm

NeopixelAnschluss.jpg Neopixel2a.jpg Neopixel5mm.jpg

Neopixel an Arduino anschließen

https://learn.adafruit.com/adafruit-neopixel-uberguide/power
"Before connecting a NeoPixel strip to ANY source of power, we very stronglyrecommend adding a large capacitor (1000 µF, 6.3V or higher) across the + and –terminals. This prevents the initial onrush of current from damaging thepixels."

"Adding a 300 to 500 Ohm resistor between your microcontroller's data pin and the datainput on the first NeoPixel can help prevent voltage spikes that mightotherwise damage your first pixel. Please add one between your micro andNeoPixels!"

Wir hatten bisher keine Probleme ohne Kondensator und ohne Vorwiderstand:
Wir hatten als Spannungsquelle jedoch immer die geregelte Spannung vom Arduino und keine extern Spannungsquelle eingesetzt!


Neopixel1 Steckplatine3a.png

Neopixel ArduBlock

Setup Block

Damit das Protokoll funktioniert musst du die Library einbinden, ein Objekt für unseren Streifen erzeugen und dieses Objekt in einem Setup - Block initialisieren. All das erledigt der Setup-Neopixel-Block für uns.

SetupNeopixel.png

Du musst angeben

an welchem Pin die Kette hängt --> hier Pin2
wie viele Pixel in der Kette enthalten sind --> hier 4 Stück
mit welchem Takt dein Chip arbeitet --> hier 800kHz (für unsere Neopixel immer richtig)
welche Art von Neopixel --> hier NEO_GRB (fast alle Neopixel brauchen GRB, nur Einzel-RGB klassissch 5mm oder 8mm brauchen die Einstellung NEO_RGB 

Farbe fuer Pixel RGB

Nach dieser Initialisierung kannst du mit dem Block "Farbe fuer Pixel RGB" jede einzelne Pixel-RGB gezielt ansprechen und die Werte für rot, grün und blau übergeben. Der Befehl setPixelColor(3,255,0,0 ); spricht deine 4. RGB an und übergibt an deren Chip das Triple 255,0,0 also Rot!


Die Routine strip.setPixelColor( index, r,g,b) setzt die Farbe für einen Pixel. R, g und b sind die jeweiligen Farbanteile für Rot, Grün und Blau der gewünschten Farbe. Die Werte können dabei zwischen 0 und 255 liegen. strip.setPixelColor(3,255,0,0) setzt die Farbe für den vierten Pixel auf rot.
NeopixelFarbe.png

An welchem Pin hängt die Kette --> hier Pin2
Welcher Pixel soll programmiert werden --> hier der erste Pixel (also Nummer 0) 
Welchen PWM-Wert erhält rot? Bereich von [0 bis 255]
Welchen PWM-Wert erhält grün? Bereich von [0 bis 255]
Welchen PWM-Wert erhält blau? Bereich von [0 bis 255]

Daten an Pixel senden

Mit dem Block "Daten an Pixel senden" werden die Farbeinstellungen an die Pixel gesendet.
NeopixelDaten.png

Die Daten werden an die Kette gesendet, die an Pin2 hängt.

Wann dieser Befehl kommt, ist entscheidend für das Ergebnis.

NeopixelBsp1.png NeopixelBsp2.png

Linkes Beispiel: Die 4 RGBs werden gleichzeitig auf rot gestellt.
Rechtes Beispiel: Die 4 RGBs werden nacheinander auf rot gestellt.

Helligkeit [0...255]

Mit dem Block "Helligkeit [0...255] werden alle Farben im Verhältnis skaliert und damit gedimmt. Die Routine setBrightness(uint8_t b) - skaliert alle Farben und beeinfluss so die Helligkeit
NeopixelHelligkeit.png

Die Helligkeit der Pixel an Pin2 wird festgelegt
Der Wert wird auf 255 (Maximum) festgesetzt.

Neopixel - LEDs löten

Schritt Vorgehen Bild
1.

In klassischen RGB-LEDs sind 3 farbige LEDs verbaut: eine rote, eine grüne und eine blaue. Ein Beinchen der klassischen RGB ist entweder die gemeinsame Annode oder die gemeinsame Kathode. Die anderen 3 Beinchen sind den Farben zugeordnet.

Eine Neopixel-LED besteht ebenfalls aus 3 LEDs:
nämlich einer roten, einer grünen und einer blauen.

Anders als bei einer normalen RGB sind bei einer Neopixel RGB die Beinchen jedoch keinen Farben zugeordnet.

Rgb.jpg

2.

Die Neopixel-RGB hat wie die klassische RGB vier Beinchen.

Aber 2 Beinchen dienen der Stromversorung (5V und GND) - die anderen Beinchen sind Data-In und Data-Out.

Eine Neopixel-RGB hat einen kleinen Chip. Wenn ein Signal über Data-In hineinkommt, liest der Chip aus, welche Information für ihn bestimmt ist. Bei eine Kette von 4 Neopixel übernimmt Neopixel Nummer 3 also nur die Daten, die vom Mikrocontroller an ihn gehen. Ist zum Beispiel Neopixel-RGB Nummer 3 angesprochen, dann werden die Farbwerte für rot, grün und blau entsprechend der übermittelten PWM-Werte übernommen.

Über Data-Out werden die Informationen an die nächste Neopixel-RGB weitergegeben.

Neopixel.jpg

3.

Die Neopixel-LEDs haben vier Anschlüse: 2 lange Beinchen und 2 kurze Beinchen
Das äußere kurze Beinchen ist der Data-In-Anschluss
Das mittlere kurze Beinchen ist der 5-Volt-Anschluss
Das mittlere lange Beinchen ist der GND-Anschluss
Das äußere lange Beinchen ist der Data-Out-Anschluss

NeopixelAnschluesse.jpg

4.

Vorbereiten der Neopixel (hier mit Buchsen):

  1. Verzinnen der Anschlussleitung
  2. Schrumpfschlauch über Anschlussleitung ziehen
  3. Anlöten der Anschlussleitung an Beinchen
  4. Schrumpfschlauch über Lötstelle ziehen
  5. Schrumpfschlauch mit Feuerzeug schrumpfen: Mit einem Fön oder einem Feuerzeug werden die Schrumpfschläuche so lange erhitzt, bis sie sich zusammenziehen.


Bezeichnung der Anschlussleitungen:

  1. Blau: Data In (außen kurzes Beinchen)
  2. Rot: 5 Volt (mitte kurzes Beinchen)
  3. Schwarze: GND (mitte langes Beinchen)
  4. Gelb: Data Out (außen langes Beinchen)


NeopixelAnschluesse1.jpg

5.

Anschließen der Neopixel an den Arduino:

  1. Alle roten Kabel werden mit dem 5 Volt-Pin verbunden (Steckbrett oder Verteiler)
  2. Alle schwarzen Kabel werden mit dem GND-Pin verbunden (Steckbrett oder Verteiler)
  3. Der blaue Anschluss er ersten Neopixel-RGB wird mit einem beliebigen Pin vom Arduino verbunden
  4. Die anderen Neopixel-RGBs werden in Reihe geschatet: Data-Out von Pixel-Nummer1 wird mit Data-In von Pixel-Nummer2 verbunden usw.

Neopixel1 Steckplatine3a.png

6.

Da der Arduino nur über einen 5 Volt-Anschluss verfügt, musst du die 5-Volt-Anschlüsse deiner Neopixel-RGBs auf einem Steckbrett zusammenfassen oder mit einer Klemme verbinden oder einfach zusammenlöten. Bei den GND-Anschlüssen verfährst du genauso. Die erste Neopixel-RGB wird mit einem Pin auf dem Arduino verbunden. Die folgenden Neopixel-RGBs werden in Reihe geschaltet: Data-Out mit Data-In verbinden. Der Data-Out-Anschluss der letzten Neopixel-RGB bleibt frei.

5V Gnd.png

Meine Werkzeuge
Namensräume

Varianten
Aktionen
letsgoING Software
Aktoren
Bluetooth