Skip to content

Commit

Permalink
Add fixture example code
Browse files Browse the repository at this point in the history
  • Loading branch information
tesa-klebeband committed Sep 27, 2024
1 parent 2ef39ba commit a7f76fc
Showing 1 changed file with 70 additions and 0 deletions.
70 changes: 70 additions & 0 deletions examples/Fixtures/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/*
* This file is part of EasyDMX (https://github.com/tesa-klebeband/EasyDMX).
* Copyright (c) 2024 tesa-klebeband.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include <Arduino.h>
#include <easydmx.h>

// Define the start address of the light fixture
#define LIGHT_START_ADDRESS 1

// Create an instance of the EasyDMX class, so we can use its functions
EasyDMX dmx;

// Construct a DMX Universe and give it access to the DMX driver
DMXUniverse universe(&dmx);

// Describe a simple RGB fixture with 3 channels
DMXFixtureDescriptor light_descriptor(3, DMXChannelType::Red, DMXChannelType::Green, DMXChannelType::Blue);

// Create a fixture based on the descriptor
DMXFixture light(&light_descriptor, LIGHT_START_ADDRESS);

void setup() {
Serial.begin(115200);

// Add the fixture to the universe
universe.addFixture(&light);

/**
* Start the DMX driver in transmit mode on Serial2 (pin 17)
* The MAX485's DI pin should be connected to the TX pin of the ESP32
* and RE and DE should be connected to 3.3V.
*/
dmx.begin(DMXMode::Transmit, DMXPin::NoRx, DMXPin::Serial2Tx);
}

void loop() {
// Set the RGB values of the light fixture and update the universe to transmit the data
light.setChannel(DMXChannelType::Red, 255);
light.setChannel(DMXChannelType::Green, 0);
light.setChannel(DMXChannelType::Blue, 0);
universe.update();
delay(1000);

light.setChannel(DMXChannelType::Red, 0);
light.setChannel(DMXChannelType::Green, 255);
light.setChannel(DMXChannelType::Blue, 0);
universe.update();
delay(1000);

light.setChannel(DMXChannelType::Red, 0);
light.setChannel(DMXChannelType::Green, 0);
light.setChannel(DMXChannelType::Blue, 255);
universe.update();
delay(1000);
}

0 comments on commit a7f76fc

Please sign in to comment.