/
ESP8266_Artnet_RGB_LED.ino
105 lines (88 loc) · 2.04 KB
/
ESP8266_Artnet_RGB_LED.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
Example Artnet RGB LED, 3 LED (one per color) react on ArtNet messages from a master.
Charles Yarnold 2015 - charlesyarnold@gmail.com
https://github.com/solexious/ESP8266_artnet_led_node
Stephan Ruloff 2016-2019
https://github.com/rstephan
*/
#include <ArtnetnodeWifi.h>
//Wifi settings
const char* ssid = "ssid";
const char* password = "pAsSwOrD";
ArtnetnodeWifi artnetnode;
int pinR = 15;
int pinG = 12;
int pinB = 13;
// connect to wifi – returns true if successful or false if not
boolean ConnectWifi(void)
{
boolean state = true;
int i = 0;
WiFi.begin(ssid, password);
Serial.println("");
Serial.println("Connecting to WiFi");
// Wait for connection
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (i > 20){
state = false;
break;
}
i++;
}
if (state) {
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
} else {
Serial.println("");
Serial.println("Connection failed.");
}
return state;
}
void setup()
{
Serial.begin(115200);
artnetnode.setName("ESP8266 - Artnet");
artnetnode.setNumPorts(1);
artnetnode.enableDMXOutput(0);
artnetnode.setStartingUniverse(1);
ConnectWifi();
artnetnode.begin();
Serial.println();
Serial.println("Connected");
#if defined(ARDUINO_ARCH_ESP8266)
analogWriteRange(255);
#endif
pinMode(pinR, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(pinB, OUTPUT);
analogWrite(pinR, 0);
analogWrite(pinG, 0);
analogWrite(pinB, 0);
}
void loop()
{
uint16_t code = artnetnode.read();
if (code) {
if (code == OpDmx) {
//Serial.print("D");
analogWrite(pinR, artnetnode.getDmxFrame()[0]);
analogWrite(pinG, artnetnode.getDmxFrame()[1]);
analogWrite(pinB, artnetnode.getDmxFrame()[2]);
}
else if (code == OpPoll) {
Serial.println("Art Poll Packet");
}
}
#if defined(ARDUINO_ARCH_ESP8266)
if (WiFi.status() == 6) {
ESP.reset();
}
#endif
yield();
}