Klipper3d / klipper

Klipper is a 3d-printer firmware
GNU General Public License v3.0
9.44k stars 5.3k forks source link

Design Enhancement - New Icons Suggestion #652

Closed alfsoft closed 6 years ago

alfsoft commented 6 years ago

Hello. Here are icons I made specially for Klipper. I got tired of standard "FR" icon so I decided to remake it into something understandable visually and language independent. Then I did remake all other icons to match this new feedrate icon. That's how they look:

screen_mockup

If you like them I will make a pull request for icons.py file containing all these icons.

J-charles-C commented 6 years ago

I,

Nice icon.

It would also be necessary to create zones to separate the data. It would be more legible.

best

ozligia commented 6 years ago

+1 vote for new icons

micheleamerica commented 6 years ago

+1 May I suggest you also add a dynamic hotend icon so that it visually shows if it is on, like the hotbed one? That would be great.

KevinOConnor commented 6 years ago

FWIW, I like the nozzle, fan, and bed icons. Not sure about the feed rate icon, but I don't think FR is particularly useful either. I'm open to the change.

I'd be curious what others say - @Arksine, @marcio-ao, @mcmatrix, do you have any comments?

-Kevin

mcmatrix commented 6 years ago

Same here, nozzle, fan, and bed icons are fine. Also not sure about the feed rate icon. Should we keep similar icon styles for both hd44780 and graphical LCDs?

I don't know if it's a discussion for this issue but can we do this? HD44780 custom chars (icons) are the same size as the font so that icons can be used as a character. Can this be simulated in graphical LCDs? Icons or sprites same size as the font. Then you can insert icons into the text without the need to specify exact x,y position. Example custom screen (card) in HD44780. I can easily mix custom chars (icons) and normal characters.

### special characters for hd44780
# \x00 - thermometer
# \x01 - heater_bed
# \x02 - speed_factor
# \x03 - clock
# \x04 - degrees
# \x05 - usb
# \x06 - sdcard
# \x7e - right arrow

[menu __card2004_static]
type: card
name: Card 20x04
content:
    "\x00{0:3s}\x04\x7e{1:3s}\x04   {2}"
    "\x01{3:3s}\x04\x7e{4:3s}\x04   \xa5{8}"
    "fn{6} \x02{5} {7}"
    "{9}"
items:

It would be wonderful if we can do the same with graphicals LCDs.

alfsoft commented 6 years ago

I will post some "FR" icon variants to choose from. @mcmatrix what resolution do HD44780 chars have? 5x8 or 5x10? I want to try to draw these custom characters too :)

mcmatrix commented 6 years ago

@alfsoft Current HD44780 custom char list

HD44780_chars = [
    # Thermometer
    0b00100,
    0b01010,
    0b01010,
    0b01010,
    0b01010,
    0b10001,
    0b10001,
    0b01110,
    # Heated bed
    0b00000,
    0b11111,
    0b10101,
    0b10001,
    0b10101,
    0b11111,
    0b00000,
    0b00000,
    # Speed factor
    0b11100,
    0b10000,
    0b11000,
    0b10111,
    0b00101,
    0b00110,
    0b00101,
    0b00000,
    # Clock
    0b00000,
    0b01110,
    0b10011,
    0b10101,
    0b10001,
    0b01110,
    0b00000,
    0b00000,
    # Degrees
    0b01100,
    0b10010,
    0b10010,
    0b01100,
    0b00000,
    0b00000,
    0b00000,
    0b00000,
    # USB
    0b01110,
    0b01110,
    0b01110,
    0b11111,
    0b11111,
    0b11111,
    0b00100,
    0b00100,
    # SD
    0b00000,
    0b00111,
    0b01111,
    0b11111,
    0b11111,
    0b11111,
    0b11111,
    0b00000,
]

HD44780 can only have 8 custom characters simultaneously, these are uploaded to display ram. So no space for fancy dynamic icons.

marcio-ao commented 6 years ago

@KevinOConnor: I think these are cool! I'll have to find out whether there is interest in moving this back to our Marlin branch of the UI :)

Arksine commented 6 years ago

I like these. Looking forward to seeing what feed rate variants @alfsoft comes up with.

KevinOConnor commented 6 years ago

I don't know if it's a discussion for this issue but can we do this? HD44780 custom chars (icons) are the same size as the font so that icons can be used as a character. Can this be simulated in graphical LCDs? Icons or sprites same size as the font. Then you can insert icons into the text without the need to specify exact x,y position.

We can simulate that, but I don't think we want to use special characters in write_text() - instead, we could add a new method like write_glyph(col, row, "hotbed") that would display the appropriate icon.

EDIT: Ah - your question was about inserting icons into strings. We could add a helper function - something like write_icons_and_text("msg and ~hotbed~") - and have it translate to the appropriate low-level write_text() and write_glyph() methods..

HD44780 can only have 8 custom characters simultaneously, these are uploaded to display ram. So no space for fancy dynamic icons.

FYI, if someone really wanted to, I think it would be possible to do animations on the HD44780. Although there are only 8 custom glyphs available, it should be possible to change the glyph definition each update to animate that glyph.

-Kevin

mcmatrix commented 6 years ago

FYI, if someone really wanted to, I think it would be possible to do animations on the HD44780. Although there are only 8 custom glyphs available, it should be possible to change the glyph definition each update to animate that glyph.

Thanks, good to know that it's possible.

EDIT: Ah - your question was about inserting icons into strings. We could add a helper function - something like write_icons_and_text("msg and ~hotbed~") - and have it translate to the appropriate low-level write_text() and write_glyph() methods..

That would be super. If we can have that high-level write function for GLCD then it's possible to make nice text screens with icons as HD44780 has. Something like this.

...
name: GLCD 16x04
content:
    "~hotend~{0:3s}~degrees~~rarraw~{1:3s}~degrees~   {2}"
    "~hotbed~{3:3s}~degrees~~rarraw~{4:3s}~degrees~   {8}"
    "~fan~{6} ~speed~{5} {7}"
    "{9}"
items:
...

Then we have nice screens for both HD44780 and GLCD. Btw if you have HD44780 then you can try __screen2004_static deck.

marcio-ao commented 6 years ago

@KevinOConnor: When using the graphics LCD, it is possible to take advantage of the fact that the bitmap buffer is XORed with the text buffer. So suppose you wanted to have two frames of a fan animation, and wanted to update it fast using a single character write, without having to use two of the four custom-character glyphs slots. One way to do this is to paint the first frame of the animation on the bitmap buffer at startup, then generate a custom character glyph which is the XOR of the first and second frame. Now, you can animate the fan simply by alternatively writing the custom-glyph and a space to the text buffer. So, you can actually animate two frames with one custom-glyph.

KevinOConnor commented 6 years ago

@marcio-ao - that is a neat hack!

Just to be clear though, I don't think Klipper needs to optimize the animations. There should be enough bandwidth and processing power to write out everything in pure graphics mode - even all the screen text could be written in graphics mode if desired. (Klipper prioritizes all other activities over lcd updates, so even if there was a resource contention it should only result in slight pauses to screen updates.)

-Kevin

alfsoft commented 6 years ago

Sorry for the delay. Here are some of Feedrate icon variants: klipper_fr_icon_variants

And here are HD44780 icons. Top row is what we have now. Bottom two rows are my variant(s): standard_klipper_text_icons_enlarged

Will try to test these 5x8 icons on real HD44780 + Arduino board as soon as possible.

oderwat commented 6 years ago

I like the feedrate icon from the original first post the best. B as second best.

bruce356 commented 6 years ago

I think B is good

tonhozi commented 6 years ago

Another vote for B.

Pedro Tonhozi de Oliveira | Ph.D. Visiting Assistant Professor Department of Entrepreneurship and Innovation Gordon Ford College of Business | Western Kentucky University

This message including any attachments may contain confidential information, according to our Information Security Management System, and intended solely for a specific individual to whom they are addressed. Any unauthorized copy, disclosure or distribution of this message is strictly forbidden. If you have received this transmission in error, please notify the sender immediately and delete it.

On Thu, Sep 20, 2018 at 6:12 PM bruce notifications@github.com wrote:

I think B is good

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/KevinOConnor/klipper/issues/652#issuecomment-423363534, or mute the thread https://github.com/notifications/unsubscribe-auth/AVO4IwMOgSR_KQacDWujpHp5uUTtesXCks5udCD4gaJpZM4Wqg26 .

dstulken commented 6 years ago

As much as I like it, I would vote against "B", as the running person figure matches very closely to the international signage for "emergency exit". https://en.wikipedia.org/wiki/Exit_sign

On a touchscreen in particular, if common symbology is retained, this could lead to a user misinterpreting this symbol as an emergency stop button, perhaps with disastrous effects in time of need.

My personal favorite would be the original chevron pattern. :)

alfsoft commented 6 years ago

I will post more FR variants soon. Really tricky icon to design, as for me. What is feed rate physically? The speed (or ratio?) of filament feeding through the nozzle plus the speed of printer’s kinematics? So what this feed rate (or feedrate?) really is? More like a speed or a ratio? What ‘meaning’ do we need to represent in FR icon?

mcmatrix commented 6 years ago

B looks fine. If you need to make more variants then maybe something like fast-forward icon.

KevinOConnor commented 6 years ago

My 2 cents - I'd update the fan, bed, and extruder icons. I would leave the FR as it is in the current code. (Perhaps changing it to a single 8x16 graphic instead of a 16x16 graphic.) I'm leery of graphic B - it could be interpreted as a "speed" icon, but it could also be interpreted as a "run away" icon.

As for the HD44780 graphics, I'd leave them as they are in the current code. (Given the low pixel density on that display, it's hard to add detail to those icons.)

This is just my current opinion - I'm open to alternatives.

-Kevin

KevinOConnor commented 6 years ago

What is feed rate physically?

It's a speed override - if it is set to 200% it effectively doubles the velocity of the incoming g-code stream. Many people never use it. If there was other pressing information to be displayed, it could be removed from the screen (for example, the fan section could alternate with the FR section every few seconds if FR is not 100%).

FWIW, I'd say that extrude factor (which isn't displayed) has about the same general display priority as feed rate.

-Kevin

marcio-ao commented 6 years ago

It's a speed override - if it is set to 200% it effectively doubles the velocity of the incoming g-code stream.

Perhaps in Klipper it is different, but in Marlin what the FR does is it multiplies the feedrate value of incoming G-Code commands. This, however, is only slightly related to the actual print speed, because the maximum velocity is limited by accelerations and jerk parameters. I did some testing with Marlin that shows that 300% FR roughly doubles the speed of a print, while 900% only quadruples the speed. So as you increase the FR, you get diminishing returns as the limiting factor becomes the accelerations.

Personally I like icon B or D. I understand the concern brought up by @dstulken regarding B, but I think the significant element of the exit icon is a running man set against a door frame, not the man itself. I don't suspect that a running man by itself should bring to mind "stop print", especially since it is right next to a 100%.

The FR calls to mind the "turbo" button on old 80s PCs, which I think makes the rocket icon very appropriate, since this is really what it is, a "boost" :)

marcio-ao commented 6 years ago

Given the low pixel density on that display, it's hard to add detail to those icons.

My personal favorite has always been the Bill Atkinson icon... the good ol' days where every pixel had to count!

https://www.folklore.org/StoryView.py?project=Macintosh&story=Steve,_Icon.txt

mcmatrix commented 6 years ago

In hd44780 we should have one last glyph slot free. Maybe we can use it for fan icon?

alfsoft commented 6 years ago

Some more FR variants. Decided to give this emergency man one more chance and now he is even more speedy! :runner:

fr_more_variants

alfsoft commented 6 years ago

Perhaps changing it to a single 8x16 graphic instead of a 16x16 graphic

Changing only one icon's width would break visual equality on the screen. All icons are beautifully aligned at this moment because of their equal dimensions and positions.

Arksine commented 6 years ago

I like the rabbit. Its commonly identified with "speed", which is essentially what feedrate is.

oderwat commented 6 years ago

Yep rabbit looks like a good choice. For some reason this emergency exit man looks much more like an emergency to me. A racing flag could also do. The rabbit looks maybe a bit to much like a kangaroo. I also didn't recognise the speed-meter in the first images. Maybe having another version of this would work.

bruce356 commented 6 years ago

Hi, the FR replacement should not necessarily just indicate fast speed as in an increase (or going faster) this control is also used to slow down the printer. Its difficult but the more I look at it the original icon seems to make sense to me, or option "A" speed meter but with a change in dot size, starting perhaps with a medium sized dot at centre, to smaller dots anti clockwise and lager dots clockwise. regards bruce

mcmatrix commented 6 years ago

For hd44780 fan glyph, what you think of this? image image

KevinOConnor commented 6 years ago

@alfsoft - FYI - my opinion would be to remain with the current FR icon. I agree that FR isn't particularly helpful, but I don't think the mental connection of "picture of something fast" to "speed" to "feedrate" is natural. I suspect that for all the feedrate icons, people who know what it is will know what it is, and people who don't know what it is wont know what it is. So, my opinion is that there isn't a gain to the change. Since many people never change feedrate, maybe just leaving that part of the screen blank when it isn't being used would be an improvement? I do like the new nozzle, fan, and bed icons.

@mcmatrix - I fear that fan looks too close to a swastika.

-Kevin

mcmatrix commented 6 years ago

@KevinOConnor I tried to do it in the opposite direction, but yeah it was too close. There's not much playroom in 5x8 pixels :) Maybe something like this? image image

KevinOConnor commented 6 years ago

@mcmatrix - I like it.

-Kevin

KevinOConnor commented 6 years ago

FYI - the nozzle, bed, and fan icons were merged (commit 630989c0).

KevinOConnor commented 6 years ago

Let me know if there are further comments on this topic. Otherwise I'll close it.

-Kevin

alfsoft commented 6 years ago

@KevinOConnor nothing to add yet. I will open another topic if some new ideas will come :)