Closed Guilouz closed 3 months ago
Hey @Guilouz! 👋 I'm Dosu, your friendly neighborhood bot here to help you tackle bugs, answer your questions, and guide you on your way to becoming a contributor. While we wait for a human maintainer to chime in, I'll be diving into your issue to lend a hand. Hang tight, I'll get back to you with more insights soon! 🤖
Hey @Guilouz ,
you're right... the output pin is currently fixed to a value of 1
. We look further into it. There were some changes of the output_pin
module at the begining of the year. Looks like we did not address all those changes.
If you don't want to wait for a fix you could use fan_generic
Klipper Config Ref to controll a fan the same way.
The issue you're encountering with the output_pin
configuration in Mainsail, where the slider only sets values of 0 or 1 instead of the full 0-255 range, is due to how the slider's value is processed before sending the G-code command. The slider operates within a 0.0 to 1.0 range, and this value is directly used without conversion to the expected 0-255 range for PWM control.
To address this, the value sent by the slider needs to be adjusted to the 0-255 range before being formatted into the G-code command. This can be achieved by modifying the method that handles the slider's value, specifically by multiplying the slider's value (0.0 to 1.0) by 255 to convert it to the full range before sending the command. Here's a simplified adjustment you could make:
sendCmd(newVal: number): void {
// Convert newVal to a 0-255 range
newVal = newVal * 255;
let gcode = `SET_PIN PIN=${this.name} VALUE=${newVal.toFixed(0)}`;
// Send the G-code command
this.$store.dispatch('server/addEvent', { message: gcode, type: 'command' });
this.$socket.emit('printer.gcode.script', { script: gcode });
}
This change ensures that the slider's value is correctly scaled to the 0-255 range expected for PWM control before the G-code command is generated and sent. It's important to thoroughly test any modifications to confirm they work as expected and don't introduce new issues.
To continue the conversation, mention @dosu.
Mainsail Version:
2.11.1
Browser:
Chrome
Device:
Desktop PC
Operating System:
Linux
What happened?
Sliders on Web UI only set 0 or 1 when output_pin is used with scale.
What did you expect to happen instead?
Slider set the correct value in range 0-255 and not 0 or 1.
How to reproduce this bug?
I use this config:
When using slider to 100% this is the sending command:
While it should send this command:
Additional information:
On Fluidd it's working as expected.