With Printoid, you can adjust the fan value (from 0% = 0 ; to 100% = 255) over the M106 command:
M106 - Set Fan Speed
Turn on one of the fans and set its speed. If no fan index is given, the print cooling fan is selected. The fan speed applies to the next block added to the planner, so it will not take effect until previous moves in the planner are done. Under manual control with an idle machine,
M106will change the fan speed immediately.
Okay, Printoid can send commands to your fan. Great. But when I restart the app, the fan slider is back to 0%, whereas my fan is still at 100%. Why?
1. This is not a bug
No, this is not a bug. This is the expected behavior, even if it seems annoying for everyone.
In fact, there is no command to read the current fan speed in the standard GCODE syntax. And the reason is very simple.
When you want to set the printer head temperature, you can send the M104 (or M109) commands. For example, if you want to set your first printer head to 190°C, then you can send M104 S190 T0 (or M109 S190 T0 if you wanna wait for the temperature reached)
If you want to read the current printer head temperature, you can send the M105 command. Since there is a temperature sensor plugged on your heated nozzle, your firmware is able to retrieve the current value independently to the command you’ve sent.
On your 3D printer fans, you don’t have any system to “read” the current speed. And the firmware does not measure the current tension applied on the fan. This way, how to know what’s the current speed?
We can’t 😉 and that’s why it is not specified by a dedicated GCODE command.
2. Why displaying 0%
Why Printoid displays 0% instead of the command I have applied?
The answer is still pretty easy to understand: how did you sent the command? What was the latest fan command sent?
Of course, you can apply a command by using Printoid (and, in this case, I could remember the value, until you restart the app, to show it again). But I won’t do that at all, moveover I should not do that.
Because you can also apply a command by using OctoPrint at the same time. Or by using the LCD screen of your 3D printer. More simply, your current printing job can also adjust the temperature, according to your slicer parameters. Finally, your built-in firmware can also change the value by itself.
In fact, I purely can’t keep in memory the latest command, because I’m not the only tool to adjust this value. So, by convention, I set the value to 0% by default.