#include <EEPROM.h>
#define CONTROL_BYTE 0x50
#define ENTER_BYTE 0x51
#define ICSE012A 0xAB
#define GREEN 0x0D
#define RED 0x0E
#define RELAY3 0x0B
#define YELLOW 0x07
#define OFF 0x0F
#define TEST 0x0A
#define WHITE 0x0C
// константы для удобства
#define STRIP_PIN 2 // пин ленты
#define NUMLEDS 60 // кол-во светодиодов
#define Delay 2 // Задержка обновления
#define BRIG 250 // max яркость
#define MAXTOK 1000 // максимальный ток авто корекцыя яркости
#define COLOR_DEBTH 3 // 1, 2, 3 (цветовая глубина байт на цвет)
#include <microLED.h> // подключаем библу
// инициализирую ленту (выше был гайд!)
microLED<NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2812, ORDER_GRB, CLI_HIGH> strip; //LED_WS2815, LED_WS2818, LED_WS6812
#define SYSTEM_LED 13
//_________________________________________________________________________________//
void setup() {
strip.setMaxCurrent(MAXTOK);
Serial.begin(9600);
pinMode(SYSTEM_LED, OUTPUT);
digitalWrite(SYSTEM_LED, HIGH);
myTestFunction();
}
void loop() {
strip.setBrightness(BRIG); // max яркость);// яркость (0-255)
while (Serial.available() > 0) {
byte command = Serial.read();
delay(2);
switch (command) {
case CONTROL_BYTE:
Serial.write(ICSE012A);
break;
case ENTER_BYTE:
break;
case OFF:
strip.clear();
strip.show(); // вывод изменений на ленту
Serial.println("ВЫКЛЮЧЕНО");
delay(Delay); // между вызовами show должна быть пауза минимум 40 мкс !!!!
break;
case RED:
strip.fill(mWheel8(1, BRIG)); // красным
strip.show();
Serial.println("КРАСНЫЙ"); // выводим изменения
delay(Delay);
break;
case GREEN:
strip.fill(mWheel8(90, BRIG)); // заливаем ~зелёным
strip.show();
Serial.println("ЗЕЛЕНЫЙ"); // выводим изменения
delay(Delay);
break;
case YELLOW:
strip.fill(mWheel8(39, BRIG));
//strip.fill( mYellow); // заливаем желтым
strip.show(); // выводим изменения
Serial.println("ЖЕЛТЫЙ");
delay(Delay);
break;
case WHITE:
strip.setBrightness(BRIG);
strip.fill(mRGB(BRIG, BRIG, BRIG)); // белый
strip.show(); // выводим изменения
Serial.println("БЕЛЫЙ");
delay(Delay);
break;
case TEST:
Serial.println("ТЕСТ");
myTestFunction();
break;
}
}
}
int myTestFunction() {
for (int i = 0; i < 10; i++) {
strip.setBrightness(BRIG);
for (int n = 0; n < 6; n++) {
strip.fill(0, NUMLEDS / 2-1, mWheel8(1, BRIG)); // красный
strip.show(); // выводим изменения
delay(Delay);
strip.clear();
strip.show(); // вывод изменений на ленту
delay(Delay);
}
for (int m = 0; m < 6; m++) {
strip.setBrightness(BRIG);
strip.fill(NUMLEDS / 2, NUMLEDS - 1, mWheel8(167, BRIG)); //синий
strip.show(); // выводим изменения
delay(Delay);
strip.clear();
strip.show(); // вывод изменений на ленту
delay(Delay);
}
}
strip.setBrightness(BRIG);
strip.fill(mWheel8(167, BRIG)); // синий
strip.show(); // выводим изменения
delay(Delay * 100);
strip.setBrightness(BRIG);
strip.fill(mWheel8(1, BRIG)); // красный
strip.show(); // выводим изменения
delay(Delay * 100);
strip.setBrightness(BRIG);
strip.fill(mWheel8(90, BRIG)); //зеленый
strip.show(); // выводим изменения
delay(Delay * 100);
strip.setBrightness(BRIG);
strip.fill(mWheel8(39, BRIG));
// strip.fill( mYellow); //желтый
strip.show(); // выводим изменения
delay(Delay * 100);
strip.setBrightness(BRIG);
strip.fill(mRGB(BRIG, BRIG, BRIG)); // белый
strip.show(); // выводим изменения
delay(Delay * 100);
for (int i = 0; i < NUMLEDS; i++) strip.set(i, mWheel8(i * 255 / NUMLEDS, BRIG)); // полный круг от 0 до 255
strip.show();
delay(Delay * 100);
strip.clear();
strip.show();
}