INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
WS2812b Matrix
22.07.2016, 17:52
Beitrag #1
WS2812b Matrix
Hallo da bin ich wieder mit dem nächsten Projekt:

Da ich noch ein paar LEDs Stripes übrig hatte, wurden 60 Stück zu einer Matrix zusammengelötet. Die Matrix ist 6 Reihen hoch und 10 LEDs breit.
Angesteuert über die ADAfruit Matrix Library. Das klappt auch so weit, nur ist der Text für 8 Zeilen ausgelegt. Bei mir fehlen daher die unteren beiden Zeilen und der Text "Arduino" wird unten abgeschnitten. Vielleicht kann mir jemand einen Tip geben, wie ich einen kleineren Font verwenden kann?
Oder gibt es noch eine andere Library?

Hier der Code
Code:
// Adafruit_NeoMatrix example for single NeoPixel Shield.
// Scrolls 'Howdy' across the matrix in a portrait (vertical) orientation.

#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#ifndef PSTR
#define PSTR // Make Arduino Due happy
#endif

#define PIN 6

// MATRIX DECLARATION:
// Parameter 1 = width of NeoPixel matrix
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as needed:
//   NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT:
//     Position of the FIRST LED in the matrix; pick two, e.g.
//     NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left corner.
//   NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arranged in horizontal
//     rows or in vertical columns, respectively; pick one or the other.
//   NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/columns proceed
//     in the same order, or alternate lines reverse direction; pick one.
//   See example below for these values in action.
// Parameter 5 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)


// Example for NeoPixel Shield.  In this application we'd like to use it
// as a 5x8 tall matrix, with the USB port positioned at the top of the
// Arduino.  When held that way, the first pixel is at the top right, and
// lines are arranged in columns, progressive order.  The shield uses
// 800 KHz (v2) pixels that expect GRB color data.
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(10, 6, PIN,
  NEO_MATRIX_TOP     + NEO_MATRIX_LEFT +
  NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
  NEO_GRB            + NEO_KHZ800);

const uint16_t colors[] = {
  matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };

void setup() {
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(40);
  matrix.setTextColor(colors[0]);
}

int x    = matrix.width();
int pass = 0;

void loop() {
  matrix.fillScreen(0);
  matrix.setCursor(x, 0);
  matrix.print(F("Arduino"));
  if(--x < -50) {
    x = matrix.width();
    if(++pass >= 3) pass = 0;
    matrix.setTextColor(colors[pass]);
  }
  matrix.show();
  delay(100);
}

Und natürlich die Schaltbilder im Anhang


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.07.2016, 08:09
Beitrag #2
RE: WS2812b Matrix
Hallo,

ich kann Dir höchstens den Link zur GFX-Lib anbieten:
https://learn.adafruit.com/adafruit-gfx-...sing-fonts

Allerdings ist ein 6 Pixel hoher Font ziemlich unleserlich, schon mit 7 hat man das Problem mit den Unterlängen bei g usw.

Besser also wohl umbauen...

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.07.2016, 13:53
Beitrag #3
RE: WS2812b Matrix
..oder selber eine Matrix generieren...ist nur die Frage wie man die in die Lib dann einfügt.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.08.2016, 15:45
Beitrag #4
RE: WS2812b Matrix
Hallo zusammen,
vielen Dank für die Info`s. Da es leider keine Lösung für die nur 6 Zeilen Darstellung gibt, habe ich mir etwas Neues überlegt. Meine Frau hatte da ein schönes kleines Kunststoffdöschen. Habe dann auf eine Klopapierrolle 4 Reihen von meinen WS2812b geklebt und einen Arduino Nano gerade so reinbekommen. Wink Dann noch mit Butterbrotpapier hinzugefügt und aus der FastLED Library die "DemoReel100" anpasst.

Sieht echt nett aus. Hier der Code:
Code:
#include "FastLED.h"

FASTLED_USING_NAMESPACE

// FastLED "100-lines-of-code" demo reel, showing just a few
// of the kinds of animation patterns you can quickly and easily
// compose using FastLED.  
//
// This example also shows one easy way to define multiple
// animations patterns and have them automatically rotate.
//
// -Mark Kriegsman, December 2014

#if defined(FASTLED_VERSION) && (FASTLED_VERSION < 3001000)
#warning "Requires FastLED 3.1 or later; check github for latest code."
#endif

#define DATA_PIN    6
//#define CLK_PIN   4
#define LED_TYPE    WS2811
#define COLOR_ORDER GRB
#define NUM_LEDS    30
CRGB leds[NUM_LEDS];

#define BRIGHTNESS         150
#define FRAMES_PER_SECOND  120

void setup() {
  delay(3000); // 3 second delay for recovery
  
  // tell FastLED about the LED strip configuration
  FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  //FastLED.addLeds<LED_TYPE,DATA_PIN,CLK_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);

  // set master brightness control
  FastLED.setBrightness(BRIGHTNESS);
}


// List of patterns to cycle through.  Each is defined as a separate function below.
typedef void (*SimplePatternList[])();
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };

uint8_t gCurrentPatternNumber = 0; // Index number of which pattern is current
uint8_t gHue = 0; // rotating "base color" used by many of the patterns
  
void loop()
{
  // Call the current pattern function once, updating the 'leds' array
  gPatterns[gCurrentPatternNumber]();

  // send the 'leds' array out to the actual LED strip
  FastLED.show();  
  // insert a delay to keep the framerate modest
  FastLED.delay(1000/FRAMES_PER_SECOND);

  // do some periodic updates
  EVERY_N_MILLISECONDS( 40 ) { gHue++; } // slowly cycle the "base color" through the rainbow
  EVERY_N_SECONDS( 20 ) { nextPattern(); } // change patterns periodically
}

#define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0]))

void nextPattern()
{
  // add one to the current pattern number, and wrap around at the end
  gCurrentPatternNumber = (gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns);
}

void rainbow()
{
  // FastLED's built-in rainbow generator
  fill_rainbow( leds, NUM_LEDS, gHue, 7);
}

void rainbowWithGlitter()
{
  // built-in FastLED rainbow, plus some random sparkly glitter
  rainbow();
  addGlitter(80);
}

void addGlitter( fract8 chanceOfGlitter)
{
  if( random8() < chanceOfGlitter) {
    leds[ random16(NUM_LEDS) ] += CRGB::White;
  }
}

void confetti()
{
  // random colored speckles that blink in and fade smoothly
  fadeToBlackBy( leds, NUM_LEDS, 10);
  int pos = random16(NUM_LEDS);
  leds[pos] += CHSV( gHue + random8(64), 200, 255);
}

void sinelon()
{
  // a colored dot sweeping back and forth, with fading trails
  fadeToBlackBy( leds, NUM_LEDS, 20);
  int pos = beatsin16(13,0,NUM_LEDS);
  leds[pos] += CHSV( gHue, 255, 192);
}

void bpm()
{
  // colored stripes pulsing at a defined Beats-Per-Minute (BPM)
  uint8_t BeatsPerMinute = 20;
  CRGBPalette16 palette = PartyColors_p;
  uint8_t beat = beatsin8( BeatsPerMinute, 64, 255);
  for( int i = 0; i < NUM_LEDS; i++) { //9948
    leds[i] = ColorFromPalette(palette, gHue+(i*2), beat-gHue+(i*10));
  }
}

void juggle() {
  // eight colored dots, weaving in and out of sync with each other
  fadeToBlackBy( leds, NUM_LEDS, 20);
  byte dothue = 0;
  for( int i = 0; i < 8; i++) {
    leds[beatsin16(i+7,0,NUM_LEDS)] |= CHSV(dothue, 200, 255);
    dothue += 32;
  }
}

Dann bis zum nächsten Projekt................ ;-)


   
   
   

Crazy Hawk
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2016, 14:33
Beitrag #5
RE: WS2812b Matrix
Ich hab zu diesen LED Streifen mal einige Fragen:

So, wie ich das verstanden habe, ist mein Programm im Arduino in der Lage jeder einzelnen LED seine eigenen RGB Farb-Anteile mitzuteilen.
Ist das soweit korrekt?

Wenn Ja:
Wie muss ich mir das vorstellen?
Schick ich vorne z.B. 23,128,128,255
Wird dann die LED Nummer 23 mit den RGB 128,128,255 "erleuchtet"?

Wieviele LEDs lassen sich denn hintereinander betreiben?

Wäre es sogar möglich, ein "Display" von 1024x768 LEDs aufzubauen?
Das hier ein Arduino an seine Grenzen kommt, sollte klar sein Smile

Aber mir geht's grad nur um die maximale Anzahl "Pixel", die auf diese Weise überhaupt machbar wäre.

Habet Dank

Binatone
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2016, 21:08
Beitrag #6
RE: WS2812b Matrix
Hallo

(26.08.2016 14:33)Binatone schrieb:  So, wie ich das verstanden habe, ist mein Programm im Arduino in der Lage jeder einzelnen LED seine eigenen RGB Farb-Anteile mitzuteilen.
Ist das soweit korrekt?
Ja, korrekt.

(26.08.2016 14:33)Binatone schrieb:  Wenn Ja:
Wie muss ich mir das vorstellen?
Schick ich vorne z.B. 23,128,128,255
Wird dann die LED Nummer 23 mit den RGB 128,128,255 "erleuchtet"?

Nein. Es werden alle Daten seriell rausgeschickt. Die zuerst gesendetet landen in der ersten LED, alle weiteren werden von dieser LED dann nur weitergereicht.
LED1 bekommt also den ersten RGB-Wert, LED2 den zweiten usw. bis zur letzten.

(26.08.2016 14:33)Binatone schrieb:  Wieviele LEDs lassen sich denn hintereinander betreiben?
Am Arduino mit dem Mega328 ca. 300, dann ist der Ram voll.
An einem ESP8266 soll ein Programmierer schonmal 3000 dran gehabt haben...

(26.08.2016 14:33)Binatone schrieb:  Wäre es sogar möglich, ein "Display" von 1024x768 LEDs aufzubauen?
Das hier ein Arduino an seine Grenzen kommt, sollte klar sein Smile

Also 69632. Werden dann eben rund 233 Arduino Uno/Nano.
Netzteil wird auch etwas größer, bei maximal an sind es 60mA pro LED, also in Summe dann knapp 4178A, die Arduinos nicht mitgerechnet.
Die gut 20kW wirst Du ja noch auftreiben können. Wink

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2016, 21:25
Beitrag #7
RE: WS2812b Matrix
(26.08.2016 21:08)amithlon schrieb:  Hallo
...
(26.08.2016 14:33)Binatone schrieb:  Wäre es sogar möglich, ein "Display" von 1024x768 LEDs aufzubauen?
Das hier ein Arduino an seine Grenzen kommt, sollte klar sein Smile

Also 69632. Werden dann eben rund 233 Arduino Uno/Nano.
Netzteil wird auch etwas größer, bei maximal an sind es 60mA pro LED, also in Summe dann knapp 4178A, die Arduinos nicht mitgerechnet.
Die gut 20kW wirst Du ja noch auftreiben können. Wink

Gruß aus Berlin
Michael

Mein oller Taschenrechner liefert mir andere Zahlen.
1024x768 LEDs = 768432 LEDs
768432 LEDs x 60mA = 47185,92A
47185,92A x 5V = 235939,6W oder knapp 236kW. Big Grin

Statt 1024x768 hattest du 1024x68 gerechnet. Tongue

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.08.2016, 11:13
Beitrag #8
RE: WS2812b Matrix
Ach was...
Und dann wird LED Technik immer als Energiesparend verkauft Big Grin

Das Prinzip der Dinger ist ja nun wirklich TOP!



Naja, kommt erstmal gaaaaanz nach hinten auf die Wunschliste.. Wink

Binatone
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Projektvorstellung LED Matrix mit seriellem PWM Treiber Bastlerstube 6 2.005 30.04.2016 13:54
Letzter Beitrag: SkobyMobil
Big Grin Bluetooth CoronaClock mit WS2812b LED mit App für Android Wampo 7 2.667 27.03.2015 21:55
Letzter Beitrag: Wampo
Lightbulb LED Thermometer über WS2812b LED und Dallas DS18B20 Wampo 2 1.736 15.03.2015 17:45
Letzter Beitrag: Wampo
Lightbulb HC-SR4 Ultraschall Abstands Ampel mit WS2812b Pixel LED´s Wampo 0 1.772 14.03.2015 18:40
Letzter Beitrag: Wampo
  RC-Truck, Kransteuerung und Led-Matrix mit Arduino Pat12-6 0 1.340 14.03.2015 12:10
Letzter Beitrag: Pat12-6
  vorbereitung für spectrum analyzer speziell ws2812b nighty2006 16 4.456 28.02.2015 13:29
Letzter Beitrag: nighty2006
Lightbulb Hexacopter LED mit RC Empfänger und WS2812B LED Wampo 9 3.380 02.01.2015 14:17
Letzter Beitrag: Wampo

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste