Commit Graph

206 Commits

Author SHA1 Message Date
Fabian Schlenz b8f39410c9 Effect matrix now uses subpixel rendering for smoother movements. 2019-09-25 06:32:35 +02:00
Fabian Schlenz 711719921a Rewrote effect firework. Now it kinda works. 2019-09-25 06:30:03 +02:00
Fabian Schlenz 6ba2854a8d Effect big_dynamic will now be shown with clock. 2019-09-25 06:28:53 +02:00
Fabian Schlenz aa11f5ed8a Added subpixel-rendering as well as blurring methods to Window. 2019-09-25 06:27:43 +02:00
Fabian Schlenz fa5f1c8816 Added effect blur2d 2019-09-25 06:26:27 +02:00
Fabian Schlenz b5c99c320b Added effect sines. 2019-09-25 06:25:16 +02:00
Fabian Schlenz 96e144f96b Added effect analog_clock (heavily, not-really-usable work-in-progress!). 2019-09-25 06:24:24 +02:00
Fabian Schlenz 792354e371 Updated recorder to only send every 2nd frame, to clear the window when selecting a new effect, doubled the resizing factor and re-enabled gifsicle. 2019-09-25 06:09:00 +02:00
Fabian Schlenz 549bce479a gifsicle breaks the gifs. -_-
continuous-integration/drone/push Build is passing Details
2019-09-04 12:48:45 +02:00
Fabian Schlenz 1754f49b68 Better results from memory leak effect.
continuous-integration/drone/push Build is passing Details
2019-09-04 06:07:28 +02:00
Fabian Schlenz 0b80b74be3 Added more effects to the cycle effect. 2019-09-04 06:06:47 +02:00
Fabian Schlenz 33c2417534 Added recorder to be able to stream the current LED data via network. That way you can create nice looking GIF images of the effects - and even develop effects without having to look at the actual LED panel. 2019-09-04 06:05:45 +02:00
Fabian Schlenz bf1666fb32 Added font numbers3x5_blocky. 2019-09-04 06:02:16 +02:00
Fabian Schlenz a05931d7f9 Made twirl effect a lot more beautiful. 2019-09-04 06:01:08 +02:00
Fabian Schlenz a6cd94e416 Fixed rainbow_matrix and random_matrix. 2019-09-04 06:00:18 +02:00
Fabian Schlenz 2ddd77eb5c Fixed big_clock effect and made it a lot nicer with moving pixels for seconds. 2019-09-04 05:59:30 +02:00
Fabian Schlenz 1122546853 Fixed line and circle drawing code in Window. But it looks bad ans some form of dithering is definitely required. 2019-09-04 05:58:36 +02:00
Fabian Schlenz 77fdba213a I'm tired and forgot to add two files to previous commits. :-/ 2019-06-19 22:29:11 +02:00
Fabian Schlenz ead076f9a3 You can now set options for effects via MQTT and HTTP. Basic syntax is: <mode>,<option1>=<value1>,<option2>=<value2>,... 2019-06-19 22:28:38 +02:00
Fabian Schlenz 82fbc7be43 MQTT: Small fixes. Most notably, MQTT_TOPIC/status will now contain hostname and IP of pitrix. 2019-06-19 22:27:33 +02:00
Fabian Schlenz 90c0df093e New Effect: BigDynamicEffect. 2019-06-19 22:26:52 +02:00
Fabian Schlenz 26df11fc47 Added tests. Start them by sending a message to MQTT_TOPIC/run_tests. First test will test all effects for memory leaks. 2019-06-19 22:26:38 +02:00
Fabian Schlenz 0163bbef6c Some memory leaks fixed. 2019-06-19 22:23:49 +02:00
Fabian Schlenz d2c0268dce MatrixEffect can now have multiple columns in the same column. In RandomMatrix, they even run in all directions. 2019-06-19 22:22:03 +02:00
Fabian Schlenz e897c6bdcd New Effect: DvdEffect 2019-06-19 22:17:39 +02:00
Fabian Schlenz f1821b0b85 New Effect: RandomConfettiEffect 2019-06-19 22:17:10 +02:00
Fabian Schlenz 41af01ee0b Better handling of Animations, their members and the destructor. 2019-06-19 22:16:06 +02:00
Fabian Schlenz 74b967392d Cleanup.
continuous-integration/drone/push Build is failing Details
2019-06-18 18:18:07 +02:00
Fabian Schlenz 8c9e9e2e2e MQTT: Use new effect structure and logging. 2019-06-18 18:17:48 +02:00
Fabian Schlenz f1424d0277 Extended http server to list files in SPIFFS and allow you to upload and delete files. 2019-06-18 18:17:20 +02:00
Fabian Schlenz 0941ad8349 Effects are now constructed when needed instead of having global objects of every effect flying around. 2019-06-18 18:14:59 +02:00
Fabian Schlenz ae02509712 Updated .gitignore 2019-06-18 18:12:16 +02:00
Fabian Schlenz 3c0e7a116a Animation now uses .pia files from SPIFFS instead of hardcoded C stuff. 2019-06-18 18:10:58 +02:00
Fabian Schlenz 1912772da3 Effects now use Constructor and Destructor to initialize or delete their data, instead of using start() and stop(). 2019-06-18 18:09:05 +02:00
Fabian Schlenz f0509de411 PixelClockEffect is now being displayed correctly. 2019-06-16 12:43:34 +02:00
Fabian Schlenz e8f3ea3281 Extended MatrixEffect to also get RainbowMatrixEffect and RandomMatrixEffect.
Side note: You know you understand C++ when you understand the meaning 
and reason for "MatrixEffect** _columns". ;-)
2019-06-16 12:43:05 +02:00
Fabian Schlenz 3edbf6b252 Added PicelClockEffect.
continuous-integration/drone/push Build is passing Details
2019-06-15 14:18:35 +02:00
Fabian Schlenz b65afde142 MatrixEffect now uses dynamically allocated memory. 2019-06-15 14:17:06 +02:00
Fabian Schlenz 02b3bbcea8 Added methods for drawing lines and circles to Window. 2019-06-15 14:16:27 +02:00
Fabian Schlenz 0af76f2195 gif2c: Produce nicer formatted C code.
continuous-integration/drone/push Build is failing Details
2019-06-14 05:36:25 +02:00
Fabian Schlenz 5ce3b0c1b3 Centralized the creation of a hostname to a global variable hostname, set in pitrix.cpp. Added an mDNS record for the webserver. 2019-06-14 05:35:17 +02:00
Fabian Schlenz 4fdd1d3739 Added animation 'cake'. 2019-06-14 05:32:55 +02:00
Fabian Schlenz 1e23936374 Added effect 'gol': Conway's Game of Life. 2019-06-14 05:32:17 +02:00
Fabian Schlenz 291a3be623 Moved platform-specific code related to WiFi and services to my_wifi.h. Also, made the HTTP server stuff compatible to ESP32.
continuous-integration/drone/push Build is passing Details
2019-06-13 06:01:44 +02:00
Fabian Schlenz bfe46220ca Added HTTP REST API. 2019-06-12 20:57:31 +02:00
Fabian Schlenz 308196d185 Added fps to MQTT metrics. 2019-06-12 20:49:37 +02:00
Fabian Schlenz ca980b0c9f You can now set LED_MAX_MILLIAMPS if your power supply is limited. 2019-06-12 20:48:56 +02:00
Fabian Schlenz 874b2c212f Small changes to some effects:
continuous-integration/drone/push Build is passing Details
* Don't put multi-dynamic and single-dynamic right after one another, 
because that looks strange when not using random cycling between 
effects.
* Removed white from the matrix palette cause we're setting white 
explicitly from the code.
* Increased speed of single_dynamic a little.
2019-06-12 06:32:06 +02:00
Fabian Schlenz 477edd1597 I just learned that unintialized variables in C can lead to lots of unexpected and hard-to-debug behaviour... :-/ 2019-06-12 06:30:26 +02:00
Fabian Schlenz 2072877159 Handling of incoming MQTT messages improved.
continuous-integration/drone/push Build is passing Details
2019-06-11 19:48:42 +02:00
Fabian Schlenz 83254f2eaa Windows. Everything now is implemented in Windows. ;-) (Okay, just the drawing stuff. And defnititely nothing by Microsoft.) 2019-06-11 19:48:09 +02:00
Fabian Schlenz c5856a6f7a Whitespace stuff. Tabs rule!
continuous-integration/drone/push Build is failing Details
2019-06-07 06:24:16 +02:00
Fabian Schlenz b71faa3bcb MQTT now sets LWT and explicitly requests a clean sesion on startup.
continuous-integration/drone/push Build is failing Details
2019-06-07 06:08:52 +02:00
Fabian Schlenz c153ce915d Added MQTT_TOPIC_WEATHER for receiving and storing weather data. 2019-06-07 06:08:21 +02:00
Fabian Schlenz a821985479 Re-organized Animation code to move from multiple different constructors to one constructor and a handfull of setters for options. 2019-06-07 06:07:29 +02:00
Fabian Schlenz 560b71425d Made the code ESP32-compatible.
continuous-integration/drone/push Build is passing Details
2019-06-06 12:12:58 +02:00
Fabian Schlenz 05aa6f7249 Added a `pragma message` if MQTT is disabled.
continuous-integration/drone/push Build is failing Details
2019-06-06 06:51:07 +02:00
Fabian Schlenz 026ed27d8e More (unseccessful) experiments with FireworksEffect. 2019-06-06 06:44:52 +02:00
Fabian Schlenz f7275cc086 Setup ntp callback. 2019-06-06 06:44:34 +02:00
Fabian Schlenz d9212189c1 NTPClient.getTimeValid is now .isTimeSet. 2019-06-06 06:44:18 +02:00
Fabian Schlenz f7fc459095 MQTT can now be disabled via MQTT_ENABLE 2019-06-06 06:43:50 +02:00
Fabian Schlenz 158847d4c4 Correctly using NTPClient. Now with callback. 2019-06-06 06:43:01 +02:00
Fabian Schlenz 26761226d0 Stuff from text.h is now const. 2019-06-06 06:42:00 +02:00
Fabian Schlenz dcf42bbb0c Added animation_weather_icons. 2019-06-06 06:40:51 +02:00
Fabian Schlenz 4fe34afd08 Animation.h now also includes AnimationSlice to show only part of an animation. 2019-06-06 06:40:30 +02:00
Fabian Schlenz 5b7c7a7007 gif2c: Now has an option --full-frames which encodes every frame completely, without the "leave the previous pixel intact" bits. 2019-06-06 06:39:52 +02:00
Fabian Schlenz b2f25f933b Extended platrofmio.ini to use libraries from the internet. Those are all forks by me, needing some small fixes or pull requests applied here and there. 2019-06-06 06:39:00 +02:00
Fabian Schlenz 59a987f7e6 FireEffect does look a bit better, but still not right. 2019-06-05 06:28:36 +02:00
Fabian Schlenz f7230b54a2 CycleEffect can now be configured to show the effects sequentially or randomly. 2019-06-05 06:28:21 +02:00
Fabian Schlenz a2b0f7106f Added FireworkEffect, which needs a lot more tweaking. 2019-06-05 06:27:55 +02:00
Fabian Schlenz de180b9b28 Repaired the color palette for MatrixEffect. 2019-06-05 06:27:34 +02:00
Fabian Schlenz 57815cb3bf Joined SingleDynamicEffect and MultiDynamicEffect into one file and finally got different timings for both classes to work. 2019-06-05 06:27:07 +02:00
Fabian Schlenz b2ff3bdc54 Moved the animation display code into its own class which can and will also be used to display static images and sprites. 2019-06-05 06:25:40 +02:00
Fabian Schlenz e8cf0e7ea2 NTPClient: Added packetFlush to update() as well. This should hopefully fix those random time delay bugs. 2019-06-04 06:52:06 +02:00
Fabian Schlenz 788b1f4119 First pixel of MatrixEffect is enforced to be white. 2019-06-04 06:51:36 +02:00
Fabian Schlenz 5c4c1f2fac Syntax corrections. 2019-06-04 05:59:51 +02:00
Fabian Schlenz bfaf1a9d7a Added debugging mode to gif2c, where it will print overviews of which pixels of each frame changed. 2019-06-04 05:59:32 +02:00
Fabian Schlenz 1d693f34e9 gif2c now throws an exception if the gif file contains frames with differing sizes. 2019-06-04 05:59:00 +02:00
Fabian Schlenz f95589763e Added FireEffect. Its values still need a bit of tweaking to look right... 2019-06-04 05:58:23 +02:00
Fabian Schlenz 96442b48cc SnakeEffect now turns into a random direction when hitting a wall. The code is now also a whole lot cleaner. 2019-06-04 05:57:27 +02:00
Fabian Schlenz 94687bab36 CycleEffect now uses the ID of an effect within cycle_effects to prevent repeating an effect instead of comparing the objects. 2019-06-04 05:56:33 +02:00
Fabian Schlenz 46062945ff Changed MatrixEffect to use color palettes. 2019-06-04 05:55:24 +02:00
Fabian Schlenz b2bc8aa75e Experiment in getting the differing delays in Single/MultiDynamic effects to work. Unsuccessful, for now. 2019-06-03 06:43:50 +02:00
Fabian Schlenz 7fdc28fe48 Logging effect ID in CycleEffect. 2019-06-03 06:43:02 +02:00
Fabian Schlenz 4064357d5c Changed `REPORT_FREE_HEAP` to `REPORT_METRICS` and included uptime there as well. 2019-05-31 23:59:32 +02:00
Fabian Schlenz 12c5bc229d SnakeEffect now has a shorter tail. 2019-05-31 23:58:58 +02:00
Fabian Schlenz 29e136b8db NTPClient now does updates asynchronously. Thanks to https://github.com/arduino-libraries/NTPClient/pull/22 2019-05-31 23:58:34 +02:00
Fabian Schlenz f9fba8a8f9 Macros `LOG` and `LOGln` now will, if debugging is enabled, log to an mqtt topic as well as Serial. 2019-05-31 23:57:46 +02:00
Fabian Schlenz 3294a35028 {Multi,Single}Dynamic will now start with a correctly colored board of tiles. 2019-05-31 05:47:11 +02:00
Fabian Schlenz a7d956209a Added `Effect::start()` and `Effect::stop()` to allow effects to reserve memory on start and free it afterwards. 2019-05-31 05:46:17 +02:00
Fabian Schlenz a2fe1461ad Added effect "snake". 2019-05-31 05:45:07 +02:00
Fabian Schlenz 5321409727 Added support for reporting for freeHeap via MQTT. 2019-05-30 13:09:38 +02:00
Fabian Schlenz b6d59758d8 SingleDynamic and MultiDynamic now also use baseHue. 2019-05-30 13:09:00 +02:00
Fabian Schlenz 646d3369fb Amount of new Pixels per loop for confetti effect is now configurable. Also, the color is based on a slowly rotating baseHue. 2019-05-30 13:08:24 +02:00
Fabian Schlenz 8e46327549 Re-added the "Flush old UDP packets before updating the time" fix to NTPClient.cpp. See https://github.com/arduino-libraries/NTPClient/pull/62 2019-05-30 11:36:53 +02:00
Fabian Schlenz adb03d486b NTPClient has now a method `boolean isTimeValid()` which indicates whether the last update was successful or not. Clock will blink if it wasn't successful. 2019-05-30 11:36:13 +02:00
Fabian Schlenz 0d3896ca0d Got rid of (most of) all of the warnings. 2019-05-30 11:26:13 +02:00
Fabian Schlenz 711d028e90 Added effect "confetti". Closes #16. 2019-05-30 11:12:40 +02:00
Fabian Schlenz b452fff812 Don't do that many FastLED.show()s for now - that leads to lots of display glitches... 2019-05-30 01:36:30 +02:00
Fabian Schlenz 63a65c5b44 New animation "heart" added. 2019-05-30 01:35:57 +02:00
Fabian Schlenz 71c524b2cf Modified gif2c.rb to output GIFs matching the current code in effect_animation.h. 2019-05-30 01:33:19 +02:00
Fabian Schlenz 8c62a6f38b Added a config switch to enable temporal dithering. But at least for my setup something is too slow - it's flickering. 2019-05-30 00:54:57 +02:00
Fabian Schlenz 2f58fd14d0 Splitting the code into single files is done. \o/ 2019-05-30 00:49:54 +02:00
Fabian Schlenz 76802ffa78 Lots of re-organizing code and stuff. 2019-05-28 21:19:35 +02:00
Fabian Schlenz 2cbb981eea STarted reorganizing files into proper .h and .cpp files. 2019-05-28 05:46:25 +02:00
Fabian Schlenz ce0c834326 Arduino IDE -> PlatformIO 2019-05-27 21:17:05 +02:00