-
Notifications
You must be signed in to change notification settings - Fork 79
Expand file tree
/
Copy pathRGB.NET_Arduino.ino
More file actions
118 lines (96 loc) · 3.12 KB
/
Copy pathRGB.NET_Arduino.ino
File metadata and controls
118 lines (96 loc) · 3.12 KB
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
106
107
108
109
110
111
112
113
114
115
116
117
118
#include "FastLED.h"
// This sketch allows to use the arduino as ArduinoWS2812USBDevice.
// The amount of leds that can be handled in realtime mostly depends on the speef of the arduino,
// but an arduino UNO is doing quite well.
//#### CONFIGURATION ####
#define CHANNELS 4 // change this only if you add or remove channels in the implementation-part. To disable channels set them to 0 leds.
// no more than 255 leds per channel
#define LEDS_CHANNEL_1 32
#define LEDS_CHANNEL_2 0
#define LEDS_CHANNEL_3 0
#define LEDS_CHANNEL_4 0
#define PIN_CHANNEL_1 6
#define PIN_CHANNEL_2 7
#define PIN_CHANNEL_3 8
#define PIN_CHANNEL_4 9
#define BAUD_RATE 115200
#define SERIAL_PROMPT ">"
//#######################
CRGB leds_channel_1[LEDS_CHANNEL_1];
CRGB leds_channel_2[LEDS_CHANNEL_2];
CRGB leds_channel_3[LEDS_CHANNEL_3];
CRGB leds_channel_4[LEDS_CHANNEL_4];
byte command = 0;
//-----------------------
void setup()
{
if(LEDS_CHANNEL_1 > 0) { FastLED.addLeds<NEOPIXEL, PIN_CHANNEL_1>(leds_channel_1, LEDS_CHANNEL_1); }
if(LEDS_CHANNEL_2 > 0) { FastLED.addLeds<NEOPIXEL, PIN_CHANNEL_2>(leds_channel_2, LEDS_CHANNEL_2); }
if(LEDS_CHANNEL_3 > 0) { FastLED.addLeds<NEOPIXEL, PIN_CHANNEL_3>(leds_channel_3, LEDS_CHANNEL_3); }
if(LEDS_CHANNEL_4 > 0) { FastLED.addLeds<NEOPIXEL, PIN_CHANNEL_4>(leds_channel_4, LEDS_CHANNEL_4); }
Serial.begin(BAUD_RATE);
Serial.print(SERIAL_PROMPT);
}
void loop()
{
if(command > 0)
{
switch(command)
{
// ### default ###
case 0x01: // get channel-count
Serial.write(CHANNELS);
break;
case 0x02: // update
FastLED.show();
break;
case 0x0F: // ask for prompt
break;
// ### channel 1 ###
case 0x11: // get led-count of channel 1
Serial.write(lowByte(LEDS_CHANNEL_1));
Serial.write(highByte(LEDS_CHANNEL_1));
break;
case 0x12: // set leds of channel 1
Serial.readBytes(((uint8_t*)leds_channel_1), (LEDS_CHANNEL_1 * 3));
break;
// ### channel 2 ###
case 0x21: // get led-count of channel 2
Serial.write(lowByte(LEDS_CHANNEL_2));
Serial.write(highByte(LEDS_CHANNEL_2));
break;
case 0x22: // set leds of channel 2
Serial.readBytes(((uint8_t*)leds_channel_2), (LEDS_CHANNEL_2 * 3));
break;
// ### channel 3 ###
case 0x31: // get led-count of channel 3
Serial.write(lowByte(LEDS_CHANNEL_3));
Serial.write(highByte(LEDS_CHANNEL_3));
break;
case 0x32: // set leds of channel 3
Serial.readBytes(((uint8_t*)leds_channel_3), (LEDS_CHANNEL_3 * 3));
break;
// ### channel 4 ###
case 0x41: // get led-count of channel 4
Serial.write(lowByte(LEDS_CHANNEL_4));
Serial.write(highByte(LEDS_CHANNEL_4));
break;
case 0x42: // set leds of channel 4
Serial.readBytes(((uint8_t*)leds_channel_4), (LEDS_CHANNEL_4 * 3));
break;
// ### default ###
default:
command = 0;
return; // no prompt
}
Serial.print(SERIAL_PROMPT);
command = 0;
}
}
void serialEvent()
{
if (Serial.available())
{
command = Serial.read();
}
}