Advertisement
Guest User

Meatballs Demo divide by zero

a guest
Nov 30th, 2021
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. //Metaballs
  2. //16x16 rgb led matrix demo
  3. //Yaroslaw Turbin 02.09.2020
  4. //https://vk.com/ldirko
  5. //https://www.reddit.com/user/ldirko/
  6.  
  7. // update for https://pastebin.com/DdKyN5s2
  8. // with HeatColors_p  pallete looks pretty good now
  9.  
  10. #include "FastLED.h"
  11.  
  12. // Matrix size
  13. #define NUM_ROWS 16
  14. #define NUM_COLS 16
  15. // LEDs pin
  16. #define DATA_PIN 3
  17. // LED brightness
  18. #define BRIGHTNESS 255
  19. #define NUM_LEDS NUM_ROWS * NUM_COLS
  20. // Define the array of leds
  21. CRGB leds[NUM_LEDS];
  22.  
  23. void setup() {
  24.   FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
  25.   FastLED.setBrightness(BRIGHTNESS);
  26. }
  27.  
  28. void loop() {
  29.  
  30.   uint8_t bx1 = beatsin8(15, 0, NUM_COLS - 1, 0, 0);
  31.   uint8_t by1 = beatsin8(18, 0, NUM_ROWS - 1, 0, 0);
  32.   uint8_t bx2 = beatsin8(28, 0, NUM_COLS - 1, 0, 32);
  33.   uint8_t by2 = beatsin8(23, 0, NUM_ROWS - 1, 0, 32);
  34.   uint8_t bx3 = beatsin8(30, 0, NUM_COLS - 1, 0, 64);
  35.   uint8_t by3 = beatsin8(24, 0, NUM_ROWS - 1, 0, 64);
  36.   uint8_t bx4 = beatsin8(17, 0, NUM_COLS - 1, 0, 128);
  37.   uint8_t by4 = beatsin8(25, 0, NUM_ROWS - 1, 0, 128);
  38.   uint8_t bx5 = beatsin8(19, 0, NUM_COLS - 1, 0, 170);
  39.   uint8_t by5 = beatsin8(21, 0, NUM_ROWS - 1, 0, 170);
  40.  
  41.   for (int i = 0; i < NUM_COLS; i++)    {
  42.     for (int j = 0; j < NUM_ROWS; j++) {
  43.  
  44.       byte  sum =  dist(i, j, bx1, by1);
  45.       sum = qadd8(sum, dist(i, j, bx2, by2));
  46.       sum = qadd8(sum, dist(i, j, bx3, by3));
  47.       sum = qadd8(sum, dist(i, j, bx4, by4));
  48.       sum = qadd8(sum, dist(i, j, bx5, by5));
  49.  
  50.       leds[XY (i, j)] =  ColorFromPalette(HeatColors_p, sum + 220, BRIGHTNESS);
  51.     }
  52.   }
  53.  
  54.   blur2d(leds, NUM_COLS, NUM_ROWS, 32 );
  55.   FastLED.show();
  56.  
  57. } //loop
  58.  
  59. byte dist (uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)  {
  60.   int a = y2 - y1;
  61.   int b = x2 - x1;
  62.   a *= a;
  63.   b *= b;
  64.   byte dist = 220 / sqrt16(a + b);
  65.   return dist;
  66. }
  67.  
  68. uint16_t XY (uint8_t x, uint8_t y) {
  69.   return (y * NUM_COLS + x);
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement