Import dmx output library into project.
This commit is contained in:
parent
8ff4f50f79
commit
a9a7720a11
11
wled00/dmx.h
11
wled00/dmx.h
@ -3,16 +3,17 @@
|
|||||||
#include "wled.h"
|
#include "wled.h"
|
||||||
/*
|
/*
|
||||||
* Support for DMX via MAX485.
|
* Support for DMX via MAX485.
|
||||||
* Needs the espdmx library. You might have to change the output pin within the library. Sketchy, i know.
|
* Change the output pin in src/dependencies/ESPDMX.cpp if needed.
|
||||||
|
* Library from:
|
||||||
* https://github.com/Rickgg/ESP-Dmx
|
* https://github.com/Rickgg/ESP-Dmx
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef WLED_ENABLE_DMX
|
#ifdef WLED_ENABLE_DMX
|
||||||
#include <ESPDMX.h>
|
#include "src/dependencies/dmx/ESPDMX.h"
|
||||||
DMXESPSerial dmx;
|
DMXESPSerial dmx;
|
||||||
|
|
||||||
#ifdef WLED_ENABLE_DMX
|
void handleDMX()
|
||||||
void handleDMX() {
|
{
|
||||||
// TODO: calculate brightness manually if no shutter channel is set
|
// TODO: calculate brightness manually if no shutter channel is set
|
||||||
|
|
||||||
uint8_t brightness = strip.getBrightness();
|
uint8_t brightness = strip.getBrightness();
|
||||||
@ -47,7 +48,7 @@ void handleDMX() {
|
|||||||
case 5: // Shutter channel. Controls the brightness.
|
case 5: // Shutter channel. Controls the brightness.
|
||||||
dmx.write(DMXAddr, brightness);
|
dmx.write(DMXAddr, brightness);
|
||||||
break;
|
break;
|
||||||
case 6:// Sets this channel to 255. Like 0, but more wholesome.
|
case 6: // Sets this channel to 255. Like 0, but more wholesome.
|
||||||
dmx.write(DMXAddr, 255);
|
dmx.write(DMXAddr, 255);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
106
wled00/src/dependencies/dmx/ESPDMX.cpp
Normal file
106
wled00/src/dependencies/dmx/ESPDMX.cpp
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
// - - - - -
|
||||||
|
// ESPDMX - A Arduino library for sending and receiving DMX using the builtin serial hardware port.
|
||||||
|
// ESPDMX.cpp: Library implementation file
|
||||||
|
//
|
||||||
|
// Copyright (C) 2015 Rick <ricardogg95@gmail.com>
|
||||||
|
// This work is licensed under a GNU style license.
|
||||||
|
//
|
||||||
|
// Last change: Marcel Seerig <https://github.com/mseerig>
|
||||||
|
//
|
||||||
|
// Documentation and samples are available at https://github.com/Rickgg/ESP-Dmx
|
||||||
|
// - - - - -
|
||||||
|
|
||||||
|
/* ----- LIBRARIES ----- */
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#include "ESPDMX.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define dmxMaxChannel 512
|
||||||
|
#define defaultMax 32
|
||||||
|
|
||||||
|
#define DMXSPEED 250000
|
||||||
|
#define DMXFORMAT SERIAL_8N2
|
||||||
|
#define BREAKSPEED 83333
|
||||||
|
#define BREAKFORMAT SERIAL_8N1
|
||||||
|
|
||||||
|
bool dmxStarted = false;
|
||||||
|
int sendPin = 2; //dafault on ESP8266
|
||||||
|
|
||||||
|
//DMX value array and size. Entry 0 will hold startbyte
|
||||||
|
uint8_t dmxData[dmxMaxChannel] = {};
|
||||||
|
int chanSize;
|
||||||
|
|
||||||
|
|
||||||
|
void DMXESPSerial::init() {
|
||||||
|
chanSize = defaultMax;
|
||||||
|
|
||||||
|
Serial1.begin(DMXSPEED);
|
||||||
|
pinMode(sendPin, OUTPUT);
|
||||||
|
dmxStarted = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set up the DMX-Protocol
|
||||||
|
void DMXESPSerial::init(int chanQuant) {
|
||||||
|
|
||||||
|
if (chanQuant > dmxMaxChannel || chanQuant <= 0) {
|
||||||
|
chanQuant = defaultMax;
|
||||||
|
}
|
||||||
|
|
||||||
|
chanSize = chanQuant;
|
||||||
|
|
||||||
|
Serial1.begin(DMXSPEED);
|
||||||
|
pinMode(sendPin, OUTPUT);
|
||||||
|
dmxStarted = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to read DMX data
|
||||||
|
uint8_t DMXESPSerial::read(int Channel) {
|
||||||
|
if (dmxStarted == false) init();
|
||||||
|
|
||||||
|
if (Channel < 1) Channel = 1;
|
||||||
|
if (Channel > dmxMaxChannel) Channel = dmxMaxChannel;
|
||||||
|
return(dmxData[Channel]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to send DMX data
|
||||||
|
void DMXESPSerial::write(int Channel, uint8_t value) {
|
||||||
|
if (dmxStarted == false) init();
|
||||||
|
|
||||||
|
if (Channel < 1) Channel = 1;
|
||||||
|
if (Channel > chanSize) Channel = chanSize;
|
||||||
|
if (value < 0) value = 0;
|
||||||
|
if (value > 255) value = 255;
|
||||||
|
|
||||||
|
dmxData[Channel] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DMXESPSerial::end() {
|
||||||
|
delete dmxData;
|
||||||
|
chanSize = 0;
|
||||||
|
Serial1.end();
|
||||||
|
dmxStarted == false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DMXESPSerial::update() {
|
||||||
|
if (dmxStarted == false) init();
|
||||||
|
|
||||||
|
//Send break
|
||||||
|
digitalWrite(sendPin, HIGH);
|
||||||
|
Serial1.begin(BREAKSPEED, BREAKFORMAT);
|
||||||
|
Serial1.write(0);
|
||||||
|
Serial1.flush();
|
||||||
|
delay(1);
|
||||||
|
Serial1.end();
|
||||||
|
|
||||||
|
//send data
|
||||||
|
Serial1.begin(DMXSPEED, DMXFORMAT);
|
||||||
|
digitalWrite(sendPin, LOW);
|
||||||
|
Serial1.write(dmxData, chanSize);
|
||||||
|
Serial1.flush();
|
||||||
|
delay(1);
|
||||||
|
Serial1.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to update the DMX bus
|
31
wled00/src/dependencies/dmx/ESPDMX.h
Normal file
31
wled00/src/dependencies/dmx/ESPDMX.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// - - - - -
|
||||||
|
// ESPDMX - A Arduino library for sending and receiving DMX using the builtin serial hardware port.
|
||||||
|
// ESPDMX.cpp: Library implementation file
|
||||||
|
//
|
||||||
|
// Copyright (C) 2015 Rick <ricardogg95@gmail.com>
|
||||||
|
// This work is licensed under a GNU style license.
|
||||||
|
//
|
||||||
|
// Last change: Marcel Seerig <https://github.com/mseerig>
|
||||||
|
//
|
||||||
|
// Documentation and samples are available at https://github.com/Rickgg/ESP-Dmx
|
||||||
|
// - - - - -
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef ESPDMX_h
|
||||||
|
#define ESPDMX_h
|
||||||
|
|
||||||
|
// ---- Methods ----
|
||||||
|
|
||||||
|
class DMXESPSerial {
|
||||||
|
public:
|
||||||
|
void init();
|
||||||
|
void init(int MaxChan);
|
||||||
|
uint8_t read(int Channel);
|
||||||
|
void write(int channel, uint8_t value);
|
||||||
|
void update();
|
||||||
|
void end();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -2,6 +2,7 @@
|
|||||||
#include "alexa.h"
|
#include "alexa.h"
|
||||||
#include "blynk.h"
|
#include "blynk.h"
|
||||||
#include "button.h"
|
#include "button.h"
|
||||||
|
#include "dmx.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "hue.h"
|
#include "hue.h"
|
||||||
#include "ir.h"
|
#include "ir.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user