diff --git a/static/head.min.js b/static/js/head.min.js
similarity index 100%
rename from static/head.min.js
rename to static/js/head.min.js
diff --git a/static/jquery.ba-throttle-debounce.js b/static/js/jquery.ba-throttle-debounce.js
similarity index 100%
rename from static/jquery.ba-throttle-debounce.js
rename to static/js/jquery.ba-throttle-debounce.js
diff --git a/static/sheetrock.min.js b/static/js/sheetrock.min.js
similarity index 100%
rename from static/sheetrock.min.js
rename to static/js/sheetrock.min.js
diff --git a/static/main.js b/static/main.js
index 71864c0919..d0c526e407 100644
--- a/static/main.js
+++ b/static/main.js
@@ -382,9 +382,6 @@ $(function(){
d.find('.col-sm-6').attr('title',title)//.tooltip(tooltip_large);
}
var b=d.find('button');
- if ( /_adv$/.test( file.file.name ) )
- b.remove();
- else
if ( def.hint == undefined )
b.remove();
else
@@ -479,21 +476,20 @@ $(function(){
}
})
});
- (function(){
- var m=$('#mct-tags-modal');
- var t=m.find('table tbody');
- m.find('button.btn-primary').on('click',function(ev){
+ (function(btn,ui){
+ var t=ui.find('table tbody');
+ ui.find('button.btn-primary').on('click',function(ev){
var row = t.find('.table-success');
if(row.length){
var tag=row.find('td').eq(1).text().split(',');
- cmdReload($.ajax('/checkout/'+tag[0]),m);
+ cmdReload($.ajax('/checkout/'+tag[0]),ui);
}
});
- m.find('table tbody').on('click',function(ev){
+ ui.find('table tbody').on('click',function(ev){
$(this).find('tr').removeClass('table-success');
$(ev.target).parents('tr').addClass('table-success')
});
- $('.mct-change').on('click',function(){
+ btn.on('click',function(){
$.ajax('/tags')
.fail(ajaxAlert)
.then(function(data){
@@ -502,10 +498,38 @@ $(function(){
data.map(function(row){
t.append($('
').append($('').text(row.date)).append($(' | ').text(row.tag)))
})
- m.modal();
+ ui.modal();
})
})
- }());
+ }($('.mct-change'),$('#mct-tags-modal')));
+ (function(btn,ui){
+ var t=ui.find('table tbody');
+ var hdr=ui.find('.modal-body>p span');
+ ui.find('button.btn-primary').on('click',function(ev){
+ var row = t.find('.table-success');
+ if(row.length){
+ var path=btoa(row.find('td').text());
+ cmdReload($.ajax('/set-base/'+path),ui);
+ }
+ });
+ ui.find('table tbody').on('click',function(ev){
+ $(this).find('tr').removeClass('table-success');
+ $(ev.target).parents('tr').addClass('table-success')
+ });
+ btn.on('click',function(){
+ $.ajax('/examples')
+ .fail(ajaxAlert)
+ .then(function(data){
+ t.empty();
+ hdr.text(data.current)
+ config.base=data.current;
+ data.list.map(function(row){
+ t.append($(' |
').append($('').text(row)))
+ })
+ ui.modal();
+ })
+ })
+ }($('.mct-examples'),$('#mct-examples-modal')));
(function(btn,ui){
var p=ui.find('p');
btn.on('click',function(){
@@ -532,40 +556,7 @@ $(function(){
})
}($('.mct-update')));
$('.mct-consoles').on('click',function(){ window.open('consoles.html','_blank') });
- (function(){ //REMOVE
- var r=$('#mct-console-modal');
- var p=r.find('textarea');
- var b=r.find('.modal-body button');
- var s=r.find('.modal-body input[type=text]');
- var c=r.find('.modal-body input[type=checkbox]');
- $('.mct-console').on('click',function(){
- $.ajax('/port/ttyUSB0/115200').then(function(url){
-// p.empty();
- var socket = io.connect({path:url});
- socket.on('connect', function(data) {
- //socket.emit('message', 'Hello World from client');
- });
- socket.on('message',function(msg){
- p.append(msg)
- })
- socket.on('disconnect',function(msg){
- p.append('\n[closed]')
- socket.close();
- })
- b.unbind('click').on('click',function(){
- socket.emit('message',s.val()+(c.prop('checked')?'\r\n':''));
- })
- r.modal();
- r.unbind('hidden.bs.modal').on('hidden.bs.modal', function (e) {
- socket.close();
- })
- })
- })
- r.find('button.btn-primary').on('click',function(ev){
- cmdReload($.ajax('/checkout-force'),r);
- })
- }());
-(function(){
+ (function(){
var ports=$('.mct-ports')
var title=ports.find('a.btn')
ports.find('.dropdown-menu').on('click',function(ev){
@@ -605,8 +596,13 @@ $(function(){
var port= JSON.parse(event.data);
removePort(port);
});
-}());
-
+ }());
+ (function(btn){
+ btn.on('click',function(){
+ _add($('template._info'))
+ .find('p').html(`Current directory is: ${config.root} Current base files choosen from: ${config.base}`)
+ })
+ }($('.mct-info')));
(function(){
var r=$('#mct-pio-modal');
var p=r.find('.form-group pre');
diff --git a/static/ui.js b/static/ui.js
index 55e47e09fb..ff3ee27b8d 100644
--- a/static/ui.js
+++ b/static/ui.js
@@ -13,13 +13,13 @@ function createUI(ui,cb){
var El=document.createElement('DIV')
El.innerHTML='[^]';
El.addEventListener( 'click', toggleSize, false );
- Object.assign(El.style,{position:"absolute", cursor:"pointer", right:"20px", top:"10px", background:"white"})
+ Object.assign(El.style,{position:"absolute", cursor:"pointer", right:"20px", top:"0px", background:"white"})
domElement.appendChild(El);
var El=document.createElement('DIV')
El.innerHTML='[X]';
El.addEventListener( 'click', function() { domElement.dispatchEvent( new Event('destroy') ); }, false );
- Object.assign(El.style,{position:"absolute", cursor:"pointer", right:"0px", top:"10px", background:"white"})
+ Object.assign(El.style,{position:"absolute", cursor:"pointer", right:"0px", top:"0px", background:"white"})
domElement.appendChild(El);
// Object.assign(domElement.style,{position:"relative", cursor:"default", width:"300px", height:"250px", margin:"auto"})
@@ -32,14 +32,6 @@ function createUI(ui,cb){
ui.className+=" maximized"
else
ui.className=ui.className.split(' ').filter(function(name){ return name!='maximized'; }).join(' ')
-if(0)
- if (domElement.style.width!="300px"){
- domElement.style.width="300px";
- domElement.style.height="250px";
- }else{
- domElement.style.width="100%";
- domElement.style.height="100%";
- }
window.dispatchEvent(new Event('resize'));
}
var defaults={
diff --git a/views/configuration.md b/views/configuration.md
index 81d316af13..58f5aeed75 100644
--- a/views/configuration.md
+++ b/views/configuration.md
@@ -347,7 +347,7 @@ See the [PID Tuning](http://reprap.org/wiki/PID_Tuning) topic on the RepRap wiki
#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
```
-Disable `PIDTEMP` if you want to run your heater in bang-bang mode. Bang_bang is a pure binary mode where the heater is either full on or full off. PID control is PWM and in most cases is superior in it's ability to maintain a stable temperature.
+Disable `PIDTEMP` to run extruders in bang-bang mode. Bang-bang is a pure binary mode - the heater is either fully-on or fully-off for a long period. PID control uses higher frequency PWM and (in most cases) is superior for maintaining a stable temperature.
```cpp
#if ENABLED(PIDTEMP)
@@ -695,19 +695,14 @@ Both acceleration and jerk affect your print quality. If jerk is too low, the ex
```cpp
//#define Z_MIN_PROBE_ENDSTOP
```
-If you want to use both probe and end-switch for homing and endstop, enable this. However, This requires extra setups to be done. If you're using Ramps 1.4, the probe pins are located in D32 of the aux4 array that is also used by the lcd panel. You will have to change the pin assignments from your specified board pin file (for example "pins_RAMPS_14.h") located at `#define Z_MIN_PROBE_PIN 32`. I would change this to pin 19 (z max) since it is rarely if ever used. This extra port is actually the Z Probe that is used for your auto bed leveling.
-
-Another way is to change between these pins: `#define Z_MIN_PROBE_PIN 32`, `#define Z_MIN_PIN 18`, and `#define Z_MAX_PIN 19` according to your board. This is not for beginners.
+Use this option if you've connected the probe to a pin other than the Z MIN endstop pin. With this option enabled, by default Marlin will assume the probe is connected to the Z MAX endstop pin (since this is the most likely to be unused). If you need to use a different pin, you can set a custom pin number for `Z_MIN_PROBE_PIN` in `Configuration.h`.
```cpp
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
```
-This uses the same pin for the end-switch and the probe. The advantage is that you don't need to alter any pin-out assignments, however you can only have ONE active at a time.
+Use this option in all cases when the probe is connected to the Z MIN endstop plug. This option is used for `DELTA` robots, which always home to MAX, and may be used in other setups.
-```cpp
-//#define DISABLE_Z_MIN_PROBE_ENDSTOP
-```
-This typically disables your probe feature. Only applicable to `//#define Z_MIN_PROBE_ENDSTOP` enabled
+You can use this option to configure a machine with no Z endstops. In that case the probe will be used to home Z and you will need to enable `Z_SAFE_HOMING` to ensure that the probe is positioned over the bed when homing the Z axis - done after X and Y.
### Probe Type
@@ -1171,7 +1166,7 @@ Setting these values too high may result in reduced accuracy and/or skipped step
### EEPROM
```cpp
-#define EEPROM_SETTINGS
+//#define EEPROM_SETTINGS
```
Commands like `M92` only change the settings in volatile memory, and these settings are lost when the machine is powered off. With this option enabled, Marlin uses the built-in EEPROM to preserve settings across reboots. Settings saved to EEPROM (with `M500`) are loaded automatically whenever the machine restarts (and in most setups, when connecting to a host), overriding the defaults set in the configuration files. This option is highly recommended, as it makes configurations easier to manage.
@@ -1431,6 +1426,7 @@ Option|Description
`REPRAP_DISCOUNT_SMART_CONTROLLER`|[RepRapDiscount Smart Controller](http://reprap.org/wiki/RepRapDiscount_Smart_Controller). Usually sold with a white PCB.
`G3D_PANEL`|[Gadgets3D G3D LCD/SD Controller](http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel). Usually sold with a blue PCB.
`RIGIDBOT_PANEL`|[RigidBot Panel V1.0](http://www.inventapart.com/).
+`ANET_KEYPAD_LCD`|[Anet Keypad LCD](http://www.anet3d.com/English/3D_Printer/107.html) for the Anet A3
### Graphical LCDs
@@ -1445,6 +1441,7 @@ Option|Description
`REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER`|[RepRapDiscount Full Graphic Smart Controller](http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller).
`MINIPANEL`|[MakerLab Mini Panel](http://reprap.org/wiki/Mini_panel) with graphic controller and SD support.
`BQ_LCD_SMART_CONTROLLER`|BQ LCD Smart Controller shipped with the BQ Hephestos 2 and Witbox 2.
+`ANET_FULL_GRAPHICS_LCD`|[Anet Full Graphics LCD](http://www.anet3d.com/English/3D_Printer/107.html) for the Anet A3
### Keypads
@@ -1473,6 +1470,7 @@ Option|Description
------|-----------
`U8GLIB_SSD1306`|SSD1306 OLED full graphics generic display.
`SAV_3DGLCD`|SAV OLED LCD module support using either SSD1306 or SH1106 based LCD modules.
+`OLED_PANEL_TINYBOY2`|TinyBoy2 128x64 OLED / Encoder Panel
## Extras 2
@@ -1494,6 +1492,10 @@ Use software PWM to drive the fan, as with the heaters. This uses a very low fre
```
Incrementing this by 1 will double the software PWM frequency, affecting heaters (and the fan if `FAN_SOFT_PWM` is enabled). However, control resolution will be halved for each increment; at zero value, there are 128 effective control positions.
+```cpp
+//#define SOFT_PWM_DITHER
+```
+If `SOFT_PWM_SCALE` is set to a value higher than 0, dithering can be used to mitigate the associated resolution loss. If enabled, some of the PWM cycles are stretched so on average the desired duty cycle is attained.
### Temperature Status LEDs
@@ -1532,7 +1534,7 @@ Marlin includes support for the [Baricuda Extruder for 3D Printing Sugar and Cho
[![LED Lights](/assets/images/config/led-lights.jpg){: .floater.framed}](http://www.instructables.com/id/3D-Printer-RGB-LED-Feedback/){:target="_blank"}
-### Indicator LEDs
+### RGB Color LEDs
Marlin currently supplies two options for RGB-addressable color indicators. In both cases the color is set using `M150 Rr Ug Bb` to specify RGB components from 0 to 255.
@@ -1540,19 +1542,44 @@ Marlin currently supplies two options for RGB-addressable color indicators. In b
//define BlinkM/CyzRgb Support
//#define BLINKM
```
-The BLINKM board supplies the backlighting for some LCD controllers. Its color is set using I2C messages.
+The [BLINKM board](https://thingm.com/products/blinkm/) supplies the backlighting for some LCD controllers. Its color is set using I2C messages.
+
+```cpp
+//define PCA9632 PWM LED driver Support
+//#define PCA9632
+```
+The [Philips PCA9632](https://www.digchip.com/datasheets/3286493-pca9632.html) is a common PWM LED driver, controlled (like BlinkM) using I2C.
```cpp
-// Support for an RGB LED using 3 separate pins with optional PWM
//#define RGB_LED
-#if ENABLED(RGB_LED)
+//#define RGBW_LED
+#if ENABLED(RGB_LED) || ENABLED(RGBW_LED)
#define RGB_LED_R_PIN 34
#define RGB_LED_G_PIN 43
#define RGB_LED_B_PIN 35
+ #define RGB_LED_W_PIN -1
#endif
```
-An inexpensive RGB LED can be used simply by assigning digital pins for each component. If the pins are able to do hardware PWM then a wide range of colors will be available. With simple digital pins only 7 colors are possible.
+Enable support for an RGB(W) LED connected to 5V digital pins, or an RGB(W) Strip connected to MOSFETs controlled by digital pins. An inexpensive RGB LED can be used simply by assigning digital pins for each component. If the pins are able to do hardware PWM then a wide range of colors will be available. With simple digital pins only 7 colors are possible.
+Adds the `M150` command to set the LED (or LED strip) color. If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of luminance values can be set from 0 to 255.
+
+{% alert warning %}
+LED Strips require a MOFSET Chip between PWM lines and LEDs, as the Arduino cannot handle the current the LEDs will require. Failure to follow this precaution can destroy your Arduino!
+{% endalert %}
+
+#### Printer Event LEDs
+```cpp
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
+ #define PRINTER_EVENT_LEDS
+#endif
+```
+This option causes the printer to give status feedback on the installed color LED, BLINKM, or PCA9632:
+- Gradually change from blue to violet as the heated bed gets to target temp.
+- Gradually change from violet to red as the hotend gets to temperature.
+- Change to white to illuminate work surface.
+- Change to green once print has finished.
+- Turn off after the print has finished and the user has pushed a button.
### Servos
@@ -1617,3 +1644,108 @@ This defines the size of the buffer to allocate for use with `MEASUREMENT_DELAY_
#define FILAMENT_LCD_DISPLAY
```
Periodically display a message on the LCD showing the measured filament diameter.
+
+
+# `Configuration_adv.h`
+
+## Temperature Options
+
+### Bang-Bang Bed Heating
+```cpp
+#if DISABLED(PIDTEMPBED)
+ #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control
+ #if ENABLED(BED_LIMIT_SWITCHING)
+ #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS
+ #endif
+#endif
+```
+These sub-options can be used when the bed isn't using PID heating. A "bang-bang" heating method will be used instead, simply checking against current temperature at regular intervals.
+
+### Thermal Protection Settings
+#### Hotend Thermal Protection
+```cpp
+#if ENABLED(THERMAL_PROTECTION_HOTENDS)
+ #define THERMAL_PROTECTION_PERIOD 40 // Seconds
+ #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius
+ #define WATCH_TEMP_PERIOD 20 // Seconds
+ #define WATCH_TEMP_INCREASE 2 // Degrees Celsius
+#endif
+```
+Hot end thermal protection can be tuned with these sub-options.
+
+The first two options deal with continuous thermal protection during an entire print job.
+
+The second set of options applies to changes in target temperature. Whenever an `M104` or `M109` increases the target temperature the firmware will wait for the `WATCH_TEMP_PERIOD` to expire, and if the temperature hasn't increased by `WATCH_TEMP_INCREASE` degrees, the machine is halted, requiring a hard reset. This test restarts with any `M104`/`M109`, but only if the current temperature is far enough below the target for a reliable test.
+
+If you get false positives for "Heating failed" increase `WATCH_TEMP_PERIOD` and/or decrease `WATCH_TEMP_INCREASE`. (`WATCH_TEMP_INCREASE` should not be set below 2.)
+
+#### Bed Thermal Protection
+```cpp
+#if ENABLED(THERMAL_PROTECTION_BED)
+ #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds
+ #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
+ #define WATCH_BED_TEMP_PERIOD 60 // Seconds
+ #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius
+#endif
+```
+Heated bed thermal protection can be tuned with these sub-options.
+
+The first two options deal with continuous thermal protection during an entire print job.
+
+The second set of options applies to changes in target temperature. Whenever an `M140` or `M190` increases the target temperature the firmware will wait for the `WATCH_BED_TEMP_PERIOD` to expire, and if the temperature hasn't increased by `WATCH_BED_TEMP_INCREASE` degrees, the machine is halted, requiring a hard reset. This test restarts with any `M140`/`M190`, but only if the current temperature is far enough below the target for a reliable test.
+
+If you get too many "Heating failed" errors, increase `WATCH_BED_TEMP_PERIOD` and/or decrease `WATCH_BED_TEMP_INCREASE`. (`WATCH_BED_TEMP_INCREASE` should not be set below 2.)
+
+### PID Extrusion Scaling
+```cpp
+#if ENABLED(PIDTEMP)
+ // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
+ // if Kc is chosen well, the additional required power due to increased melting should be compensated.
+ //#define PID_EXTRUSION_SCALING
+ #if ENABLED(PID_EXTRUSION_SCALING)
+ #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
+ #define LPQ_MAX_LEN 50
+ #endif
+#endif
+```
+This option further improves hotend temperature control by accounting for the extra heat energy consumed by cold filament entering the hotend melt chamber. If material enters the hotend more quickly, then more heat will need to be added to maintain energy balance. This option adds a scaling factor that must be tuned for your setup and material.
+
+Extrusion scaling keeps a circular buffer of forward E movements done at each temperature measurement which acts to delay the applied factor and allow for heat dissipation. The size of this queue during printing is set by `M301 L`, limited by `LPQ_MAX_LEN`.
+
+{% alert info %}
+Your `M301 C` `M301 L` values are saved to EEPROM when `EEPROM_SETTINGS` is enabled.
+{% endalert %}
+
+### Automatic Temperature
+```cpp
+#define AUTOTEMP
+#if ENABLED(AUTOTEMP)
+ #define AUTOTEMP_OLDWEIGHT 0.98
+#endif
+```
+With Automatic Temperature the hotend target temperature is calculated by all the buffered lines of gcode. The maximum buffered steps/sec of the extruder motor is called "`se`".
+Start autotemp mode with `M109 F S B`, giving a range of temperatures. The target temperature is set to `mintemp + factor * se[steps/sec]` and is limited by
+`mintemp` and `maxtemp`. Turn this off by executing `M109` without `F`. If the temperature is set to a value below `mintemp` (e.g., by `M104`) autotemp will not be applied.
+
+Example: Try `M109 S215 B260 F1` in your `start.gcode` to set a minimum temperature of 215 when idle, which will boost up to 260 as extrusion increases in speed.
+
+### Temperature Report ADC
+```cpp
+//#define SHOW_TEMP_ADC_VALUES
+```
+Enable this option to have `M105` and automatic temperature reports include raw ADC values from the temperature sensors.
+
+### High Temperature Thermistors
+```cpp
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
+```
+High temperature thermistors may give aberrant readings. If this is an issue, use this option to set the maximum number of consecutive low temperature errors that can occur before Min Temp Error is triggered. If you require a value over 10, this could indicate a problem.
+```cpp
+//#define MILLISECONDS_PREHEAT_TIME 0
+```
+High Temperature Thermistors tend to give poor readings at ambient and lower temperatures. Until they reach a sufficient temperature, these sensors usually return the lowest raw value, and this will cause a Min Temp Error.
+
+To solve this issue, this option sets the number of milliseconds a hotend will preheat before Marlin starts to check the temperature. Set a delay sufficient to reach a temperature your sensor can reliably read. Lower values are better and safer. If you require a value over 30000, this could indicate a problem.
+
+
+## To Be Continued...
diff --git a/views/gcode/G002-G003.md b/views/gcode/G002-G003.md
index 029bcc43c2..7a77a72794 100644
--- a/views/gcode/G002-G003.md
+++ b/views/gcode/G002-G003.md
@@ -12,8 +12,26 @@ codes:
- G2
- G3
-long:
- - G2 adds a clockwise arc move to the planner; G3 adds a counter-clockwise arc. An arc move starts at the current position and ends at the given XYZ, pivoting around a center-point offset given by I and J. Arc moves actually generate several short straight-line moves, the length of which are determined by the configuration option `MM_PER_ARC_SEGMENT` (default 1mm). Any change in the Z position is linearly interpolated over the whole arc.
+long: |
+ `G2` adds a clockwise arc move to the planner; `G3` adds a counter-clockwise arc. An arc move starts at the current position and ends at the given XYZ, pivoting around a center-point offset given by `I` and `J` or `R`.
+
+ This command has two forms:
+ #### I J Form
+
+ - `I` specifies an X offset. `J` specifies a Y offset.
+ - At least one of the `I` `J` parameters is required.
+ - `X` and `Y` can be omitted to do a complete circle.
+ - The given `X` `Y` is not error-checked.
+ The arc ends based on the angle of the destination.
+ - Mixing `I` or `J` with `R` will throw an error.
+
+ #### R Form
+ - `R` specifies the radius. `X` or `Y` is required.
+ - Omitting both `X` and `Y` will throw an error.
+ - `X` or `Y` must differ from the current XY position.
+ - Mixing `R` with `I` or `J` will throw an error.
+
+ Arc moves actually generate several short straight-line moves, the length of which are determined by the configuration option `MM_PER_ARC_SEGMENT` (default 1mm). Any change in the Z position is linearly interpolated over the whole arc.
parameters:
-
diff --git a/views/gcode/G005.md b/views/gcode/G005.md
index 0e418bef82..802a23d67a 100644
--- a/views/gcode/G005.md
+++ b/views/gcode/G005.md
@@ -2,6 +2,7 @@
tag: g05
title: Bézier cubic spline
brief: Cubic B-spline with XYZE destination and IJPQ offsets
+author: thinkyhead
experimental: true
since: 1.1.0
@@ -10,11 +11,11 @@ group: planner
codes:
- G5
-long:
- - G5 creates a cubic B-spline in the XY plane with the X and Y axes only. P and Q must both be specified for every G5 command. For the first G5 command in a series of G5 commands, I and J must both be specified. For subsequent G5 commands, either both I and J must be specified, or neither. If I and J are unspecified, the starting direction of this cubic will automatically match the ending direction of the previous cubic (as if I and J are the negation of the previous P and Q).
+long: |
+ `G5` creates a cubic B-spline in the XY plane with the X and Y axes only. `P` and `Q` parameters are required. `I` and `J` are required for the first `G5` command in a series. For subsequent `G5` commands, either both `I` and `J` must be specified, or neither. If `I` and `J` are unspecified, the starting direction of the cubic will automatically match the ending direction of the previous cubic (as if `I` and `J` are the negation of the previous `P` and `Q`).
notes:
- - It is an error if an axis other than X or Y is specified.
+ - It is an error if an axis other than `X` or `Y` is specified.
parameters:
-
@@ -52,7 +53,7 @@ parameters:
-
tag: P
optional: false
- description: X incremental offset from start point to first control point
+ description: X incremental offset from end point to second control point
values:
-
tag: pos
@@ -60,7 +61,7 @@ parameters:
-
tag: Q
optional: false
- description: Y incremental offset from start point to first control point
+ description: Y incremental offset from end point to second control point
values:
-
tag: pos
@@ -69,14 +70,14 @@ parameters:
examples:
-
pre:
- - 'For example, to program a curvy N shape:'
+ - 'For example, to program a curvy "N" shape:'
code:
- G0 X0 Y0
- G5 I0 J3 P0 Q-3 X1 Y1
-
pre:
- - 'A second curvy N that attaches smoothly to this one can now be made without specifying I and J:'
+ - 'A second curvy "N" that attaches smoothly to this one can now be made without specifying `I` and `J`:'
code:
- G5 P0 Q-3 X2 Y2
---
diff --git a/views/gcode/M080.md b/views/gcode/M080.md
index f0c44f345a..92fcdde59b 100644
--- a/views/gcode/M080.md
+++ b/views/gcode/M080.md
@@ -18,6 +18,11 @@ notes:
- Requires `POWER_SUPPLY` and a digital pin connected to the PSU's enable pin.
parameters:
+ -
+ tag: S
+ optional: true
+ description: 'Report Power Supply state'
+ values:
examples:
diff --git a/views/gcode/M218.md b/views/gcode/M218.md
index e65ded3955..42caa19e63 100644
--- a/views/gcode/M218.md
+++ b/views/gcode/M218.md
@@ -17,7 +17,7 @@ long:
notes: |
- Requires 2 or more nozzles.
- The default hotend offsets are set with `HOTEND_OFFSET_[XYZ]`.
- - Z hotend offset only available with `DUAL_X_CARRIAGE` or `SWITCHING_EXTRUDER`.
+ - Z hotend offset only available with `DUAL_X_CARRIAGE` or `SWITCHING_NOZZLE`.
- View current hotend offsets with `M503`.
- If `EEPROM_SETTINGS` is enabled, these offsets are saved with `M500`, loaded with `M501`, and reset with `M502`.
@@ -49,7 +49,7 @@ parameters:
-
tag: Z
optional: true
- description: Hotend Z offset. Requires `DUAL_X_CARRIAGE` or `SWITCHING_EXTRUDER`.
+ description: Hotend Z offset. Requires `DUAL_X_CARRIAGE` or `SWITCHING_NOZZLE`.
values:
-
tag: offset
|