Resolume Arena 5

Hallo zusammen, mein erster Post und schon eine Frage. Ich bastel seit einigen Tagen daran herum, den Arduino dazu zu bewegen befehle von Arena 5 zu verarbeiten.

Folgende Hardware benutze ich: Arduino Uno Ethernet Shield 8 x 8 Matrix WS2812

Auf dem Arduino ist Artnet Master / Artnet Neopixel Anzahl der LED´s, Datenpin und IP Adresse habe ich angepasst. Ethernet geht via Router zu meinem Macbook.

Hat jemand eine Idee?

Vorab herzlichen Dank

Ingo

Ingo_Gabbert: ... Arena 5 ... Hat jemand eine Idee?

Idee nicht, aber eine Frage: Was ist Arena 5?

Gruß

Gregor

Arena 5 ist eine VJ Software aus den Niederlanden. https://resolume.com

Ingo_Gabbert: Arena 5 ist eine VJ Software aus den Niederlanden. https://resolume.com

Danke, das kenne ich bislang nicht. Dementsprechend kann ich Dir wahrscheinlich keinen hilfreichen Tipp geben.

Am besten wird sein, wenn Du noch mitteilst, wie die Signale, die Du verarbeiten möchtest, vorliegen. Ist das etwas, das per serieller Schnittstelle kommt? Und wie sieht der Sketch aus, der da nicht mit zurechtkommt? Setz' den Sketch in Code-Tags (nachdem Du ihn aufgeräumt hast :-)

Gruß

Gregor

So, anbei der Sketch. Arena sendet ArtNet Daten (ähnlich DMX) per LAN Kabel an den Arduino, auf dem das Ethernet Shield steckt.

/*
This example will receive multiple universes via Artnet and control a strip of ws2811 leds via 
Adafruit's NeoPixel library: https://github.com/adafruit/Adafruit_NeoPixel
This example may be copied under the terms of the MIT license, see the LICENSE file for details
*/

#include <Artnet.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
#include <SPI.h>
#include <Adafruit_NeoPixel.h>

// Neopixel settings
const int numLeds = 64; // change for your setup
const int numberOfChannels = numLeds * 1; // Total number of channels you want to receive (1 led = 3 channels)
const byte dataPin = 6;
Adafruit_NeoPixel leds = Adafruit_NeoPixel(numLeds, dataPin, NEO_GRB + NEO_KHZ800);

// Artnet settings
Artnet artnet;
const int startUniverse = 0; // CHANGE FOR YOUR SETUP most software this is 1, some software send out artnet first universe as 0.

// Check if we got all universes
const int maxUniverses = numberOfChannels / 512 + ((numberOfChannels % 512) ? 1 : 0);
bool universesReceived[maxUniverses];
bool sendFrame = 1;
int previousDataLength = 0;

// Change ip and mac address for your setup
byte ip[] = {192, 168, 2, 50};
byte mac[] = {0x04, 0xE9, 0xE5, 0x00, 0x69, 0xEC};

void setup()
{
  //Serial.begin(115200);
  artnet.begin(mac, ip);
  leds.begin();
  initTest();

  // this will be called for each packet received
  artnet.setArtDmxCallback(onDmxFrame);
}

void loop()
{
  // we call the read function inside the loop
  artnet.read();
}

void onDmxFrame(uint16_t universe, uint16_t length, uint8_t sequence, uint8_t* data)
{
  sendFrame = 1;
  // set brightness of the whole strip 
  if (universe == 96)
  {
    leds.setBrightness(data[0]);
    leds.show();
  }

  // Store which universe has got in
  if ((universe - startUniverse) < maxUniverses)
    universesReceived[universe - startUniverse] = 1;

  for (int i = 0 ; i < maxUniverses ; i++)
  {
    if (universesReceived[i] == 0)
    {
      //Serial.println("Broke");
      sendFrame = 0;
      break;
    }
  }

  // read universe and put into the right part of the display buffer
  for (int i = 0; i < length / 3; i++)
  {
    int led = i + (universe - startUniverse) * (previousDataLength / 3);
    if (led < numLeds)
      leds.setPixelColor(led, data[i * 3], data[i * 3 + 1], data[i * 3 + 2]);
  }
  previousDataLength = length;     
  
  if (sendFrame)
  {
    leds.show();
    // Reset universeReceived to 0
    memset(universesReceived, 0, maxUniverses);
  }
}

void initTest()
{
  for (int i = 0 ; i < numLeds ; i++)
    leds.setPixelColor(i, 127, 0, 0);
  leds.show();
  delay(500);
  for (int i = 0 ; i < numLeds ; i++)
    leds.setPixelColor(i, 0, 127, 0);
  leds.show();
  delay(500);
  for (int i = 0 ; i < numLeds ; i++)
    leds.setPixelColor(i, 0, 0, 127);
  leds.show();
  delay(500);
  for (int i = 0 ; i < numLeds ; i++)
    leds.setPixelColor(i, 0, 0, 0);
  leds.show();
}

Kommen denn Daten an?
Schon mal bei void onDmxFrame(uint16_t universe, uint16_t length, uint8_t sequence, uint8_t* data)
das universe ausgeben lassen, oder Serial.prinln(length, DEC);?

Hier der Link zu der Software, bevor jeder selbst suchen muss...

@Ingo: Willkommen und wo kommt der Sketch her? Link? Der hier?

Zumindest hat das ja hier schonmal jemand auf einem Uno zum Laufen bekommen.

Hat jemand eine Idee?

Funktionieren die LEDs allein? Neopixel Examples getestet? Spannungsversorgung LEDs? Gnd mit Gnd verbunden?

Gruß, H.

Also, das von Dir verlinkte Video war der Anlass, dass ich mich damit beschäftigt habe. Den Sketch habe ich aus der Videobeschreibung. Ich habe dann versucht mit Hilfe der Anleitung, die Resolume veröffentlicht hat (Videobeschreibung) die Pixel zum Laufen zu bringen. Tut aber nicht.

Die Pixel funktionieren mit einem anderen Sketch einwandfrei. Also Strom und Anschluss korrekt.

Dann beantworte meine Frage ;)

Hi, ich weiß nicht, wie ich das machen muss, muss das in den Sketch? Viele Grüße Ingo