New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Brainstorming NeoPixel with 8x8 Display #3958
Comments
Or maybe a charset implementation like in the 7 segment display. |
Well, there is the challenge of custom matrix sizes. I know there are standard 'slabs' with 8x8 up to at least 16x32 and 8x64 NeoPixels, but you can of course configure to your own preference. |
But it's alway a factor of 8. so we could make it for 8x8 and scale for other sizes. |
Upload.from.GitHub.for.iOS.MOVAn example |
I've been investigating this a bit, and found this rather extensive (commercial) über-guide to NeoPixels in several forms and shapes. I'll probably end up with a somewhat similar, though much less complex, configuration like I did for P104 - Display - MAX7219 dot matrix, except that there will be only 1 zone. |
I don't know if we can use a binary part of the flash to store 3byte x 64 (and other sizes) as a picture. Maybe classical files in flash as the config for example. Text scrolling would be nice too. |
ESPEasy does use a file-system, and you can upload any type of file there, but there are limits on available space, though, depending on the configuration used (128 kB for 1M Flash devices up to ~8 MB on the MAX 16M8M ESP32 configuration), and they all use somewhere between 64 kB and 200 kB (depending on the number of tasks, and size of rules files) for storing the configuration, so that has to be subtracted. And then some free space is required to be able to overwrite an existing file during config save. TL;DR: Image files should be read from the file-system, indeed. |
I've reserved plugin ID P131 for this plugin, no ETA though 😃 |
Size is very small 8x8x64 = 192 byte for an rgb picture is not so much. |
File format could be BMP ,it's uncompressed and maybe easy to assign to the pixels. |
For a single standalone "picture" it's not much, but I guess you may want a bit more flexibility here in what to show :) |
Is it possible to make plugin only available for ESP32 or 4M devices? To load pictures via HTTP from a server would be nice too. So we don't have to save them on the device. |
Well, my calculator says that result is 4096, but the real calculation should be 8x8x(24/8) = Edit: Corrected for bit/byte mix-up 😅 |
Bits ;) |
You mix up bytes and bit. 24 bit= 3 byte 😅 |
😅 |
And I've seen some things with Neopixel flow pictures like waterfall wich move the lines up to top and things from left to right. For that we need picture 8 x X lines and need to move them with a value of speed. |
I think that's called a 'sprite' 🛸 |
Like this at 0:42 |
Hmm that looks like code that needs a lot of CPU time to run. |
It's a full repaint with every line no matter what direction. Maybe it should be a version only esp32neopixelultra16M.bin 😃. But scrolling is for sure not the main reason to make it. |
The |
With multiple panels in a row it's a little tricky. 2 panels 2 solutions should be an option for the orientation because, with first pixel left/bottom it would be a flow of an picture with 8x16 pixel from an bmp. With the first pixel left top, the picture must be divided in the parts of the size from one panel - if you know what I mean. with 4 panel I have no idea. |
Received my ordered NeoPixel matrixes (8x8 leds, 4 units), wired them up and started working on a plugin. (I really should have ordered an extra matrix to be able to fit Still lots of work, and testing, to do, here is an impression of the Device configuration and its options: (Many options and the entire AdafruitGFX_helper shared with P116) |
Hey looks nice. I think the interesting part would be to select an BMP from filesystem to display with an assignable brightness 🔆. |
I have some ideas on how to apply that, if you have a few of those available, preferably in a .zip file to avoid tampering by github, for me to experiment with what you want to use, that would be nice. |
@tonhuisman sure here are some by me. For the arrow it would be nice have a rotation angle to display 4 directions with one bmp. The RGB values must be reduces by the brightness value to not BBQ the panel with full yellow :) arrow_y.bmp Maybe we could limit to 8 bit pictures, I think it could be enough. and on for 8x16 pixel 2 panels: |
Status update: So, yes, we can display (small) bmp files on these displays, and by playing with rotation and x/y coordinates, you can place them anywhere 😉 No scaling, btw, so when configured for 16x16 pixels, you can use a 16 pixel high bmp, on an 8 bit pixel height display the image will be clipped. |
Hey @tonhuisman sounds great. Is it ready for the 90 degree version of my hand painted paper above? I have to use it because of the modules I own. They can only with this orientation used. 👍 Will it be an extra bin for neopixel with only this plugin and maybe the switch plugin and only für ESP32? Can you provide a test build?😉 TFT display is interesting, is there a display module wich is usable? |
It should be, that's why I have added all these configuration options 😉, Your 90 degree drawing should have width: 8, height:8, Bottom/Left, Columns, Progressive for Matrix, and width: 2, height: 1, Top/Left, Rows, Progressive for Tile configuration. All inspired by this library documentation (I'll probably add examples of that in the documentation) I'll provide a test-build here after some more testing (and probably bug-fixing 😆) |
The second one is really nice. |
@tonhuisman Hi Ton in ESP_Easy_mega_20220809_neopixel_ESP32_4M316k is P131 not included? |
Then it will be in next build? |
Yep, merged stuff will be in the next build, unless for whatever reason it will be reverted (not likely here, but just to be complete) |
@tonhuisman I tried a rule: On System#Boot do with our:
but it don't writes an A. |
neomatrixcmd,txt,A don't work too. |
please try Edit: So it is purely diagnostic right now to see where we might have to look for what's happening here. |
The generic (AdaGFX) commands use But I expect that the device isn't properly initialized yet when the |
neomatrix,bmp,0,0,arrow_8x16.bmp for example works, but you know it was our first build for BMPs in this thread. |
Can you update to the latest
That should be like |
Yeah, it was the old build, the action build works. I not expected the dark web mode, nice. |
Another thing the rule should write the hour and second to the matrix, but only the first fire of the time writes the value and keeps it. The log says the event fires with new values but not changing the matrix. :/ on WiFi#Connected do On Rules#Timer=1 do |
One has Edit: edit2: |
You're right, it works. |
Well, both work, but the What you want to display can also be achieved by adding the %syshour_0% and %syssec_0% variables in the 2 lines you probably have configured there (looking at the display layout), and set the Interval to a reasonable interval (1?) to update automagically, without the need for any rules 😃 |
The 2 lines waste some space. but the BMP feature from @tonhuisman ist great. |
Ah, that Lines display could use a little optimization, indeed. |
Why I can't write 3 characters over 2 displays, is the font monospaced? |
The default font is indeed mono-spaced, but some fonts have the digits mono-spaced while still being proportionally spaced. There are compile-time flags to include proportionally spaced fonts, have a look at |
Can you only one proportionally font add to the neopixel build? I think it is helpfully for a matrix build. |
@tonhuisman Hi ton how can I get a leading space for values 0-9 in the rule:
|
Got it
|
Adding quotes around the value, and using the value formatting features, could help too |
@tonhuisman It don't really work. Floating point transformations: Dx: Minimal ‘x’ digits zero filled in front of the decimal point, no decimal digits. Same as Dx.0 So (BLK#Dummy=0): rule: show zero values as "0 °" instead of " 0°" |
You will need quotes around the value to fix that: else that leading space will be eaten by the command parser 😉 |
Sorry, you wrote it before. It's fine. |
As like in issue discussed, we could make this display more usable when we could put some pixel map to the flash to use it easily from rule to show maybe arrow, stop or other signs.
@TD-er
@tonhuisman
The text was updated successfully, but these errors were encountered: