|
@@ -400,12 +400,13 @@ void manage_heater()
|
400
|
400
|
|
401
|
401
|
} // End extruder for loop
|
402
|
402
|
|
403
|
|
- #if EXTRUDER_0_AUTO_FAN_PIN > -1
|
|
403
|
+ #if EXTRUDER_0_AUTO_FAN_PIN > -1 || EXTRUDER_1_AUTO_FAN_PIN > -1 || EXTRUDER_2_AUTO_FAN_PIN > -1
|
|
404
|
+ bool newFanState;
|
|
405
|
+ #if EXTRUDER_0_AUTO_FAN_PIN > -1
|
404
|
406
|
// check the extruder 0 setting (and any ganged auto fan outputs)
|
405
|
|
- bool newFanState = (EXTRUDER_0_AUTO_FAN_PIN > -1 &&
|
406
|
|
- (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE ||
|
|
407
|
+ newFanState = (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE ||
|
407
|
408
|
(EXTRUDER_0_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN && current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE) ||
|
408
|
|
- (EXTRUDER_0_AUTO_FAN_PIN == EXTRUDER_2_AUTO_FAN_PIN && current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE)));
|
|
409
|
+ (EXTRUDER_0_AUTO_FAN_PIN == EXTRUDER_2_AUTO_FAN_PIN && current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE));
|
409
|
410
|
if ((extruderAutoFanState & 1) != newFanState) // store state in first bit
|
410
|
411
|
{
|
411
|
412
|
int newFanSpeed = (newFanState ? EXTRUDER_AUTO_FAN_SPEED : 0);
|
|
@@ -416,12 +417,11 @@ void manage_heater()
|
416
|
417
|
analogWrite(EXTRUDER_0_AUTO_FAN_PIN, newFanSpeed);
|
417
|
418
|
extruderAutoFanState = newFanState | (extruderAutoFanState & ~1);
|
418
|
419
|
}
|
419
|
|
- #endif //EXTRUDER_0_AUTO_FAN_PIN > -1
|
420
|
|
- #if EXTRUDER_1_AUTO_FAN_PIN > -1
|
|
420
|
+ #endif //EXTRUDER_0_AUTO_FAN_PIN > -1
|
|
421
|
+ #if EXTRUDER_1_AUTO_FAN_PIN > -1 && EXTRUDER_1_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN
|
421
|
422
|
// check the extruder 1 setting (except when extruder 1 is the same as 0)
|
422
|
|
- newFanState = (EXTRUDER_1_AUTO_FAN_PIN > -1 && EXTRUDER_1_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN &&
|
423
|
|
- (current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE ||
|
424
|
|
- (EXTRUDER_1_AUTO_FAN_PIN == EXTRUDER_2_AUTO_FAN_PIN && current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE)));
|
|
423
|
+ newFanState = (current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE ||
|
|
424
|
+ (EXTRUDER_1_AUTO_FAN_PIN == EXTRUDER_2_AUTO_FAN_PIN && current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE));
|
425
|
425
|
if ((extruderAutoFanState & 2) != (newFanState<<1)) // use second bit
|
426
|
426
|
{
|
427
|
427
|
int newFanSpeed = (newFanState ? EXTRUDER_AUTO_FAN_SPEED : 0);
|
|
@@ -432,12 +432,10 @@ void manage_heater()
|
432
|
432
|
analogWrite(EXTRUDER_1_AUTO_FAN_PIN, newFanSpeed);
|
433
|
433
|
extruderAutoFanState = (newFanState<<1) | (extruderAutoFanState & ~2);
|
434
|
434
|
}
|
435
|
|
- #endif //EXTRUDER_1_AUTO_FAN_PIN > -1
|
436
|
|
- #if EXTRUDER_2_AUTO_FAN_PIN > -1
|
|
435
|
+ #endif //EXTRUDER_1_AUTO_FAN_PIN > -1
|
|
436
|
+ #if EXTRUDER_2_AUTO_FAN_PIN > -1 && EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN && EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN
|
437
|
437
|
// check the extruder 2 setting (except when extruder 2 is the same as 1 or 0)
|
438
|
|
- newFanState = (EXTRUDER_2_AUTO_FAN_PIN > -1 &&
|
439
|
|
- EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN && EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN &&
|
440
|
|
- current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE);
|
|
438
|
+ newFanState = (current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE);
|
441
|
439
|
if ((extruderAutoFanState & 4) != (newFanState<<2)) // use third bit
|
442
|
440
|
{
|
443
|
441
|
int newFanSpeed = (newFanState ? EXTRUDER_AUTO_FAN_SPEED : 0);
|
|
@@ -448,7 +446,8 @@ void manage_heater()
|
448
|
446
|
analogWrite(EXTRUDER_2_AUTO_FAN_PIN, newFanSpeed);
|
449
|
447
|
extruderAutoFanState = (newFanState<<2) | (extruderAutoFanState & ~4);
|
450
|
448
|
}
|
451
|
|
- #endif //EXTRUDER_2_AUTO_FAN_PIN > -1
|
|
449
|
+ #endif //EXTRUDER_2_AUTO_FAN_PIN > -1
|
|
450
|
+ #endif // any AUTO_FAN_PIN enabled
|
452
|
451
|
|
453
|
452
|
#ifndef PIDTEMPBED
|
454
|
453
|
if(millis() - previous_millis_bed_heater < BED_CHECK_INTERVAL)
|