//Perlin noise fire procedure
//16x16 rgb led matrix demo
//Yaroslaw Turbin, 22.06.2020
#include "FastLED.h"
// Matrix size
#define NUM_ROWS 16
#define NUM_COLS 16
#define NUM_LEDS NUM_ROWS * NUM_COLS
// LEDs pin
#define DATA_PIN 5
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
// LED brightness
#define BRIGHTNESS 255
#define MAX_POWER_MILLIAMPS 8000
// Define the array of leds
CRGB leds[NUM_LEDS];
DEFINE_GRADIENT_PALETTE(firepal) { // белая, желтая, красная палитра
0, 0, 0, 0, //black
32, 255, 0, 0, // red
190, 255, 255, 0, //yellow
255, 255, 255, 255 // white
};
// DEFINE_GRADIENT_PALETTE(firepal) { // красная палитра
// 0, 0, 0, 0, //black
// 128, 255, 0, 0, // red
// 255, 255, 0, 0 // red
// };
CRGBPalette16 myPal = firepal;
void setup() {
FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setMaxPowerInVoltsAndMilliamps(5, MAX_POWER_MILLIAMPS);
FastLED.setBrightness(BRIGHTNESS);
}
void loop() {
leds[0] = CRGB(0,126,127); FastLED.show();
leds[1] = CRGB(0,126,127); FastLED.show();
leds[2] = CRGB(0,126,127); FastLED.show();
leds[3] = CRGB(0,126,127); FastLED.show();
leds[4] = CRGB(0,126,127); FastLED.show();
leds[11] = CRGB(0,126,127); FastLED.show();
leds[12] = CRGB(0,126,127); FastLED.show();
leds[13] = CRGB(0,126,127); FastLED.show();
leds[14] = CRGB(0,126,127); FastLED.show();
leds[15] = CRGB(0,126,127); FastLED.show();
leds[16] = CRGB(0,126,127); FastLED.show();
leds[17] = CRGB(0,126,127); FastLED.show();
leds[18] = CRGB(0,126,127); FastLED.show();
leds[31] = CRGB(0,126,127); FastLED.show();
leds[29] = CRGB(0,126,127); FastLED.show();
leds[30] = CRGB(0,126,127); FastLED.show();
leds[32] = CRGB(0,126,127); FastLED.show();
leds[33] = CRGB(0,126,127); FastLED.show();
leds[47] = CRGB(0,126,127); FastLED.show();
leds[46] = CRGB(0,126,127); FastLED.show();
leds[48] = CRGB(0,126,127); FastLED.show();
leds[49] = CRGB(0,126,127); FastLED.show();
leds[62] = CRGB(0,126,127); FastLED.show();
leds[63] = CRGB(0,126,127); FastLED.show();
leds[64] = CRGB(0,126,127); FastLED.show();
leds[79] = CRGB(0,126,127); FastLED.show();
leds[175] = CRGB(29,70,81); FastLED.show();
leds[160] = CRGB(29,70,81); FastLED.show();
leds[177] = CRGB(29,70,81); FastLED.show();
leds[193] = CRGB(29,70,81); FastLED.show();
leds[210] = CRGB(29,70,81); FastLED.show();
leds[227] = CRGB(29,70,81); FastLED.show();
leds[228] = CRGB(29,70,81); FastLED.show();
leds[245] = CRGB(29,70,81); FastLED.show();
leds[246] = CRGB(29,70,81); FastLED.show();
leds[247] = CRGB(29,70,81); FastLED.show();
leds[248] = CRGB(29,70,81); FastLED.show();
leds[249] = CRGB(29,70,81); FastLED.show();
leds[250] = CRGB(29,70,81); FastLED.show();
leds[235] = CRGB(29,70,81); FastLED.show();
leds[236] = CRGB(29,70,81); FastLED.show();
leds[221] = CRGB(29,70,81); FastLED.show();
leds[206] = CRGB(29,70,81); FastLED.show();
leds[190] = CRGB(29,70,81); FastLED.show();
leds[191] = CRGB(3,101,113); FastLED.show();
leds[176] = CRGB(3,101,113); FastLED.show();
leds[192] = CRGB(3,101,113); FastLED.show();
leds[207] = CRGB(3,101,113); FastLED.show();
leds[222] = CRGB(3,101,113); FastLED.show();
leds[237] = CRGB(3,101,113); FastLED.show();
leds[243] = CRGB(3,101,113); FastLED.show();
leds[244] = CRGB(3,101,113); FastLED.show();
leds[251] = CRGB(3,101,113); FastLED.show();
leds[226] = CRGB(3,101,113); FastLED.show();
leds[252] = CRGB(3,101,113); FastLED.show();
leds[209] = CRGB(3,101,113); FastLED.show();
leds[208] = CRGB(0,126,127); FastLED.show();
leds[223] = CRGB(0,126,127); FastLED.show();
leds[224] = CRGB(0,126,127); FastLED.show();
leds[225] = CRGB(0,126,127); FastLED.show();
leds[241] = CRGB(0,126,127); FastLED.show();
leds[242] = CRGB(0,126,127); FastLED.show();
leds[240] = CRGB(0,126,127); FastLED.show();
leds[255] = CRGB(0,126,127); FastLED.show();
leds[254] = CRGB(0,126,127); FastLED.show();
leds[253] = CRGB(0,126,127); FastLED.show();
leds[238] = CRGB(0,126,127); FastLED.show();
leds[239] = CRGB(0,126,127); FastLED.show();
leds[5] = CRGB(89, 40, 2); FastLED.show();
leds[6] = CRGB(89, 40, 2); FastLED.show();
leds[7] = CRGB(89, 40, 2); FastLED.show();
leds[8] = CRGB(89, 40, 2); FastLED.show();
leds[9] = CRGB(89, 40, 2); FastLED.show();
leds[10] = CRGB(89, 40, 2); FastLED.show();
leds[19] = CRGB(89, 40, 2); FastLED.show();
leds[20] = CRGB(89, 40, 2); FastLED.show();
leds[28] = CRGB(89, 40, 2); FastLED.show();
leds[27] = CRGB(89, 40, 2); FastLED.show();
leds[34] = CRGB(89, 40, 2); FastLED.show();
leds[45] = CRGB(89, 40, 2); FastLED.show();
leds[50] = CRGB(89, 40, 2); FastLED.show();
leds[65] = CRGB(89, 40, 2); FastLED.show();
leds[80] = CRGB(89, 40, 2); FastLED.show();
leds[96] = CRGB(89, 40, 2); FastLED.show();
leds[61] = CRGB(89, 40, 2); FastLED.show();
leds[78] = CRGB(89, 40, 2); FastLED.show();
leds[95] = CRGB(89, 40, 2); FastLED.show();
leds[111] = CRGB(89, 40, 2); FastLED.show();
leds[127] = CRGB(89, 40, 2); FastLED.show();
leds[112] = CRGB(89, 40, 2); FastLED.show();
leds[128] = CRGB(89, 40, 2); FastLED.show();
leds[144] = CRGB(89, 40, 2); FastLED.show();
leds[161] = CRGB(89, 40, 2); FastLED.show();
leds[159] = CRGB(89, 40, 2); FastLED.show();
leds[143] = CRGB(89, 40, 2); FastLED.show();
leds[22] = CRGB(252,252,122); FastLED.show();
leds[21] = CRGB(252,252,122); FastLED.show();
leds[23] = CRGB(252,212,4); FastLED.show();
leds[24] = CRGB(252,212,4); FastLED.show();
leds[25] = CRGB(252,252,122); FastLED.show();
leds[26] = CRGB(252,252,122); FastLED.show();
leds[178] = CRGB(104,50,10); FastLED.show();
leds[194] = CRGB(104,50,10); FastLED.show();
leds[211] = CRGB(104,50,10); FastLED.show();
leds[212] = CRGB(104,50,10); FastLED.show();
leds[229] = CRGB(104,50,10); FastLED.show();
leds[230] = CRGB(104,50,10); FastLED.show();
leds[231] = CRGB(104,50,10); FastLED.show();
leds[232] = CRGB(104,50,10); FastLED.show();
leds[233] = CRGB(104,50,10); FastLED.show();
leds[234] = CRGB(104,50,10); FastLED.show();
leds[220] = CRGB(104,50,10); FastLED.show();
leds[219] = CRGB(104,50,10); FastLED.show();
leds[205] = CRGB(104,50,10); FastLED.show();
leds[189] = CRGB(104,50,10); FastLED.show();
leds[174] = CRGB(104,50,10); FastLED.show();
leds[36] = CRGB(252,212,4); FastLED.show();
leds[35] = CRGB(252,212,4); FastLED.show();
leds[37] = CRGB(252,252,122); FastLED.show();
leds[38] = CRGB(252,252,122); FastLED.show();
leds[39] = CRGB(252,252,122); FastLED.show();
leds[40] = CRGB(252,252,122); FastLED.show();
leds[41] = CRGB(252,252,122); FastLED.show();
leds[42] = CRGB(252,212,4); FastLED.show();
leds[43] = CRGB(252,212,4); FastLED.show();
leds[44] = CRGB(252,212,4); FastLED.show();
leds[51] = CRGB(252,212,4); FastLED.show();
leds[52] = CRGB(252,252,122); FastLED.show();
leds[53] = CRGB(252,252,122); FastLED.show();
leds[54] = CRGB(246, 214, 88); FastLED.show();
leds[55] = CRGB(252,212,4); FastLED.show();
leds[56] = CRGB(252,212,4); FastLED.show();
leds[57] = CRGB(252,212,4); FastLED.show();
leds[58] = CRGB(252,212,4); FastLED.show();
leds[59] = CRGB(252,212,4); FastLED.show();
leds[60] = CRGB(252,212,4); FastLED.show();
leds[66] = CRGB(252,212,4); FastLED.show();
leds[67] = CRGB(252,252,122); FastLED.show();
leds[68] = CRGB(252,252,122); FastLED.show();
leds[69] = CRGB(246, 214, 88); FastLED.show();
leds[70] = CRGB(252,212,4); FastLED.show();
leds[71] = CRGB(252,212,4); FastLED.show();
leds[72] = CRGB(252,212,4); FastLED.show();
leds[73] = CRGB(252,212,4); FastLED.show();
leds[74] = CRGB(252,212,4); FastLED.show();
leds[75] = CRGB(252,212,4); FastLED.show();
leds[76] = CRGB(252,212,4); FastLED.show();
leds[77] = CRGB(252,212,4); FastLED.show();
leds[81] = CRGB(239, 219, 123); FastLED.show();
leds[82] = CRGB(246, 218, 79); FastLED.show();
leds[83] = CRGB(252,212,4); FastLED.show();
leds[84] = CRGB::White; FastLED.show();
leds[85] = CRGB(228, 191, 103); FastLED.show();
leds[86] = CRGB(172,140,63); FastLED.show();
leds[87] = CRGB(252,212,4); FastLED.show();
leds[88] = CRGB(252,212,4); FastLED.show();
leds[89] = CRGB(252,212,4); FastLED.show();
leds[90] = CRGB::White; FastLED.show();
leds[91] = CRGB(228, 191, 103); FastLED.show();
leds[92] = CRGB(172,140,63); FastLED.show();
leds[93] = CRGB(252,212,4); FastLED.show();
leds[94] = CRGB(252,212,4); FastLED.show();
leds[97] = CRGB(239, 219, 123); FastLED.show();
leds[98] = CRGB(246, 218, 79); FastLED.show();
leds[99] = CRGB(252,212,4); FastLED.show();
leds[100] = CRGB(228, 191, 103); FastLED.show();
leds[101] = CRGB(172,140,63); FastLED.show();
leds[102] = CRGB(172,140,63); FastLED.show();
leds[103] = CRGB(252,212,4); FastLED.show();
leds[104] = CRGB(252,212,4); FastLED.show();
leds[105] = CRGB(252,212,4); FastLED.show();
leds[106] = CRGB(228, 191, 103); FastLED.show();
leds[107] = CRGB(172,140,63); FastLED.show();
leds[108] = CRGB(172,140,63); FastLED.show();
leds[109] = CRGB(227, 189, 0); FastLED.show();
leds[110] = CRGB(205, 171, 0); FastLED.show();
leds[113] = CRGB(252,212,4); FastLED.show();
leds[114] = CRGB(252,212,4); FastLED.show();
leds[115] = CRGB(252,212,4); FastLED.show();
leds[116] = CRGB(172,140,63); FastLED.show();
leds[117] = CRGB(172,140,63); FastLED.show();
leds[118] = CRGB(172,140,63); FastLED.show();
leds[119] = CRGB(252,212,4); FastLED.show();
leds[120] = CRGB(252,212,4); FastLED.show();
leds[121] = CRGB(252,212,4); FastLED.show();
leds[122] = CRGB(172,140,63); FastLED.show();
leds[123] = CRGB(172,140,63); FastLED.show();
leds[124] = CRGB(172,140,63); FastLED.show();
leds[125] = CRGB(255, 220, 45); FastLED.show();
leds[126] = CRGB(255, 220, 45); FastLED.show();
leds[129] = CRGB(252,212,4); FastLED.show();
leds[130] = CRGB(252,212,4); FastLED.show();
leds[131] = CRGB(252,212,4); FastLED.show();
leds[132] = CRGB(228, 191, 103); FastLED.show();
leds[133] = CRGB(228, 191, 103); FastLED.show();
leds[134] = CRGB(228, 191, 103); FastLED.show();
leds[135] = CRGB(252,212,4); FastLED.show();
leds[136] = CRGB(252,212,4); FastLED.show();
leds[137] = CRGB(252,212,4); FastLED.show();
leds[138] = CRGB(228, 191, 103); FastLED.show();
leds[139] = CRGB(228, 191, 103); FastLED.show();
leds[140] = CRGB(228, 191, 103); FastLED.show();
leds[141] = CRGB(252,212,4); FastLED.show();
leds[142] = CRGB(252,212,4); FastLED.show();
leds[145] = CRGB(113, 95, 7); FastLED.show();
leds[146] = CRGB(252,212,4); FastLED.show();
leds[147] = CRGB(252,212,4); FastLED.show();
leds[148] = CRGB(252,212,4); FastLED.show();
leds[149] = CRGB(252,212,4); FastLED.show();
leds[150] = CRGB(252,212,4); FastLED.show();
leds[151] = CRGB(252,212,4); FastLED.show();
leds[152] = CRGB(252,212,4); FastLED.show();
leds[153] = CRGB(252,212,4); FastLED.show();
leds[154] = CRGB(252,212,4); FastLED.show();
leds[155] = CRGB(252,212,4); FastLED.show();
leds[156] = CRGB(252,212,4); FastLED.show();
leds[157] = CRGB(252,212,4); FastLED.show();
leds[158] = CRGB(113, 95, 7);; FastLED.show();
leds[162] = CRGB(113, 95, 7);; FastLED.show();
leds[163] = CRGB(252,212,4); FastLED.show();
leds[164] = CRGB(252,212,4); FastLED.show();
leds[165] = CRGB(113, 95, 7); FastLED.show();
leds[166] = CRGB(252,212,4); FastLED.show();
leds[167] = CRGB(252,212,4); FastLED.show();
leds[168] = CRGB(252,212,4); FastLED.show();
leds[169] = CRGB(252,212,4); FastLED.show();
leds[170] = CRGB(252,212,4); FastLED.show();
leds[171] = CRGB(113, 95, 7); FastLED.show();
leds[172] = CRGB(252,212,4); FastLED.show();
leds[173] = CRGB(252,212,4); FastLED.show();
leds[179] = CRGB(252,212,4); FastLED.show();
leds[180] = CRGB(252,212,4); FastLED.show();
leds[181] = CRGB(252,212,4); FastLED.show();
leds[182] = CRGB(113, 95, 7); FastLED.show();
leds[183] = CRGB(252,212,4); FastLED.show();
leds[184] = CRGB(252,212,4); FastLED.show();
leds[185] = CRGB(252,212,4); FastLED.show();
leds[186] = CRGB(113, 95, 7); FastLED.show();
leds[187] = CRGB(252,212,4); FastLED.show();
leds[188] = CRGB(252,212,4); FastLED.show();
leds[195] = CRGB(252,212,4); FastLED.show();
leds[196] = CRGB(252,212,4); FastLED.show();
leds[197] = CRGB(252,212,4); FastLED.show();
leds[198] = CRGB(252,212,4); FastLED.show();
leds[199] = CRGB(113, 95, 7); FastLED.show();
leds[200] = CRGB(113, 95, 7); FastLED.show();
leds[201] = CRGB(113, 95, 7); FastLED.show();
leds[202] = CRGB(252,212,4); FastLED.show();
leds[203] = CRGB(252,212,4); FastLED.show();
leds[204] = CRGB(252,212,4); FastLED.show();
leds[213] = CRGB(252,212,4); FastLED.show();
leds[214] = CRGB(252,212,4); FastLED.show();
leds[215] = CRGB(252,212,4); FastLED.show();
leds[216] = CRGB(252,212,4); FastLED.show();
leds[217] = CRGB(252,212,4); FastLED.show();
leds[218] = CRGB(252,212,4); FastLED.show();
}
uint8_t XY (uint8_t x, uint8_t y) { //матрица идет от нижнего левого угла вправо и дальше зигзагом
const uint8_t XYTable[] = {
255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240,
224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208,
192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176,
160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
};
uint8_t i = (y * NUM_COLS) + x;
uint8_t j = XYTable[i];
return j;
}
// uint16_t XY (uint8_t x, uint8_t y) { return (y * NUM_COLS + x);} // для эмулятора