All Projects → tobiasebsen → ArtNode

tobiasebsen / ArtNode

Licence: Apache-2.0 license
Art-Net library for Arduino, Teensy, etc.

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to ArtNode

TeensyDMX
A full-featured DMX library for Teensy 3, Teensy LC, and Teensy 4. "Programmable DMX and arbitrary USB serial device emulation."
Stars: ✭ 82 (+203.7%)
Mutual labels:  teensy, dmx
sparklemotion
Sparkle Motion
Stars: ✭ 24 (-11.11%)
Mutual labels:  artnet, dmx
dmx
Go DMX controller with ArtNet discovery + Angular Web UI with WebSockets
Stars: ✭ 24 (-11.11%)
Mutual labels:  artnet, dmx
ledcat
Control lots of LED's over lots of protocols
Stars: ✭ 89 (+229.63%)
Mutual labels:  artnet, dmx
dmxnet
ArtNet-DMX-sender and receiver for nodejs
Stars: ✭ 43 (+59.26%)
Mutual labels:  artnet, dmx
Lightwork
Computer vision based LED mapping framework
Stars: ✭ 124 (+359.26%)
Mutual labels:  artnet
MDNS Generic
mDNS Library for nRF52, SAMD21, SAMD51, SAM DUE, STM32F/L/H/G/WB/MP1, AVR Mega, RP2040-based boards, etc. using Ethernet W5x00. Supports mDNS (Registering Services) and DNS-SD (Service Discovery). Ethernet_Generic library is used as default for W5x00
Stars: ✭ 22 (-18.52%)
Mutual labels:  teensy
EncoderTool
The EncoderTool is a library to manage and read out rotary encoders connected either directly or via multiplexers to ARM based boards. Encoder push buttons are supported. Callback functions can be attached to encoder changes and button presses to allow for event driven applications
Stars: ✭ 29 (+7.41%)
Mutual labels:  teensy
ShowManager
ArtNet and LTC timecode generator.
Stars: ✭ 30 (+11.11%)
Mutual labels:  artnet
synth
A Teensy 4 modular FM polyphonic synth.
Stars: ✭ 39 (+44.44%)
Mutual labels:  teensy
h3dmx512-zip
Images for Allwinner H2+/H3 DMX512 / RDM / Art-Net / sACN / USBPro / Pixel / WS28xx / TCNet / SMPTE
Stars: ✭ 57 (+111.11%)
Mutual labels:  artnet
Embedded UKF Library
A compact Unscented Kalman Filter (UKF) library for Teensy4/Arduino system (or any real time embedded system in general)
Stars: ✭ 31 (+14.81%)
Mutual labels:  teensy
VisualTeensy
VisualCode projects for PJRC Teensy boards
Stars: ✭ 101 (+274.07%)
Mutual labels:  teensy
Pico-DMX
A library for inputting and outputting the DMX512-A lighting control protocol from a Raspberry Pi Pico
Stars: ✭ 59 (+118.52%)
Mutual labels:  dmx
InternalTemperature
Teensy 4/3/LC Internal Temperature Library
Stars: ✭ 16 (-40.74%)
Mutual labels:  teensy
BlenderDMX
Blender addon to design and render DMX lighting.
Stars: ✭ 67 (+148.15%)
Mutual labels:  dmx
mqtt-dmx-controller
A simple ArtNet / DMX Controller with MQTT Interface 💡🎬
Stars: ✭ 48 (+77.78%)
Mutual labels:  artnet
Digital Handpan
Code for the Digital Handpan - A project using capacitive touch on the Teensy in conjunction with the Teensy Audio Shield.
Stars: ✭ 25 (-7.41%)
Mutual labels:  teensy
open-fixture-library
A library and website for lighting technology's DMX fixture definition files.
Stars: ✭ 113 (+318.52%)
Mutual labels:  dmx
TSynth-Teensy4.1
TSynth for Teensy 4.1
Stars: ✭ 101 (+274.07%)
Mutual labels:  teensy

Build Status

Introduction

C++ library providing data structures and classes for implementing an Art-Net node on various platforms, including Arduino, Teensy, and similar embedded devices. Please note that this library does not include a network layer interface for UDP.

Licence

The code in this repository is available under the Apache License.

Copyright (C) 2015 Tobias Ebsen, www.tobiasebsen.dk

Some files are from Art-Net definition authored by Artistic Licence Holdings Ltd. Art-Net(TM) Designed by and Copyright Artistic Licence Holdings Ltd.

Installation

Arduino

  1. Download this repository as a zip-fil
  2. Unzip the file and rename the enclosed folder to "ArtNode"
  3. Move or copy the folder to your "Documents/Arduino/libraries/" folder.
  4. Restart the Arduino IDE

Dependencies

C++ standard library

Usage

Configuration

Configuration is set and stored in a simple struct.

ArtConfig config = {
  .mac =  {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}, // MAC
  .ip =   {2, 3, 4, 5},                         // IP
  .mask = {255, 0, 0, 0},                       // Subnet mask
  .udpPort = 0x1936,
  .dhcp = false,
  .net = 0, // Net (0-127)
  .subnet = 0,  // Subnet (0-15)
  "ArtNode", // Short name
  "ArtNode", // Long name
  .numPorts = 4,
  .portTypes = { PortTypeDmxOutput, PortTypeDmxOutput, PortTypeDmxOutput, PortTypeDmxOutput },
  .portAddrIn = {0, 0, 0, 0}, // Port input universes (0-15)
  .portAddrOut = {0, 1, 2, 3}, // Port output universes (0-15)
  .verHi = VERSION_HI,
  .verLo = VERSION_LO
};

Constructor

ArtNode node(config);

Sending a poll

node.createPoll();
udp.send(node.broadcastIP(), config.udpPort, node.getBufferData(), sizeof(ArtPoll));

Receiving packets

int n = udp.receive(node.getBufferData(), udp.available());
if (n > sizeof(ArtHeader) && node.isPacketValid()) {

  unsigned short opcode = node.getOpCode();
  if (opcode == OpPoll) {
    // Send poll reply
  }
  if (opcode == OpPollReply) {
    // Update list of nodes
  }
  if (opcode == OpDmx) {
    // Read DMX data
  }
}

Sending DMX (multicast)

node.createDmx();
ArtDmx *dmx = node.getBufferData();
dmx->Net = 0;
dmx->SubUni = 0;
dmx->Data[0] = 255;
udp.send(node.broadcastIP(), config.udpPort, node.getBufferData(), sizeof(ArtDmx));
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].