// fire width 19 height 7
// testing for segment clock
// Stolen from fire_201 byte by ldir
// Perlin fire
// https://pastebin.com/jSSVSRi6
//Perlin noise fire procedure
//16x16 rgb led matrix demo
//Yaroslaw Turbin, 22.06.2020
//https://vk.com/ldirko
//https://www.reddit.com/user/ldirko/
//https://www.reddit.com/r/FastLED/comments/hgu16i/my_fire_effect_implementation_based_on_perlin/
//idea in make perlin noise with time offset X and Z coord
//this automatic scroll fire pattern
//and distort fire noise.
//then substract Y based coodrd value to shift
//fire color (not brightness) in palette.
//this fadeout color from bottom matrix to up.
//this need some palette tweak for good looking fire color
#include "FastLED.h"
// LEDs pin
#define DATA_PIN 3
// LED brightness
#define BRIGHTNESS 255
// Matrix size
#define NUM_ROWS 7
#define NUM_COLS 19
#define NUM_LEDS NUM_ROWS * NUM_COLS
// Define the arrays of leds
CRGB leds[NUM_LEDS+1];
DEFINE_GRADIENT_PALETTE( firepal ) { // define fire palette
0, 0, 0, 0, //black
32, 255, 0, 0, // red
190, 255, 255, 0, //yellow
255, 255, 255, 255 // white
};
CRGBPalette16 myPal = firepal;
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
}
void loop() {
int a = millis();
for (int i = 0; i < NUM_COLS; i++) {
for (int j = 0; j < NUM_ROWS; j++) {
// leds[XY1(i,j)] = ColorFromPalette (myPal, qsub8 (inoise8 (i * 80 , j * 80+ a , a /3),
// abs8(j - (NUM_ROWS-1)) * 255 / (NUM_ROWS+2)), BRIGHTNESS);
int index = XY(i,j);
if ( index == NUM_LEDS ) continue;
leds[index] = CHSV ((sin8(i*8+a/7)+cos8(j*8+a/4))/2,255,255);
}
}
FastLED.show();
}
byte looktable [] = {
133, 0, 1, 133, 17, 133, 18, 19, 133, 35, 133, 36, 37, 133, 53, 133, 54, 55, 133,
11, 133, 133, 2, 133, 29, 133, 133, 20, 133, 47, 133, 133, 38, 133, 65, 133, 133, 56,
10, 133, 133, 3, 16, 28, 133, 133, 21, 34, 46, 133, 133, 39, 52, 64, 133, 133, 57,
133, 12, 13, 133, 133, 133, 30, 31, 133, 133, 133, 48, 49, 133, 133, 133, 66, 67, 133,
9, 133, 133, 4, 15, 27, 133, 133, 22, 33, 45, 133, 133, 40, 51, 63, 133, 133, 58,
8, 133, 133, 5, 133, 26, 133, 133, 23, 133, 44, 133, 133, 41, 133, 62, 133, 133, 59,
133, 7, 6, 133, 14, 133, 25, 24, 133, 32, 133, 43, 42, 133, 50, 133, 61, 60, 133
};
uint8_t XY (uint8_t x, uint8_t y) {
byte index = looktable [y * NUM_COLS + x];
return (index);
}
background:DOUT
background:VDD
background:VSS
background:DIN
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
neopixels:GND
neopixels:VCC
neopixels:DIN
neopixels:DOUT
p0:VDD
p0:DOUT
p0:VSS
p0:DIN
p1:VDD
p1:DOUT
p1:VSS
p1:DIN
p2:VDD
p2:DOUT
p2:VSS
p2:DIN
p3:VDD
p3:DOUT
p3:VSS
p3:DIN
p4:VDD
p4:DOUT
p4:VSS
p4:DIN
p5:VDD
p5:DOUT
p5:VSS
p5:DIN
p6:VDD
p6:DOUT
p6:VSS
p6:DIN
p7:VDD
p7:DOUT
p7:VSS
p7:DIN
p8:VDD
p8:DOUT
p8:VSS
p8:DIN
p9:VDD
p9:DOUT
p9:VSS
p9:DIN
p10:VDD
p10:DOUT
p10:VSS
p10:DIN
p11:VDD
p11:DOUT
p11:VSS
p11:DIN
p12:VDD
p12:DOUT
p12:VSS
p12:DIN
p13:VDD
p13:DOUT
p13:VSS
p13:DIN
p14:VDD
p14:DOUT
p14:VSS
p14:DIN
p15:VDD
p15:DOUT
p15:VSS
p15:DIN
p16:VDD
p16:DOUT
p16:VSS
p16:DIN
p17:VDD
p17:DOUT
p17:VSS
p17:DIN
p18:VDD
p18:DOUT
p18:VSS
p18:DIN
p19:VDD
p19:DOUT
p19:VSS
p19:DIN
p20:VDD
p20:DOUT
p20:VSS
p20:DIN
p21:VDD
p21:DOUT
p21:VSS
p21:DIN
p22:VDD
p22:DOUT
p22:VSS
p22:DIN
p23:VDD
p23:DOUT
p23:VSS
p23:DIN
p24:VDD
p24:DOUT
p24:VSS
p24:DIN
p25:VDD
p25:DOUT
p25:VSS
p25:DIN
p26:VDD
p26:DOUT
p26:VSS
p26:DIN
p27:VDD
p27:DOUT
p27:VSS
p27:DIN
p28:VDD
p28:DOUT
p28:VSS
p28:DIN
p29:VDD
p29:DOUT
p29:VSS
p29:DIN
p30:VDD
p30:DOUT
p30:VSS
p30:DIN
p31:VDD
p31:DOUT
p31:VSS
p31:DIN
p32:VDD
p32:DOUT
p32:VSS
p32:DIN
p33:VDD
p33:DOUT
p33:VSS
p33:DIN
p34:VDD
p34:DOUT
p34:VSS
p34:DIN
p35:VDD
p35:DOUT
p35:VSS
p35:DIN
p36:VDD
p36:DOUT
p36:VSS
p36:DIN
p37:VDD
p37:DOUT
p37:VSS
p37:DIN
p38:VDD
p38:DOUT
p38:VSS
p38:DIN
p39:VDD
p39:DOUT
p39:VSS
p39:DIN
p40:VDD
p40:DOUT
p40:VSS
p40:DIN
p41:VDD
p41:DOUT
p41:VSS
p41:DIN
p42:VDD
p42:DOUT
p42:VSS
p42:DIN
p43:VDD
p43:DOUT
p43:VSS
p43:DIN
p44:VDD
p44:DOUT
p44:VSS
p44:DIN
p45:VDD
p45:DOUT
p45:VSS
p45:DIN
p46:VDD
p46:DOUT
p46:VSS
p46:DIN
p47:VDD
p47:DOUT
p47:VSS
p47:DIN
p48:VDD
p48:DOUT
p48:VSS
p48:DIN
p49:VDD
p49:DOUT
p49:VSS
p49:DIN
p50:VDD
p50:DOUT
p50:VSS
p50:DIN
p51:VDD
p51:DOUT
p51:VSS
p51:DIN
p52:VDD
p52:DOUT
p52:VSS
p52:DIN
p53:VDD
p53:DOUT
p53:VSS
p53:DIN
p54:VDD
p54:DOUT
p54:VSS
p54:DIN
p55:VDD
p55:DOUT
p55:VSS
p55:DIN
p56:VDD
p56:DOUT
p56:VSS
p56:DIN
p57:VDD
p57:DOUT
p57:VSS
p57:DIN
p58:VDD
p58:DOUT
p58:VSS
p58:DIN
p59:VDD
p59:DOUT
p59:VSS
p59:DIN
p60:VDD
p60:DOUT
p60:VSS
p60:DIN
p61:VDD
p61:DOUT
p61:VSS
p61:DIN
p62:VDD
p62:DOUT
p62:VSS
p62:DIN
p63:VDD
p63:DOUT
p63:VSS
p63:DIN
p64:VDD
p64:DOUT
p64:VSS
p64:DIN
p65:VDD
p65:DOUT
p65:VSS
p65:DIN
p66:VDD
p66:DOUT
p66:VSS
p66:DIN
p67:VDD
p67:DOUT
p67:VSS
p67:DIN