Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <RGBConverter.h>
- #include <FastLED.h>
- String msg_raw = "";
- String msg_raw_col = "";
- int msg_led_num = 0;
- CRGB msg_col;
- bool col = false;
- bool led_num = false;
- bool msg_complete = false;
- CRGB leds[12];
- void setup() {
- FastLED.addLeds<NEOPIXEL, 9>(leds, 12);
- Serial.begin(2000000);
- }
- void loop() {
- if (msg_complete) {
- msg_complete = false;
- String msg = process_msg();
- if (msg == "OFF")
- for (int i = 0; i < 12; i++)
- leds[i] = CRGB::Black;
- else if (msg == "SOLID")
- for (int i = 0; i < 12; i++)
- leds[i] = msg_col;
- else if (msg == "LED") {
- Serial.print(msg_led_num);
- leds[msg_led_num] = msg_col;
- }
- msg_raw = "";
- msg_raw_col = "";
- col = false;
- led_num = false;
- msg_led_num = 0;
- FastLED.show();
- }
- }
- void serialEvent() {
- while (Serial.available() > 0) {
- char next_char = (char)Serial.read();
- if (next_char == '\n')
- msg_complete = true;
- if (!col && !led_num)
- msg_raw += next_char;
- if (next_char == '|') {
- col = true;
- led_num = false;
- }
- else if (col)
- msg_raw_col += next_char;
- if (next_char == '-')
- led_num = true;
- else if (led_num) {
- if (msg_led_num != 0)
- msg_led_num = 10;
- msg_led_num += ((String)next_char).toInt();
- }
- }
- }
- String process_msg() {
- if (msg_raw.length() < 1)
- return;
- if (msg_raw_col.length() > 0)
- msg_col = CRGB(msg_raw_col.substring(0, 3).toInt(), msg_raw_col.substring(3, 6).toInt(), msg_raw_col.substring(6, 9).toInt());
- return msg_raw.substring(1, msg_raw.length() - 1 );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement