Skip to content

Commit 45de59a

Browse files
committed
Version 1.0
1 parent 05806f9 commit 45de59a

14 files changed

+146
-116
lines changed

LICENSE

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2019 Kevin Cai
3+
Copyright (c) 2019 203 Null
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1818
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1919
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21-
SOFTWARE.
21+
SOFTWARE.

Matrix.ino Matrix_LightStrip_Controller.ino

+10-6
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ MIDI Midi;
3030
LED LED;
3131
Timer mainTimer;
3232

33+
bool LEDstate = false;
34+
3335
void setup()
3436
{
35-
digitalWrite(led_pin,LOW);
3637
loadDeviceConfig();
3738
//setupEEPROM();
3839
//variableLoad();
@@ -47,14 +48,16 @@ void setup()
4748
mainTimer.recordCurrent();
4849
while(!USBComposite.isReady())
4950
{
50-
if (mainTimer.isLonger(10000))
51+
if (mainTimer.tick(200))
5152
{
52-
LED.setHEX(0,0xff0000);
53-
LED.update();
53+
LEDstate = !LEDstate;
54+
setSystemLED(LEDstate);
5455
}
5556
}
56-
LED.fill(0x000000);
57-
LED.update();
57+
58+
setSystemLED(1);
59+
60+
LED.rainbow();
5861

5962
#ifdef DEBUG
6063
CompositeSerial.println("Enter Main Program");
@@ -67,6 +70,7 @@ void loop()
6770

6871
if (mainTimer.tick(16))
6972
{
73+
if(stfu)
7074
Midi.offScan();
7175
LED.update();
7276
}

src/Core/MatrixSystem.cpp

+24-2
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,37 @@ void setupUSB()
1515

1616
USBComposite.setManufacturerString(MAUNFACTURERNAME);
1717
//USBComposite.setProductString(DEVICENAME);
18-
USBComposite.setSerialString(SERIALSTRING);
18+
//USBComposite.setSerialString(SERIALSTRING);
1919

2020
Midi.registerComponent();
2121
CompositeSerial.registerComponent();
2222
USBComposite.begin();
23-
2423
}
2524

2625
void setupHardware()
2726
{
2827
LED.init();
28+
pinMode(sys_led, OUTPUT);
29+
}
30+
31+
void setSystemLED(s8 state)
32+
// STLink(Signal LED) -1 for off 0 for off, 1 for On
33+
// STLink(Dual LED) -1 for off 0 for Red, 1 for Blue/Green
34+
{
35+
switch (state)
36+
{
37+
case -1:
38+
pinMode(sys_led, INPUT_FLOATING);
39+
break;
40+
41+
case 0:
42+
pinMode(sys_led, OUTPUT);
43+
digitalWrite(sys_led, LOW);
44+
break;
45+
46+
case 1:
47+
pinMode(sys_led, OUTPUT);
48+
digitalWrite(sys_led, HIGH);
49+
break;
50+
}
2951
}

src/Core/MatrixSystem.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,18 @@
88
#include <USBComposite.h>
99
#include <USBMIDI.h>
1010
#include <FastLED.h>
11-
#include "../HAL/LED.h"
12-
#include "../Protocol/MIDI.h"
1311
#include "../Parameter/MatrixVariable.h"
1412
#include "../Parameter/MatrixParameter.h"
1513
#include "../Parameter/DeviceSelector.h"
14+
#include "../HAL/LED.h"
15+
#include "../Protocol/MIDI.h"
1616

1717
void bootDevice();
1818

1919
void setupUSB();
2020
void setupHardware();
21+
void setSystemLED(s8 state);
22+
2123

2224

2325
#endif

src/HAL/LED.cpp

+58-63
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,32 @@ LED::LED()
1717

1818
void LED::init()
1919
{
20-
switch(led_pin)
21-
{
22-
case 29:
23-
FastLED.addLeds<NEOPIXEL, 29>(leds, NUM_LEDS);
24-
break;
25-
}
20+
// for(u8 n; n < nums_led_channel_available; n++)
21+
// {
22+
// switch(led_pins[n])
23+
// {
24+
// case PB6:
25+
// FastLED.addLeds<NEOPIXEL, PB6>(leds[n], NUM_LEDS);
26+
// break;
27+
// case PB11:
28+
// FastLED.addLeds<NEOPIXEL, PB11>(leds[n], NUM_LEDS);
29+
// break;
30+
// case PA5:
31+
// FastLED.addLeds<NEOPIXEL, PA5>(leds[n], NUM_LEDS);
32+
// break;
33+
// case PB14:
34+
// FastLED.addLeds<NEOPIXEL, PB14>(leds[n], NUM_LEDS);
35+
// break;
36+
// }
37+
// }
38+
39+
//For STLINK V2
40+
//pinMode(PB10, INPUT_FLOATING);
41+
FastLED.addLeds<NEOPIXEL, PB6>(leds[0], NUM_LEDS);
42+
FastLED.addLeds<NEOPIXEL, PB11>(leds[1], NUM_LEDS);
43+
FastLED.addLeds<NEOPIXEL, PA5>(leds[2], NUM_LEDS);
44+
FastLED.addLeds<NEOPIXEL, PB14>(leds[3], NUM_LEDS);
45+
2646

2747
FastLED.setBrightness(brightness);
2848
FastLED.setCorrection(led_color_correction);
@@ -42,75 +62,35 @@ void LED::dynamicBrightness(u16 mah)
4262
FastLED.setMaxPowerInVoltsAndMilliamps(5,mah);
4363
}
4464

45-
void LED::fill(u32 WRGB, bool overlay /*= false*/)
65+
void LED::fill(u32 WRGB)
4666
{
47-
//fill_solid(leds,NUM_TOTAL_LEDS,CRGB::Black);
48-
for(int i = 0; i < NUM_LEDS; i++)
49-
{
50-
leds[i] = WRGB;
51-
}
52-
//FastLED.show();
67+
fill_solid(leds[0], 128, WRGB);
68+
fill_solid(leds[1], 128, WRGB);
69+
fill_solid(leds[2], 128, WRGB);
70+
fill_solid(leds[3], 128, WRGB);
5371
}
5472

55-
// void LED::setLED(INDEXMODE indexmode, LEDMODE ledmode, u8 xy = 0, u32 p1 = 0, u8 p2 = 0, u8 p3 = 0, u8 p4 = 0)
56-
// {
57-
// u8 index = x;
58-
// if(ledmode == XY)
59-
// u8 index = xyToIndex(xy);
60-
//
61-
// switch (ledmode)
62-
// {
63-
// case off:
64-
// LED::Off(index);
65-
// break;
66-
// case on:
67-
// LED::On(index);
68-
// break;
69-
// case w:
70-
// LED::setW(index, p1);
71-
// break;
72-
// case rgb:
73-
// LED::setRGB(index, p1, p2, p3);
74-
// break;
75-
// case wrgb:
76-
// LED::setWRGB(index, p1, p2, p3, p4);
77-
// break;
78-
// case hex:
79-
// LED::setHEX(index, p1);
80-
// break;
81-
// case palette:
82-
// LED::setPalette(index, p1, p2);
83-
// break;
84-
// }
85-
// }
86-
87-
// Index
88-
void LED::off(s16 index, bool overlay /*= false*/)
73+
void LED::off(u8 channel, s16 index)
8974
{
90-
LED::setHEX(index, 0, overlay);
75+
LED::setHEX(channel, index, 0);
9176
}
9277

93-
void LED::on(s16 index, bool overlay /*= false*/)
78+
void LED::on(u8 channel, s16 index)
9479
{
95-
LED::setHEX(index, 0xFFFFFFFF, overlay);
80+
LED::setHEX(channel, index, 0xFFFFFFFF);
9681
}
9782

98-
void LED::setW(s16 index, u8 w, bool overlay /*= false*/)
83+
void LED::setW(u8 channel, s16 index, u8 w)
9984
{
100-
LED::setHEX(index, w * 0x10000 + w * 0x100 + w, overlay);
85+
LED::setHEX(channel, index, w * 0x10000 + w * 0x100 + w);
10186
}
10287

103-
void LED::setRGB(s16 index, u8 r, u8 g, u8 b, bool overlay /*= false*/)
88+
void LED::setRGB(u8 channel, s16 index, u8 r, u8 g, u8 b)
10489
{
105-
LED::setHEX(index, r * 0x10000 + g * 0x100 + b, overlay);
90+
LED::setHEX(channel, index, r * 0x10000 + g * 0x100 + b);
10691
}
10792

108-
void LED::setWRGB(s16 index, u8 w, u8 r, u8 g, u8 b, bool overlay /*= false*/)
109-
{
110-
LED::setHEX(index, w * 0x1000000 + r * 0x10000 + g * 0x100 + b, overlay);
111-
}
112-
113-
void LED::setHEX(s16 index, u32 hex, bool overlay /*= false*/, bool ignore_gamma /*= false*/)
93+
void LED::setHEX(u8 channel, s16 index, u32 hex)
11494
{
11595
#ifdef DEBUG
11696
CompositeSerial.print("LED Index \t");
@@ -122,12 +102,12 @@ void LED::setHEX(s16 index, u32 hex, bool overlay /*= false*/, bool ignore_gamma
122102
if(index < 0)
123103
return;
124104

125-
leds[index] = hex;
105+
leds[channel][index] = hex;
126106
}
127107

128-
void LED::setPalette(s16 index, u8 pick_palette, u8 colour, bool overlay /*= false*/)
108+
void LED::setPalette(u8 channel, s16 index, u8 pick_palette, u8 colour)
129109
{
130-
LED::setHEX(index, palette[pick_palette][colour], overlay, true);
110+
LED::setHEX(channel, index, palette[pick_palette][colour]);
131111
}
132112

133113

@@ -137,3 +117,18 @@ void LED::update()
137117
{
138118
FastLED.show();
139119
}
120+
121+
void LED::rainbow()
122+
{
123+
for(int h = 0; h < 256; h += 5)
124+
{
125+
fill_rainbow(leds[0], NUM_LEDS, h, 5);
126+
fill_rainbow(leds[1], NUM_LEDS, h, 5);
127+
fill_rainbow(leds[2], NUM_LEDS, h, 5);
128+
fill_rainbow(leds[3], NUM_LEDS, h, 5);
129+
LED::update();
130+
delay(10);
131+
}
132+
LED::fill(0);
133+
LED::update();
134+
}

src/HAL/LED.h

+9-9
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,24 @@ class LED
1919
void init();
2020
void setBrightness(u8 b);
2121
void dynamicBrightness(u16 mah);
22-
void fill(u32 WRGB, bool overlay = false);
22+
void fill(u32 WRGB);
2323

2424
// void setLED(INDEXMoDE indexmode, LEDMoDE ledmode, u8 x1, u8 y1, u32 p1, u8 p2, u8 p3, u8 p4);
2525

2626
//Raw index - for BottomLED ,PoWERCoRD and raw strap.
27-
void off(s16 index, bool overlay = false);
28-
void on(s16 index, bool overlay = false);
29-
void setW(s16 index, u8 w, bool overlay = false);
30-
void setRGB(s16 index, u8 r, u8 g, u8 b, bool overlay = false);
31-
void setWRGB(s16 index, u8 w, u8 r, u8 g, u8 b, bool overlay = false);
32-
void setHEX(s16 index, u32 hex, bool overlay = false, bool ignore_gamma = false);
33-
void setPalette(s16 index, u8 pick_palette, u8 colour, bool overlay = false);
27+
void off(u8 channel, s16 index);
28+
void on(u8 channel, s16 index);
29+
void setW(u8 channel, s16 index, u8 w);
30+
void setRGB(u8 channel, s16 index, u8 r, u8 g, u8 b);
31+
void setHEX(u8 channel, s16 index, u32 hex);
32+
void setPalette(u8 channel, s16 index, u8 pick_palette, u8 colour);
3433

3534
//Processing
3635
void update();
36+
void rainbow();
3737

3838
private:
39-
CRGB leds[NUM_LEDS];
39+
CRGB leds[NUM_LED_STRIP][NUM_LEDS];
4040
};
4141

4242
//extern LED LED;

src/Parameter/Device/STLINKV2M1.cpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ void loadConfigSTLINKV2M1()
44
{
55

66
//LED
7-
led_pin = 29;
8-
sys_led_pin = 9;
7+
nums_led_channel_available = 4;
8+
led_pins[0] = PB6; //RST
9+
led_pins[1] = PB11; //SWIM
10+
led_pins[2] = PA5; //SWCLK
11+
led_pins[3] = PB14; //SWDIO
12+
sys_led = PA9;
913

1014
led_color_correction = 0xFFFFFF;
1115

12-
support_wrgb = false;
13-
1416
brightness_button = 0;
1517

1618
flash_button = 0;

src/Parameter/DeviceSelector.cpp

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
#include "DeviceSelector.h"
1+
#include "../Parameter/DeviceSelector.h"
22

3-
extern u8 led_pin = 0;
4-
extern u8 sys_led_pin = 0;
3+
extern u8 nums_led_channel_available = 4;
4+
extern u8 led_pins[NUM_LED_STRIP] = {0, 0, 0, 0};
5+
extern u8 sys_led = 0;
56

67
extern u32 led_color_correction = 0xFFFFFFFF;
78

8-
extern bool support_wrgb = 0;
9-
109
extern u8 brightness_button = 0;
1110
extern u8 flash_button = 0;
1211

src/Parameter/DeviceSelector.h

+3-5
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@
33

44
#include "../Parameter/MatrixParameter.h"
55

6-
7-
extern u8 led_pin;
8-
extern u8 sys_led_pin;
6+
extern u8 nums_led_channel_available;
7+
extern u8 led_pins[NUM_LED_STRIP];
8+
extern u8 sys_led;
99

1010
extern u32 led_color_correction;
1111

12-
extern bool support_wrgb;
13-
1412
extern u8 brightness_button;
1513
extern u8 flash_button;
1614

src/Parameter/MatrixParameter.h

+2-3
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,14 @@ typedef volatile const int64_t vsc64;
5656

5757
//DeviceInfo
5858

59-
#define DEBUG
59+
//#define DEBUG
6060

6161
#define DEVICENAME "LightStrip Controller by 203"
6262
#define MAUNFACTURERNAME "203 Industries"
6363
#define SERIALSTRING "Thanks for using."
6464
#define VID 0x0203
6565
#define PID 0x0801
6666

67-
#define __STM32F1C__
68-
6967
#define DEVICE_SERIAL_1 *(u32 *) (0x1FFFF7E8)
7068
#define DEVICE_SERIAL_2 *(u32 *) (0x1FFFF7E8+0x04)
7169
#define DEVICE_SERIAL_3 *(u32 *) (0x1FFFF7E8+0x08)
@@ -79,5 +77,6 @@ typedef volatile const int64_t vsc64;
7977

8078
//LED
8179
#define NUM_LEDS 128
80+
#define NUM_LED_STRIP 4
8281

8382
#endif

0 commit comments

Comments
 (0)