Forum

Forum-Navigation
Du musst dich anmelden um Beiträge und Themen zu erstellen.

Tennsy 4.1 mit xlights LED Pixel WS2811 ansteuern

Hallo Jssr,

bin neu hier im Forum und kämpfe mit dem gleichen Problemen und Fragen wie du?

Habe im letzten Jahr nach der Anleitung von Heiz meine "Anlage" aufgebaut und möchte/wollte sie mit Vixen betreiben. Leider stürzt bei mir Vixen jedesmal ab wenn ich an den Grundeistellungen des Setup Display was ändere und würde gerne auf XLights umstellen...

Hat es mit XLights geklappt und verwendest Du dafür den gleichen Sketch auf Teensy wie mit Vixen? Wo muss was geändet werden?

Sorry wenn ich da in deine Fragen reinplatze!

 

VG Martin

 

Sieht so aus als hätte ich es hin bekommen, muss ich aber noch weiter testen.

Nachdem ich in XLights nichts zum einstellen für einen Header wie mit Vixen beschrieben gefunden habe, hab ich mal pauschal alles aus dem Sketch von Heinz gelöscht was damit zu tun hat und wieder auf die Teensy geladen. Und siehe da, meine kleine Testanlage leuchtet in allen Farben.

Nachdem ich mit C++ (oder was es für eine Sprache ist) nichts am Hut habe, kann ich nicht sagen ob es jetzt einen anderen Nachteil gibt. Hauptsache es leuchtet erstmal!

Sketch:

/*
************************ Heinz Doessegger - http://www.technikfreak.ch ******************************

vchristmas v1.0 - Januar 2015
Dokumentation zum Projekt:
http://www.technikfreak.ch/category/technik-elektronik/technik-elektronik-projekte/technik-elektronik-projekte-weihnachtsbeleuchtung/

HARDWARE: TEENSY 3.1 / 3.2

ARDUINO PLUGIN: TEENSYDUINO mit OctoWS2811 Bibliothek
http://www.pjrc.com/teensy/td_download.html

LED: WS2811

SOFTWARE: Vixen Lights 3.x
Programm zur Steuerung von WS2811 RGB LED durch Vixen Lights 3.x http://www.vixenlights.com/
DISPLAY CONFIGURATION - COMx (x = COM Port von Arduino) 115200, None, 8 One
SEND A TEXT HEADER: VIXStart
Kanaele: Pro LED braucht es 3 Kanäle (Rot/Gruen/Blau)
Color Handling: RGB

TIPP: Fuer Einsteiger
Zum Start nur mit einer 50er LED Reihe beginnen. ledsPerStrip und PixelCount jeweils auf 50 setzen.
In Vixen Lights 50 LED Elemente anlegen und ueber das Color Handling RGB auf 150 Ausgaenge mappen.

************************ Heinz Doessegger - http://www.technikfreak.ch ******************************
*/

#include <OctoWS2811.h>

const int ledsPerStrip = 50; // Maximale Anzahl Pixel pro Strang
int PixelCount = 400; // Effektive Anzahl Pixel
float hell = 0.20; // Dimmer 1.00=100% Helligkeit - 0.50=50% Helligkeit

DMAMEM int displayMemory[ledsPerStrip*6];
int drawingMemory[ledsPerStrip*6];
const int config = WS2811_RGB | WS2811_800kHz;
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);
int pixelValue = 0;

void setup()
{
delay(300);
Serial.begin(115200); // Geschwindigkeit der Datenuebertragung von Vixen Lights 3 zum Arduino

leds.begin();
for (int i=0;i<PixelCount;i++) // Initialisierung - Einmalig leuchten alle LED blau
{
leds.setPixel(i, 0, 0, 200*hell);
}
leds.show();
delay (5000);
for (int i=0;i<PixelCount;i++)
{
leds.setPixel(i, 0, 0, 0);
}
leds.show();
}

void loop()
{

if (Serial.available()>6) // Auf Datenuebertragung von Vixen Lights warten
{

for (int pixCount=0; pixCount<PixelCount;

 

DerWaldFried hat auf diesen Beitrag reagiert.
DerWaldFried

Genau das ganze ist C wenn ich das richtig sehe oder wie du schon meintest maximal c++ 🙂

Heinz Doessegger - http://www.technikfreak.ch

#include <OctoWS2811.h>

const int ledsPerStrip = 50; // Maximale Anzahl Pixel pro Strang
int PixelCount = 400; // Effektive Anzahl Pixel
float hell = 0.20; // Dimmer 1.00=100% Helligkeit - 0.50=50% Helligkeit

DMAMEM int displayMemory[ledsPerStrip*6];
int drawingMemory[ledsPerStrip*6];
const int config = WS2811_RGB | WS2811_800kHz;
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);
int pixelValue = 0;

void setup()
{
delay(300);
Serial.begin(115200); // Geschwindigkeit der Datenuebertragung von Vixen Lights 3 zum Arduino

leds.begin();
for (int i=0;i<PixelCount;i++) // Initialisierung - Einmalig leuchten alle LED blau
{
leds.setPixel(i, 0, 0, 200*hell);
}
leds.show();
delay (5000);
for (int i=0;i<PixelCount;i++)
{
leds.setPixel(i, 0, 0, 0);
}
leds.show();
}

void loop()
{

if (Serial.available()>6) // Auf Datenuebertragung von Vixen Lights warten
{

for (int pixCount=0; pixCount<PixelCount;

"const int" bedeutet, dass es sich bei LED um eine Ganzzahl handelt, die nicht geändert werden kann (d.h. sie ist eine Konstante) und für die der Wert 50 festgelegt wurde.

Int muss, gemäß ANSI C, mindestens eine Größe von zwei Byte aufweisen. Mit diesen zwei Bytes lässt sich ein Zahlenraum von -32768 bis +32767 beschreiben. Mit dem Datentyp int lassen sich nur Ganzzahlen darstellen. Die Abkürzung int steht für Integer. Hier wurde 400 bestimmt.

Float Zahlen werden in 32 Bit gespeichert. Float kommt von floating point, das heißt, es können gebrochene Zahlen (27,50, 0,25 usw) gespeichert und auch berechnet werden können. Hier wurde 0,20 bestimmt. Der Float wird genutzt um eine Dunkelheit oder Helligkeit der LED zu erzeugen.

DMAMEM definierte Variablen werden am Anfang von RAM2 platziert. Normalerweise werden hier Puffer und große Arrays platziert. Diese Variablen können nicht initialisiert werden. Deswegen nutzen wir eine Int dazu und kommen deswegen auf den Code "DMAMEM int"

displayMemory[ledsPerStrip*6]; legt fest wie viele Leds an einer Strip sind und zeigt den Speicher an. Zum Beispiel Teensy 3.1 hat genug Ram für bis zu 300 LEDs pro Strip. Bei der 4.1 sind es nach meinem Wissen bis zu 600.

 

Ein kleiner LinkTip von mir, ist wenn du Englisch kannst https://www.pjrc.com/store/teensy40_pins.html da findet man so ein wenig Übersicht wie es funktioniert.

Hallo Martin, sorry das ich erst jetzt auf Deine Nachricht Antworte. Ich war so genervt von den Misserfolgen die ich hatte, das ich erstmal eine Pause eingelegt habe.
Um so erfreulicher ist, das andere sich auch damit Beschäftigen.

Also, bei mir lief Vixen mit dem Sketch von Heinz Einwandfrei und Problemlos.

Auf Deine Frage, ob bei mir mittlerweile Xlights läuft, kann ich mit Nein Beantworten.
Habe Wochenlang im Internet nach Lösungen gesucht und irgendwie nichts Brauchbares finden können. Auch Kontakte ins Amerikanische Forum hat nichts dazu beigetragen Lösungen zu finden.

Es werden wohl nur wenige ein Teensy verwenden werden.

Brauchts dich nicht zu Entschuldigen. Das Forum ist doch für alle da und wenn dadurch Lösungen gefunden werden ist das für alle Interessierten von Vorteil.

Und so wie es aussieht, hast Du tatsächlich eine Lösung gefunden oder was haben Deine Teste ergeben.

Das Interessiert mich jetzt aber Brennend. Das wäre ja der Hammer hoch drei.

Gruß Jörg

Ich werde mal Dein Sketch ausprobieren und Berichten ob es auch bei mir funktioniert.

Hast Du auch ein Teensy 4.1 oder ein anderen?

Gruß Jörg

Versuch ist Gescheitert, kann den Sketch nicht auf mein Teensy laden.

for (int pixCount=0; pixCount<PixelCount;         Fehlermeldung: Hier werden noch Eingaben/Daten erwartet.

 

Gruß Jörg

Hallo Jssr,

Leider auch gibt es auch bei mir keinen 100%igen Durchbruch undvon meiner Vorfreude, dass alle Lichter leuchten ist im Augenblick nicht viel übrig und der frust geht weiter. Den Skatch den ich hier gepostet hab, hab nochmal „geändert“ weil wie du schon geschrieben hast noch einen fehler gefunden würde. Bei meinen post fehlten ein paar Zeilen. Sorry!! Hoffe mit dem klappt es besser:

/* ===========================================================================================================================================================
* Sketch zur Übertragung von LED Sequenzen via XLights auf Teensy
* V. 0.1 - 18.07.2021
* Ursprung: vchrismas_1_0 by Heinz
*============================================================================================================================================================
*/

#include <OctoWS2811.h>

const int ledsPerStrip = 700; // Maximale Anzahl Pixel pro Strang
int PixelCount = 2800; // Effektive Anzahl Pixel = maximale Anzal x 8 !!!!
float hell = 0.60; // Dimmer 1.00=100% Helligkeit - 0.50=50% Helligkeit -> evtl. beim 1. Start auf 1.0 setzen

DMAMEM int displayMemory[ledsPerStrip*6];
int drawingMemory[ledsPerStrip*6];
const int config = WS2811_RGB | WS2811_800kHz;
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);
int pixelValue = 2800;

void setup()
{
delay(300);
Serial.begin(250000); // Geschwindigkeit der Datenuebertragung

leds.begin();
for (int i=0;i<PixelCount;i++) // Initialisierung - Einmalig leuchten alle LED blau
{
leds.setPixel(i, 0, 0, 200*hell);
}
leds.show();
delay (5000);
for (int i=0;i<PixelCount;i++)
{
leds.setPixel(i, 0, 0, 0);
}
leds.show();
}

 

void loop()
{

if (Serial.available()>5) // Auf Datenuebertragung warten
{

for (int pixCount=0; pixCount<PixelCount;pixCount++) // Tun Sie dies für so viele Pixel, die in PixelCount definiert sind
{
int RGB[3]; // Array fuer die drei RGB Farbwerte
for (int color = 0;color<3;color++) // Drei Werte bilden jeweils eine RGB LED
{
while (Serial.available() < 1) // Auf die naechste Zahl warten
{
delay(10);
}
RGB[color] = int(Serial.read()*hell); // Farbwert dem Array zuweisen mit Helligkeitskorrektur
} // Wiederholen bis alle drei Werte eingelesen sind

leds.setPixel(pixCount, RGB[1], RGB[0], RGB[2]);

} // Wiederholen bis alle LED eingelesen sind
leds.show(); // Farbmuster aktivieren
} // Naechstes Farbmuster holen
}

 

Aktuell funktioniert es zwar mit xLights, aber nicht richtig. Dich Farbverläufe sehen eher so aus als würde jemand einen Lichtschalter umschalten als fliesend und statische Effekte bewegen sich… Zum aus der Haut fahren.

Ich denke aber, dass diese Probleme irgendwo in den Grundeistellungen von xLights stecken und versuche es weiter. Evtl auch auf einen anderen Controller umsteigen

 

 

Der neue Sketch funktioniert tatsächlich. Das blinken kann man unter Tools und dann Test mit den Schiebereglern abstellen.
Farbverläufe laufen jetzt ohne blinken aber sehr langsam und die Farben stimmen noch nicht überein. Blau ist bei mir Rot und Rot ist Blau.
Denke, das es alles eine Einstellsache ist.

 

Hallo zusammen,

wäre für euch ein Umstieg auf den Teensy 3.2 und vixen lights denkbar ? Hier gibt es super Anleitungen, wie man die Pixel zum leuchten bringt.
Die meisten hier im Forum haben wohl mit der Kombi angefangen und haben viel Erfahrung gesammelt.
Weihnachten soll ja nett blinken und keinen Frust schieben.

….nur ne Idee 😉

Hallo zusamme,

Bei mir begingt die 4 Weihnachtbeleuchtung Saison

vor 3 Jahren habe ich auch meine ersten versuche mit den Teensy Controller gemacht. Der Erfolg hielt sich in Grenzen.
Habe mich dann für die Advatek Controller entschieden, von denen (PixLite 16 Und PixLite 4 MkII) habe  ich jetzt 8 Stück im Einsatz. Vorteil ist das ich alles mit Netzwerk anspeien kann, und auch noch meine DMS Steuerungen mit diesen Controller mitmachen kann. Die Entfernung vom PC zu den Controllern sind ca. 150-200 Meter. Eine Strecke habe ich mit Wlan in Betrieb ca. 250 Meter da eine Straße dazwischen ist.

Bin froh das ich mich für diese Controller entschieden habe (natürlich Kostengünstig ist etwas anderes)

Software verwenden ich das xLights Programm.

Ich werdende lieber meine Zeit zum Steuerungskasten und Wasserfesten Steckverbindungen Bau und  noch zum Lichteffekte Programmieren.

rudis-weihnachtsbeleuchtung.at

Dann noch viele erfolge mit Teensy euer Rudi