Knowing a few lines of gcode is super helpful to make the machine do non-printer things too... for example, I needed to clean some small parts so I put them in a small container of cleaning solution on the printer's bed, then wrote a bit of code to heat up the bed and shake it around for a couple hours. Instant agitating hot plate. I also have my printer play a distinctive tone just after it completes waiting for heater temperatures, so I'm warned before it starts moving (I have a bad habit of sticking my fingers in there).
Same, I set a beep after the bed leveling (I do a 4x4 grid) is done, so I can clean up the filament purge if it wanders into the print area, and 3 beeps at the end to signal it's done.
I like your heat/agitation cleaning idea. Another one I thought of is to use the heated bed to precisely warm up a smartphone before attempting to remove the screen, which is glued in. I also used the heated bed to accurately determine the minimum temperature difference that would keep my Kontax low temperature Stirling engine running.
I do an M300 & M0 after heating but before homing. I have an annoying habit of leaving an empty plate of food, a tool or just junk on bed of my printers (all on Octoprint).
I used it to heat up chocolate to melt and then reduce to the exact temp needed for tempering. 3d print a mold, vacuum form the 3d print and then make chocolate bars, chocolate coins, or chocolate Grogu. LOL
In prusa slicer, I've set my color change gcode to let me insert nuts, magnets or anything else into a print with the G1 and M0 commands. This little bit of gcode will present the current print as if it were finished for 3 minutes before pulling it back in to complete it. It's very basic, but it works. G1 X0 Y220 ;Present print for objects to be inserted M0 S180 ;Resume print after 3 minutes
PrusaSlicer actually supports doing this -- pause at a specific layer, and wait until you press the button/knob before continuing. I've used it quite a few times to insert magnets or other "vitamins" into a print partway through.
G4 S180 do the trick also. G4 = Dwell, followed by P for miliseconds and S for seconds how long the machine should wait. The difference between M1 and M0 is that with M1 u can put a condition into the G code telling tha machine if it should care about the M1 or move on (Conditional stop) whilst with M0 the machine will always stop (unconditional stop) However from what I see this does not work on 3D printers, probably because M1 is mostly used with manual programming of CNC machines for test runs to avoid possible tool crashes on the first run and then when u seee the program runs properly u simply disable the condition and the machine will then ignore the M1 command and just continue. Like a debugging breakpoint in general programming. This is obviously not needed on 3D printers as there is no possibility for tool crashes like that and so only M0 is used here. M1 will maybee work as well (although it says deprecated on the Marlin page for M1) but u can I guess not put a stop condition in anywhere and so M1 and M0 will mean exactly the same to Marlin = unconditional stop.
So fun fact about the beeps. Its built into the firmware on the ender 3 that it just ignores the frequency. I compiled my own firmware from a community made one and it will totally change tones. I have it play the FFX fanfare at the end of prints.
Glad Microcenter is still sponsoring you - makes me even more likely to just head to the nearby one in Long Island instead of buying elsewhere online. Also, this video was fun and now I will definitely mess with PID!
IMPORTANT NOTE FOR ENDER 3! The ender 3 saves firmware changes to the SD card, which includes PID tuning values. If you have multiple sd cards you need to have these changes on all cards, so I just stick with 1 sd card. I had a hell of a time figuring out why my printer kept under extruding after repeatedly calibrating e-steps, and it was because I was swapping sd cards. Edit: this is for all I know only for the v2 and other models running the same board.
I have multiple sd-cards, but I use git to version control the contents, to keep them all in sync. My process is quite simple... When I switch to a different card, I pull the changes from it's remote before adding new designs. After a successful print, I pop the card back into my PC, commit the changes and push the changes back to my remote, so it's up to date for the next time I need to switch cards. Not only does this mean I have a record of all of my prints, it also means I have a record of how all of my settings are changing, over time.
@Dylan Lasky : I read this and thought "I've never had that problem... what's he talking about!" Then I realised that I have only ever used the same SD card for my file transfers! 🥴 I don't think a lot of people are aware of this... thanks for the "heads up".
I had the problem that the I only inserted the SD card that came with my printer into my printer twice (enough time to run the benchy) before it died, and I lost everything on it. As I hadn't even considered this as a risk, I hadn't backed up the card before doing anything with it. This made me rather more paranoid about my printer SD cards than I might otherwise be. *8')
Thank you, love your vids. I am a Machinist (30 years) and use g-code on a daily bases. It is great to understand a few of the basic codes to fine tune your printer. I used it to fine tune my filament change process. Thanks again.
Probably the best G-code overview I have ever seen. ( I used to use G-code quite a lot with CNC, but I haven't really had to mess with it for 3D printing that much. Thanks for a great video.
When you start to get into the M commands you should specify what Gcode dialect you are using. M302 will work with Marlin, but might mean something completely different on another firmware, or for a laser engraver, or a CNC mill.
Note that g code is not universal, the specifics of the M codes in particular will differ between firmware projects, but I assume these are for Marlin which is the most popular. I think most of these but not all work with my old Sailfish-based printer (when piped through gpx, which is kind of like an early thing like klipper)
My fav command is M810 to M819. the Macro slots. they let you combine common groups of commands in to one line. i do a lot of manual editting of my gcode out of the slicer. I just recently added M808 to my firmware, which is looping. since i dont have a CR-30 treadmill style printer, i use some ending gcode to slap the part off the bed with the X gantry and then restart the gcode. between M808 and M810 for my "reset extruder axis" and M811 for my "go in to rel positioning, move the z axis up one layer, and go back in to abs pos" i can print "forever" on my ender 3 pro. in conjunction with filament sensors it could run forever with minimal interaction. my next project is definitely going to be a filament splicer, so i can just load rolls of filament and print parts literally forever lol.
If you've got a printer that's pimped out with LED attached to the control board the G-Code for turning on/off or adjusting the color of the lights if they support it can be fun to play with. Flashing the lights a couple times after a print is done can draw attention if you don't want to use the beeper for that.
For sounds it depends on which buzzer is used. It can be active (making sound right after you connect power, no frequency control) or passive (you have to do some PWM to make it sound, therefore you can control frequency). Prusa uses passive one! So you can Google for some gcode melodies and put them in your end gcode. So printer can play an Imperial march if you want.
I found this G-code online but its really helpful for auto bed leveling ( I was having an issue where the nozzle would ooze during the probing and cause the prints to not lay down a consistent first layer) M140 S80.0 ; Set Heat Bed temperature M190 S80.0 ; Wait for Heat Bed temperature M104 S160; start warming extruder to 160 G28 ; Home all axes G29 ; Auto bed-level (BL-Touch) G92 E0 ; Reset Extruder M104 S245.0 ; Set Extruder temperature G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position M109 S245.0 ; Wait for Extruder temperature I print using PETG so 160c is warm enough to not ooze but also doesn't take too long to heat up the rest of the way. As long as you set up the Z offset with a fully heated nozzle, the probing can start as soon as the bed is up to temp. It also heats up the rest of the way in the starting position so as soon as it get there, it lays down the purge line (any oozing during the heat up wont cause any issues) Made my ender 3 into a start it and forget it type of machine!
Good introduction! In terms of Marlin development I always try to emphasize the philosophy of keeping the firmware "dumb" so it will be obedient to our commands and not try to do anything too creative. The real smarts are behind the scenes and deal with the things we don't want to worry about: decidng how best to carry out movement commands efficiently, following the contours of the mesh, keeping temperatures stabilized, and so on. Let the slicers and other G-code generators do the truly creative stuff.
You forgot one super useful command to know about: M0 - Unconditional stop It will pause execution of any further commands until input (encoder wheel or touchscreen) is pressed. it also has text display part like M117 so you can use it (especially with M300 beeper) to pause print when you need to insert some nuts or magnets that are meant to be fully encased
If you ever get a move out of range error when using Klipper it's normally because of absolute/realtive mode is wrong for X/Y/Z (G90 vs G91) or the extruder (M82 vs M83). It's a very common error people run into when writing macros for Klipper. To confuse matters even more some slicers let you set if gcode is generated in relative or absolute mode as well. Best way is to check what the current mode is, for example the variable printer.gcode_move.absolute_coordinates will be true if in absolute mode for X/Y/Z moves.
I've got two custom gcodes loaded into start G-code in prusa for my Ender 3 S1 (just below G28). G28 ; home all axis M420 S1 ; ensures the 16 point mesh from the probe is actually used for the print M413 S0 ; prevent writing to the sd card after each layer which can potentially make blobs on your print
I've been using repetier host since 2013 and its amazing how well the program has worked even with all the innovations in the 3D printing space. Usually I use it for troubleshooting any sort of kinematic issues or bed level issues.
About a month ago I started training on a new machine at work. It is a 30 ton CNC press and we fabricate high precision Sheet Metal, assemblies and products and I was pleasantly surprised when I saw the computer programming and it was the same exact thing I run my hundred dollar 3-D printer with.
M300 & M117 are super handy for debugging, and having the machine communicate what is up. I have several machines in the next room over from my work area. Each has different tune it plays at the end of a print to let me know which machine just finished. M600 for manual color changes is super handy for basic color swaps on just a couple layers. Sadly and frustratingly Bambu machines have no serial interface and no support for M300, M117, or M600.
I think you have missed the pause/unpause commands M600/M601. Useful for inserting stuf in 3D prints or for manually changing filament. One problem with this command (at least on smooothie) is that it turns off heating, which is especially bad for bed heating mid print.
:) All great info - think I'll start sharing this video with people as a great lead in to what else your 3dprinter can be programed to possibly do without much efforts! Keep up the awesome content!
Thanks. This will be really helpful as I work on making filament changes more automatic. If there is no filament in the printer, there is no reason to wait for the hot end to heat up before loading filament.
M300 and M117 could be used for diagnostics, in conjunction with the registers (i.e. Out of Work Area error could list what position it is trying to reach using an M117 code and then use an M300 code a couple times) One set of absent codes is the G2 and G3 commands, which does Circular Interpolated movements. G2 is Clockwise, G3 is Counterclockwise.
G2/G3 reduce the size of the G-code and the stutters incredibly. Arc Welder for Cura is highly recommended in my opinion to make use of this, sadly not all printers support it. I find it quite dumb honestly, very few cases are so starving of storage that you should disable it. Another one that takes some effort to use effectively but is pretty incredible is M486 - cancel objects. With the appropriate post-processing script on Marlin, you can separate a multiple object print into individual parts entirely, and cancel each one individually if you see need. The only time it doesn't work is with supports. If the support starts to fail on one part, you'll have to live with it and cancel everything or let it be, as Cura adds the Z change line right at the start of a support structure code if it has that.
Also G2 is important, that's an arc move. This can help reduce stuttering especially for 8-bit motherboards, since it doesn't have to do many tiny G1 moves. The Arc Welder extension for Cura will do this automatically if you install it through the software marketplace and enable it in Special Modes. It'll also make smoother curves in your prints and reduce gcode file size.
The only G-code command that caught my attention over the years is M600, filament change, for simple but very effective multi-filament/colour prints. I discovered that PETG & TPU can stick together in these multi-filament prints, but still haven't yet figured out any designs which could benefit from being part TPU & part PETG.
@@timothymack7435 Yes that's a good one, like feet for a printer you could have the first layers in PETG with holes for screw mounts, with the rest in TPU for the actual feet part for dampening.
Angus... a little "Whoopsy" I think. At 7:25 your mouth said "X 100" but your hand said "Z 100". I think your hand got it right. 😉 Another great video, thanks. Thinking back to the 1980's (That's something I can do that you can't.) I used to get a real kick out of successfully making my BBC Micro perform something that I had coded directly in machine language, rather than BBC Basic. I have found that making something happen as I predicted, using G-Code, can give me similar "warm fuzzies". Keep them coming. 👍
To heat both extruder and bed at the same time, but not proceed until both are up to temperature, use all four temperature commands: M104 S200 ; start heating the extruder and continue M140 S60 ; start heating the bed and continue M109 S200 ; wait for the extruder to reach temp M190 S60 ; wait for the bed to reach temp Much more efficient than waiting for one to heat and then the other.
You could maybe calculate the time taken to heat each element, then do the following: M190 S55; calculated intermediate bed value M104 S200; start heading extruder and continue M190 S60; finish heating bed M140 S200; finish heating extruder
As long as your power supply has enough juice to do it and not trigger thermal runaway protection (which might trip if progress isn't being made fast enough), and if it won't trip a fuse or over current protection in your printer I have noticed that there are definitely better and worse patterns for heating up my old Replicator 2x: I think it heats one thing up part way, heats the other most of the way, then does "heat both the rest of the way"
@@WindyLion That's pretty much what I do, and it's easy to see whether you need to tweak the intermediate set point by looking at the temperature graphs (one of the reasons I love my Octoprint).
@@WindyLion I have my start GCode in Klipper and I'm calculating 90 % of the bed temp for 60 °C and 99.6 % for 100 °C (and linearly between those temperatures - it is good enough). Just after I reach this temp, I start heating nozzle and the rest of the bed temp. This way both heaters are finished almost at the same time.
M and G code is were I started in programing For FANUC CNC controllers 25 years ago, the thing that has got better is the GUI or interface software on computers to build the gcode file, Computer power and graphics cards have grown alot. Thanks for the video !
Thank you for this video. In the begining of 3D printing, it was almost required to know at least the basics of G Code. Brings back the memory... Or when the EEPROM wasn't implemented, and you had to tune your axises, and then reflash your board.
P stands for proportional, I for integrating and d for differential. In short the p part has a linear feedback with an amplification factor which can be 0 to very big numbers. The Integrating part provides a feedback equivalent to the surface between the signal and the x axis of the difference between the setpoint and actual value. The D part outputs a signal equivalent to the rate of change of its input. These three are put in series and if you tune them just right and provide them with the right feedback, they will regulate whatever you want.
G Code to pause prints, maybe move to somewhere convenience, turn off nozzle heat to allow you to extract filament, then when your ready come back to temperature, extrude until new filament loaded (suitable amount purged), then stop, go back to where it left off even if you nudged it a bit while you were messing about and resume printing. Was going to try and sort out some G-Code to include to do all this on my Qidi X-Plus that I would insert at a particular layer height but, it all seemed a bit much so I have never tried it.
Good info. I started with Repetier when I had my PrintrBot Simple 1405 print 7 years ago. FYI Simplify3D (even the 3yr old version 4.1.2), UltaMaker Cura, PronterFace, Prusa (I believe via Octoprint), Slic3r all support a serial connection and limited control (speed and E-flow). I have Prusa recommend not to print via serial with the chance an errant command being sent. I have printed via my Mac using serial (Simplify3D 4.1.2) almost exclusively for 7 years and had no issues (99.98% serial, 0.02% SD card).
Seeing microcenter sponsorships always reminds me how damn lucky I am to have two of them pretty close to me (I’m in nyc) I always recommend the inland filament both the PLA and PETG+ (the only ones I’ve used so far) have given me 0 issues and print amazingly
G code is something I look at everyday at work with my Mazak's, Chiron's, Okuma's, SNK's, etc. But, when I started 3D printing, some of these codes threw me off a little. It's been a great love hate relationship, but the same reason I love my job is the same reason I love printing. Keeps my brain busy and learning something new everyday. Thank you for your channel, and everything you offer the community.
I'd recommend turning the power on while connecting to your printer. My Ender 3 has custom firmware installed, so my problems might not happen on your 3d Ender 3, but when I give it USB power and later turn on the Printer, all axies move at twice the configured speed and violently jam into the frame/buildplate (I actually lost a nozzle to this) I just learned to always turn on the power before connecting my PC or Raspberry Pi
I recently compiled marlin for my ender 3 V2 with a bltouch and I discovered the "G35 tramming assistant" it helps you to level the bed probing on each corner
The joke at the beginning about ChatGPT is funny, but honestly it's not far from the realm of possibility. You can represent a 3d object as a sequence of geometric arguments (point clouds, or curves, etc). And GPT models (General Purpose Transformers) are really good at working with long sequences of values or tokens. So it's entirely possible for someone to train a vanilla GPT model on mesh data, and the corresponding slicer G Code. And what you'd end up with is something that could take an arbitrary mesh, and render a (hopefully) optimized sequence of G Code steps for any machine to use. In fact, I'd be _very_ surprised if the major printer manufacturers are thinking about this as they iterate on their slicer designs and optimizations.
4:15 You definitely want to prevent the USB from powering the printer. A tiny piece of electrical tape over the 5V line on the USB connector can block the power. Or you can cut a USB cable open and reconnect all of the wires except the 5V. If you have steady hands, another option is to desolder the 5V connection of the port on the printer's mainboard. It's a design flaw in some printer brands' USB implementation, which should be data only. There are multiple reasons why it's a bad idea -- you're basically giving 2 independent 5V power sources (which may even be at different grounds) to the printer's mainboard. Usually it'll be fine, but it could easily kill the printer mainboard (less likely, but it could even bite your PC's USB port or motherboard).
Most excellent video!! You have a great talent for clearly and succinctly covering a topic. Is there a printable list link you can share that shows each g-code and its function? Great topic universally useful! Thanks!!!
I did my Biqu B1 play the Super Mario tone when it finished a print with M300 very fun, while is useful because I can hear from the other room that my model is done.
I believe there is a command to power off machine. Useful at the end of a program with a long wait code for cooldown and then shut down if you won't be around when a print finishes
I watched another video that gave the advice to use your heated bed along with the box your filament came in as a dryer. They said cut the bottom side off the box, lay it over your filament to insulate it some, and heat the bed. So I want to write a simple GCode to set the bed temp, present the bed forward and raise the Z out of the way. Is there a way to do a timer where it'll sit for 4 hours and then go into cooldown on it's own? Maybe M85 but I can't find specifically what that command does for a shutdown sequence and don't know what the max value it'll accept is. I'm assuming too huge a number could crash it.
Cool video 😊 At my makerspace, the printers (Enders) are set via Gcode to play their namesakes after print completion, things like Goldeneye and Mr. Bluesky... it's really wacky.
My printers are in the other room so some M500s once warmup has completed and then some more once the first layer is done almost eliminates the hanging around checking.
Pretty sure you can actually drain the battery if your laptop while connected to a printer via usb cable. I was helping my friend set up his Ender 3 Pro, (context: his laptop battery size/capacity is at or just about at the legal limit for here in the USA, and it’s in pretty good health), and in just about two hours it nearly completely drained his battery from about 90% to about 10%. We had Cura open & connected to the printer and his laptop was plugged into the Ender 3 Pro for most of the time, plus the ender was plugged into the wall (the laptop was running off battery power).
I used to run my Prusa for few weeks during pandemic when LCD broke, I was able to print using the PC to manually control the machine etc. Then the bed heater broke :D but the printer was still going strong but only with PLA , those were the times when I sued that link a lot, I did lost few prints because windows updates restarting PC when I was not there..
The main thing I would like to know is how to change the delay on my auto level. My cr10s ver1 has a short delay between steps. Before I finish the paper clearance test it returns all the way back to the home screen. Having to turn the dial and navigate back to auto level just to move the nozzle to the next step is such a pain. Is there a way to change it to a 20 or 30 second delay?
I was just starting to look into the M300 command for a custom 'Print is done' tone, so I'm by no means an expert, but could it be the S parameter requires higher values to be able to be heard (and maybe internally it defaults to some value if the value supplied is lower than the frequency us humans can hear)? So instead of M300 S200 you would use M300 S2000 or something? (Haven't tried it myself yet)
The number after S is the frequency in Hertz. 440Hz is middle C. Human hearing is roughly in the range 20Hz to 20000Hz. The stock (modified Marlin) firmware on (some) Ender printers apparently overrides the frequency so all M300 sequences play at the same frequency. If you install the full-featured Marlin (eg compile your own) your Ender can play different frequencies.
I find for dealing with extruder heating, I will have the bed and extruder start heating without waiting as soon as the print code is initialized. I have the extruder temp set to 10 below the material melting point and then once its done all of it's homing and prep, it will then get a new command to continue heating to the proper temp and go on its merry way printing. This stops pre-print nozzle oozing.
Very valuable video here. I had the benefit of learning CNC prior to getting into 3D printing, so I had a foundational understanding of these concepts but the average person usually gets into this craft as a complete novice. I definitely learned a few things here and I still have loads to learn. Do you have any books that you might recommend to take a more in depth dive into the topic?
Do you have or know some GCode to make a Bed Leveling program? ie... auto home, move z axis up 10 mm, move to corner, pause, disable stepppers, wait until resume is pressed, enable steppers, move z axis up 10 mm, move to opposite corner, pause, disable steppers, wait until resume is pressed, enable steppers, move z axis up 10 mm, move to opposite corner ect... i know there is a step i am missing. i dont know how to auto home the z axis during this process that would not make the nozzle press into bed when it gets to the corners.
Great video! Was actually going through some gcode for my Sovol SV06. I really like the M300 command. Does anyone know if the M300 commands can be added to a Prusa Mini+? I have yet to try it but was curious since its mentioned Prusa uses this in their printers. Thanks!
Dunno about Angus, but there are people who do this. Print a "positive" in PLA, form a mold around it, then pour in the liquid metal. The PLA gets burned out, if you've done everything right. It's basically "lost wax" casting for 3D-printable materials.
For the waiting in some of my printer profile i had a G4 S450 :wait 7,5 minutes to help my bed to warp properly before some printing. i use it before G28
A cool thing to do is: put some electrical tape on the 5V on a usb cable (those to make your cable longer, dont know how they are called in english), then the mother board only gets on when the power supply is switched on o:
I'm a machinist and have been using g code for my entire life. Since getting into 3d printing, I've been wondering why printers don't utilize G2 and G3 arc commands. You could make a circle with one line of code instead of hundreds. My longest programs machining is about 200k of code. A simple 3d print of a toy was a few million. All because it only programs in linear commands. (A, J and, I command would be needed though). There are so many parameters that aren't being used. Anna what about, macros? Would a printer read it? Or the ability to pull up separate programs and run them within other programs. We should get together and blow the lid off printing. Right now it's so so basic.
I like using M104 and M140 at the start of gcode so that it can home while heating, and then using M109 and M190 with the same setpoints before the first use of the extruder (purge and swipe) in case it wasn't done yet. Currently, homing is all that happens between start heat and wait-for-heat, so there's usually still a wait, but it's at least less than only using wait-for-heat instructions.
When I first got my Ender-3 V2, I tried writing some G-code to help with bed levelling. It moved to the four corners of the bed and then to the centre but was intended to pause and wait for my Ok after each move, so I could adjust the dials. Sadly, this was when I found out that the stock Ender firmware did not support M25, It just carried on regardless, which is a real shame. Thinking of this makes me wonder how many 3d printers *do* support M25, as it seems like a really useful thing to have available.
Another great and informative video. About Micro Center, unfortunately the closest to me is 85 miles away or 136.7 kilometers. Might go there someday. Again thanks for the video!
I tried using the beep code on my Neptune 3 Pro right in Cura's gcode and it didn't work. I tested some different parameters of beeps and nothing. Does anyone know if it works through Cura's gcode?
My understanding of disconnecting power to the printer while plugged into the board through the usb is for safety. Saftey being to prevent the printer from doing anything unexpected like turning on the bed or hot end.
Knowing a few lines of gcode is super helpful to make the machine do non-printer things too... for example, I needed to clean some small parts so I put them in a small container of cleaning solution on the printer's bed, then wrote a bit of code to heat up the bed and shake it around for a couple hours. Instant agitating hot plate. I also have my printer play a distinctive tone just after it completes waiting for heater temperatures, so I'm warned before it starts moving (I have a bad habit of sticking my fingers in there).
Same, I set a beep after the bed leveling (I do a 4x4 grid) is done, so I can clean up the filament purge if it wanders into the print area, and 3 beeps at the end to signal it's done.
I like your heat/agitation cleaning idea. Another one I thought of is to use the heated bed to precisely warm up a smartphone before attempting to remove the screen, which is glued in. I also used the heated bed to accurately determine the minimum temperature difference that would keep my Kontax low temperature Stirling engine running.
I do an M300 & M0 after heating but before homing. I have an annoying habit of leaving an empty plate of food, a tool or just junk on bed of my printers (all on Octoprint).
I used it to heat up chocolate to melt and then reduce to the exact temp needed for tempering. 3d print a mold, vacuum form the 3d print and then make chocolate bars, chocolate coins, or chocolate Grogu. LOL
How do you loop the commands to move it back and forth?
In prusa slicer, I've set my color change gcode to let me insert nuts, magnets or anything else into a print with the G1 and M0 commands. This little bit of gcode will present the current print as if it were finished for 3 minutes before pulling it back in to complete it. It's very basic, but it works.
G1 X0 Y220 ;Present print for objects to be inserted
M0 S180 ;Resume print after 3 minutes
Never thought of pausing a print to embed something into a part, very cool idea lol
PrusaSlicer actually supports doing this -- pause at a specific layer, and wait until you press the button/knob before continuing. I've used it quite a few times to insert magnets or other "vitamins" into a print partway through.
G4 S180 do the trick also. G4 = Dwell, followed by P for miliseconds and S for seconds how long the machine should wait. The difference between M1 and M0 is that with M1 u can put a condition into the G code telling tha machine if it should care about the M1 or move on (Conditional stop) whilst with M0 the machine will always stop (unconditional stop) However from what I see this does not work on 3D printers, probably because M1 is mostly used with manual programming of CNC machines for test runs to avoid possible tool crashes on the first run and then when u seee the program runs properly u simply disable the condition and the machine will then ignore the M1 command and just continue. Like a debugging breakpoint in general programming. This is obviously not needed on 3D printers as there is no possibility for tool crashes like that and so only M0 is used here. M1 will maybee work as well (although it says deprecated on the Marlin page for M1) but u can I guess not put a stop condition in anywhere and so M1 and M0 will mean exactly the same to Marlin = unconditional stop.
So fun fact about the beeps. Its built into the firmware on the ender 3 that it just ignores the frequency. I compiled my own firmware from a community made one and it will totally change tones. I have it play the FFX fanfare at the end of prints.
Glad Microcenter is still sponsoring you - makes me even more likely to just head to the nearby one in Long Island instead of buying elsewhere online. Also, this video was fun and now I will definitely mess with PID!
IMPORTANT NOTE FOR ENDER 3! The ender 3 saves firmware changes to the SD card, which includes PID tuning values. If you have multiple sd cards you need to have these changes on all cards, so I just stick with 1 sd card. I had a hell of a time figuring out why my printer kept under extruding after repeatedly calibrating e-steps, and it was because I was swapping sd cards.
Edit: this is for all I know only for the v2 and other models running the same board.
I have multiple sd-cards, but I use git to version control the contents, to keep them all in sync. My process is quite simple...
When I switch to a different card, I pull the changes from it's remote before adding new designs.
After a successful print, I pop the card back into my PC, commit the changes and push the changes back to my remote, so it's up to date for the next time I need to switch cards.
Not only does this mean I have a record of all of my prints, it also means I have a record of how all of my settings are changing, over time.
@@markbooth3066 very interesting, if I ever need multiple sd cards I'll try this.
@Dylan Lasky : I read this and thought "I've never had that problem... what's he talking about!"
Then I realised that I have only ever used the same SD card for my file transfers! 🥴
I don't think a lot of people are aware of this... thanks for the "heads up".
I had the problem that the I only inserted the SD card that came with my printer into my printer twice (enough time to run the benchy) before it died, and I lost everything on it. As I hadn't even considered this as a risk, I hadn't backed up the card before doing anything with it. This made me rather more paranoid about my printer SD cards than I might otherwise be. *8')
Do you use Cura slicer?! I've been swapping and using random memory cards for years with no issues!
WAAAAH! Microcenter in my city?! That's a sponsor spot worth watching! Woot!
Thank you, love your vids. I am a Machinist (30 years) and use g-code on a daily bases. It is great to understand a few of the basic codes to fine tune your printer. I used it to fine tune my filament change process. Thanks again.
Love the beep tip!! Added to my end G-code!
Super handy for that!
Probably the best G-code overview I have ever seen.
( I used to use G-code quite a lot with CNC, but I haven't really had to mess with it for 3D printing that much.
Thanks for a great video.
Agree 100%
I did also work with multiple CNC-machines and have picked up a lot of useful G-code and M-commands out of this video from Angus (again) 👍🏼
When you start to get into the M commands you should specify what Gcode dialect you are using. M302 will work with Marlin, but might mean something completely different on another firmware, or for a laser engraver, or a CNC mill.
big facts man
Note that g code is not universal, the specifics of the M codes in particular will differ between firmware projects, but I assume these are for Marlin which is the most popular. I think most of these but not all work with my old Sailfish-based printer (when piped through gpx, which is kind of like an early thing like klipper)
Thanks Angus, its always good to be able to insert custom G-Code to make prints better.
This relative x absolute extrusion mode got me the first time I tried to calibrate e-steps. Fun times
Yep! It's pretty tricky.
I think I'll have to add M300 to the end gcode in the slicer. It would be handy to have an audible indication that the print is done.
My fav command is M810 to M819. the Macro slots. they let you combine common groups of commands in to one line. i do a lot of manual editting of my gcode out of the slicer. I just recently added M808 to my firmware, which is looping. since i dont have a CR-30 treadmill style printer, i use some ending gcode to slap the part off the bed with the X gantry and then restart the gcode. between M808 and M810 for my "reset extruder axis" and M811 for my "go in to rel positioning, move the z axis up one layer, and go back in to abs pos" i can print "forever" on my ender 3 pro. in conjunction with filament sensors it could run forever with minimal interaction.
my next project is definitely going to be a filament splicer, so i can just load rolls of filament and print parts literally forever lol.
If you've got a printer that's pimped out with LED attached to the control board the G-Code for turning on/off or adjusting the color of the lights if they support it can be fun to play with. Flashing the lights a couple times after a print is done can draw attention if you don't want to use the beeper for that.
Dude, thank you for sharing the PID tune code! My nozzle temps on octoprint have been all over the place. Now I know how to fix it!
For sounds it depends on which buzzer is used. It can be active (making sound right after you connect power, no frequency control) or passive (you have to do some PWM to make it sound, therefore you can control frequency). Prusa uses passive one! So you can Google for some gcode melodies and put them in your end gcode. So printer can play an Imperial march if you want.
"My Imperator... the printing of the third death star is finished at last... " damdamdam dam da dam dam dadam* 🤣🤣
Congratulations on reaching the 1 million mark dude. Thank you for sharing your knowledge with us.
I found this G-code online but its really helpful for auto bed leveling ( I was having an issue where the nozzle would ooze during the probing and cause the prints to not lay down a consistent first layer)
M140 S80.0 ; Set Heat Bed temperature
M190 S80.0 ; Wait for Heat Bed temperature
M104 S160; start warming extruder to 160
G28 ; Home all axes
G29 ; Auto bed-level (BL-Touch)
G92 E0 ; Reset Extruder
M104 S245.0 ; Set Extruder temperature
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
M109 S245.0 ; Wait for Extruder temperature
I print using PETG so 160c is warm enough to not ooze but also doesn't take too long to heat up the rest of the way. As long as you set up the Z offset with a fully heated nozzle, the probing can start as soon as the bed is up to temp. It also heats up the rest of the way in the starting position so as soon as it get there, it lays down the purge line (any oozing during the heat up wont cause any issues)
Made my ender 3 into a start it and forget it type of machine!
Good introduction! In terms of Marlin development I always try to emphasize the philosophy of keeping the firmware "dumb" so it will be obedient to our commands and not try to do anything too creative. The real smarts are behind the scenes and deal with the things we don't want to worry about: decidng how best to carry out movement commands efficiently, following the contours of the mesh, keeping temperatures stabilized, and so on. Let the slicers and other G-code generators do the truly creative stuff.
You forgot one super useful command to know about: M0 - Unconditional stop
It will pause execution of any further commands until input (encoder wheel or touchscreen) is pressed. it also has text display part like M117 so you can use it (especially with M300 beeper) to pause print when you need to insert some nuts or magnets that are meant to be fully encased
Thank you for finally allowing me to understand the difference between absolute and incremental. That was a brilliant explanation.
If you ever get a move out of range error when using Klipper it's normally because of absolute/realtive mode is wrong for X/Y/Z (G90 vs G91) or the extruder (M82 vs M83). It's a very common error people run into when writing macros for Klipper. To confuse matters even more some slicers let you set if gcode is generated in relative or absolute mode as well. Best way is to check what the current mode is, for example the variable printer.gcode_move.absolute_coordinates will be true if in absolute mode for X/Y/Z moves.
I've got two custom gcodes loaded into start G-code in prusa for my Ender 3 S1 (just below G28).
G28 ; home all axis
M420 S1 ; ensures the 16 point mesh from the probe is actually used for the print
M413 S0 ; prevent writing to the sd card after each layer which can potentially make blobs on your print
I never leave a video of yours without learning something new, thanks and keep it going please!
Exceptional video, I like how you split the screen as you entered the G-code.
Like always, thanks so much Angus, another great video and very good info for the 3d printer users.
I've been using repetier host since 2013 and its amazing how well the program has worked even with all the innovations in the 3D printing space. Usually I use it for troubleshooting any sort of kinematic issues or bed level issues.
About a month ago I started training on a new machine at work. It is a 30 ton CNC press and we fabricate high precision Sheet Metal, assemblies and products and I was pleasantly surprised when I saw the computer programming and it was the same exact thing I run my hundred dollar 3-D printer with.
I love Microcenter! I bought my printer and filament there!
M300 & M117 are super handy for debugging, and having the machine communicate what is up. I have several machines in the next room over from my work area. Each has different tune it plays at the end of a print to let me know which machine just finished. M600 for manual color changes is super handy for basic color swaps on just a couple layers.
Sadly and frustratingly Bambu machines have no serial interface and no support for M300, M117, or M600.
This is good to know Angus, appreciate the videos.
Awesome video. Definitely needed to know how to save stepper changes.
I think you have missed the pause/unpause commands M600/M601. Useful for inserting stuf in 3D prints or for manually changing filament. One problem with this command (at least on smooothie) is that it turns off heating, which is especially bad for bed heating mid print.
:) All great info - think I'll start sharing this video with people as a great lead in to what else your 3dprinter can be programed to possibly do without much efforts! Keep up the awesome content!
Thanks. This will be really helpful as I work on making filament changes more automatic. If there is no filament in the printer, there is no reason to wait for the hot end to heat up before loading filament.
M300 and M117 could be used for diagnostics, in conjunction with the registers (i.e. Out of Work Area error could list what position it is trying to reach using an M117 code and then use an M300 code a couple times)
One set of absent codes is the G2 and G3 commands, which does Circular Interpolated movements. G2 is Clockwise, G3 is Counterclockwise.
G2/G3 reduce the size of the G-code and the stutters incredibly. Arc Welder for Cura is highly recommended in my opinion to make use of this, sadly not all printers support it. I find it quite dumb honestly, very few cases are so starving of storage that you should disable it.
Another one that takes some effort to use effectively but is pretty incredible is M486 - cancel objects.
With the appropriate post-processing script on Marlin, you can separate a multiple object print into individual parts entirely, and cancel each one individually if you see need.
The only time it doesn't work is with supports. If the support starts to fail on one part, you'll have to live with it and cancel everything or let it be, as Cura adds the Z change line right at the start of a support structure code if it has that.
Also G2 is important, that's an arc move. This can help reduce stuttering especially for 8-bit motherboards, since it doesn't have to do many tiny G1 moves. The Arc Welder extension for Cura will do this automatically if you install it through the software marketplace and enable it in Special Modes. It'll also make smoother curves in your prints and reduce gcode file size.
The only G-code command that caught my attention over the years is M600, filament change, for simple but very effective multi-filament/colour prints.
I discovered that PETG & TPU can stick together in these multi-filament prints, but still haven't yet figured out any designs which could benefit from being part TPU & part PETG.
Vibration dampening?
@@timothymack7435 Yes that's a good one, like feet for a printer you could have the first layers in PETG with holes for screw mounts, with the rest in TPU for the actual feet part for dampening.
Printing a seal / gasket onto the rim of a case.
Angus... a little "Whoopsy" I think. At 7:25 your mouth said "X 100" but your hand said "Z 100". I think your hand got it right. 😉
Another great video, thanks. Thinking back to the 1980's (That's something I can do that you can't.) I used to get a real kick out of successfully making my BBC Micro perform something that I had coded directly in machine language, rather than BBC Basic. I have found that making something happen as I predicted, using G-Code, can give me similar "warm fuzzies".
Keep them coming. 👍
Heh yep mean Z 100! Making code do what you want is definitely rewarding.
To heat both extruder and bed at the same time, but not proceed until both are up to temperature, use all four temperature commands:
M104 S200 ; start heating the extruder and continue
M140 S60 ; start heating the bed and continue
M109 S200 ; wait for the extruder to reach temp
M190 S60 ; wait for the bed to reach temp
Much more efficient than waiting for one to heat and then the other.
Yeah that's a nice way to do it! I've always wondered if some companies choose not to do it for power draw reasons, or if it's just unoptimized code.
You could maybe calculate the time taken to heat each element, then do the following:
M190 S55; calculated intermediate bed value
M104 S200; start heading extruder and continue
M190 S60; finish heating bed
M140 S200; finish heating extruder
As long as your power supply has enough juice to do it and not trigger thermal runaway protection (which might trip if progress isn't being made fast enough), and if it won't trip a fuse or over current protection in your printer I have noticed that there are definitely better and worse patterns for heating up my old Replicator 2x: I think it heats one thing up part way, heats the other most of the way, then does "heat both the rest of the way"
@@WindyLion That's pretty much what I do, and it's easy to see whether you need to tweak the intermediate set point by looking at the temperature graphs (one of the reasons I love my Octoprint).
@@WindyLion I have my start GCode in Klipper and I'm calculating 90 % of the bed temp for 60 °C and 99.6 % for 100 °C (and linearly between those temperatures - it is good enough). Just after I reach this temp, I start heating nozzle and the rest of the bed temp. This way both heaters are finished almost at the same time.
M and G code is were I started in programing For FANUC CNC controllers 25 years ago, the thing that has got better is the GUI or interface software on computers to build the gcode file,
Computer power and graphics cards have grown alot. Thanks for the video !
M500 and M503 are definitely codes to know, especially when configuring things like esteps
Thank you for this video.
In the begining of 3D printing, it was almost required to know at least the basics of G Code.
Brings back the memory...
Or when the EEPROM wasn't implemented, and you had to tune your axises, and then reflash your board.
Great video. Really useful info on G-code. Thanks. 🇬🇧
You can add U1 after M303 to input the PID tunes after it is done, so you only need to then type in M500
P stands for proportional, I for integrating and d for differential. In short the p part has a linear feedback with an amplification factor which can be 0 to very big numbers. The Integrating part provides a feedback equivalent to the surface between the signal and the x axis of the difference between the setpoint and actual value. The D part outputs a signal equivalent to the rate of change of its input. These three are put in series and if you tune them just right and provide them with the right feedback, they will regulate whatever you want.
Really nice and very well explained, thanks
G Code to pause prints, maybe move to somewhere convenience, turn off nozzle heat to allow you to extract filament, then when your ready come back to temperature, extrude until new filament loaded (suitable amount purged), then stop, go back to where it left off even if you nudged it a bit while you were messing about and resume printing. Was going to try and sort out some G-Code to include to do all this on my Qidi X-Plus that I would insert at a particular layer height but, it all seemed a bit much so I have never tried it.
Good info.
I started with Repetier when I had my PrintrBot Simple 1405 print 7 years ago. FYI Simplify3D (even the 3yr old version 4.1.2), UltaMaker Cura, PronterFace, Prusa (I believe via Octoprint), Slic3r all support a serial connection and limited control (speed and E-flow). I have Prusa recommend not to print via serial with the chance an errant command being sent. I have printed via my Mac using serial (Simplify3D 4.1.2) almost exclusively for 7 years and had no issues (99.98% serial, 0.02% SD card).
Seeing microcenter sponsorships always reminds me how damn lucky I am to have two of them pretty close to me (I’m in nyc) I always recommend the inland filament both the PLA and PETG+ (the only ones I’ve used so far) have given me 0 issues and print amazingly
G code is something I look at everyday at work with my Mazak's, Chiron's, Okuma's, SNK's, etc. But, when I started 3D printing, some of these codes threw me off a little. It's been a great love hate relationship, but the same reason I love my job is the same reason I love printing. Keeps my brain busy and learning something new everyday. Thank you for your channel, and everything you offer the community.
I'd recommend turning the power on while connecting to your printer. My Ender 3 has custom firmware installed, so my problems might not happen on your 3d Ender 3, but when I give it USB power and later turn on the Printer, all axies move at twice the configured speed and violently jam into the frame/buildplate (I actually lost a nozzle to this)
I just learned to always turn on the power before connecting my PC or Raspberry Pi
This is very useful! I can make my printer look haunted while I'm at work, and see if my wife freaks out!!! Well played, good Sir, well played!!!
I recently compiled marlin for my ender 3 V2 with a bltouch and I discovered the "G35 tramming assistant" it helps you to level the bed probing on each corner
The joke at the beginning about ChatGPT is funny, but honestly it's not far from the realm of possibility. You can represent a 3d object as a sequence of geometric arguments (point clouds, or curves, etc). And GPT models (General Purpose Transformers) are really good at working with long sequences of values or tokens. So it's entirely possible for someone to train a vanilla GPT model on mesh data, and the corresponding slicer G Code. And what you'd end up with is something that could take an arbitrary mesh, and render a (hopefully) optimized sequence of G Code steps for any machine to use.
In fact, I'd be _very_ surprised if the major printer manufacturers are thinking about this as they iterate on their slicer designs and optimizations.
That was interesting and informative Angus.... Thanks
4:15 You definitely want to prevent the USB from powering the printer.
A tiny piece of electrical tape over the 5V line on the USB connector can block the power. Or you can cut a USB cable open and reconnect all of the wires except the 5V. If you have steady hands, another option is to desolder the 5V connection of the port on the printer's mainboard.
It's a design flaw in some printer brands' USB implementation, which should be data only. There are multiple reasons why it's a bad idea -- you're basically giving 2 independent 5V power sources (which may even be at different grounds) to the printer's mainboard. Usually it'll be fine, but it could easily kill the printer mainboard (less likely, but it could even bite your PC's USB port or motherboard).
Most excellent video!! You have a great talent for clearly and succinctly covering a topic. Is there a printable list link you can share that shows each g-code and its function? Great topic universally useful! Thanks!!!
I did my Biqu B1 play the Super Mario tone when it finished a print with M300 very fun, while is useful because I can hear from the other room that my model is done.
I believe there is a command to power off machine. Useful at the end of a program with a long wait code for cooldown and then shut down if you won't be around when a print finishes
I watched another video that gave the advice to use your heated bed along with the box your filament came in as a dryer. They said cut the bottom side off the box, lay it over your filament to insulate it some, and heat the bed. So I want to write a simple GCode to set the bed temp, present the bed forward and raise the Z out of the way. Is there a way to do a timer where it'll sit for 4 hours and then go into cooldown on it's own? Maybe M85 but I can't find specifically what that command does for a shutdown sequence and don't know what the max value it'll accept is. I'm assuming too huge a number could crash it.
Cool video 😊
At my makerspace, the printers (Enders) are set via Gcode to play their namesakes after print completion, things like Goldeneye and Mr. Bluesky... it's really wacky.
Also wowzer great video. Thank you so much for the effort you put into this video.
I found my Baud rate under “About this Printer” on my Ender 2 Pro. It is 115200 😁 I can’t wait to test this. Thank you!
My printers are in the other room so some M500s once warmup has completed and then some more once the first layer is done almost eliminates the hanging around checking.
Pretty sure you can actually drain the battery if your laptop while connected to a printer via usb cable. I was helping my friend set up his Ender 3 Pro, (context: his laptop battery size/capacity is at or just about at the legal limit for here in the USA, and it’s in pretty good health), and in just about two hours it nearly completely drained his battery from about 90% to about 10%. We had Cura open & connected to the printer and his laptop was plugged into the Ender 3 Pro for most of the time, plus the ender was plugged into the wall (the laptop was running off battery power).
Angus must be part google algorithm because I was just looking at this stuff yesterday. 😂 Keep up the great content!
I used to run my Prusa for few weeks during pandemic when LCD broke, I was able to print using the PC to manually control the machine etc. Then the bed heater broke :D but the printer was still going strong but only with PLA , those were the times when I sued that link a lot, I did lost few prints because windows updates restarting PC when I was not there..
The main thing I would like to know is how to change the delay on my auto level. My cr10s ver1 has a short delay between steps. Before I finish the paper clearance test it returns all the way back to the home screen. Having to turn the dial and navigate back to auto level just to move the nozzle to the next step is such a pain. Is there a way to change it to a 20 or 30 second delay?
I was just starting to look into the M300 command for a custom 'Print is done' tone, so I'm by no means an expert, but could it be the S parameter requires higher values to be able to be heard (and maybe internally it defaults to some value if the value supplied is lower than the frequency us humans can hear)? So instead of M300 S200 you would use M300 S2000 or something? (Haven't tried it myself yet)
The number after S is the frequency in Hertz. 440Hz is middle C. Human hearing is roughly in the range 20Hz to 20000Hz.
The stock (modified Marlin) firmware on (some) Ender printers apparently overrides the frequency so all M300 sequences play at the same frequency. If you install the full-featured Marlin (eg compile your own) your Ender can play different frequencies.
@@jeremylaidman6525 THank you for that clarification. Something new learned every day ;-)
I find for dealing with extruder heating, I will have the bed and extruder start heating without waiting as soon as the print code is initialized. I have the extruder temp set to 10 below the material melting point and then once its done all of it's homing and prep, it will then get a new command to continue heating to the proper temp and go on its merry way printing. This stops pre-print nozzle oozing.
Have you ever try circular interpolation (G2 and G3) on a 3D printer?
Very valuable video here.
I had the benefit of learning CNC prior to getting into 3D printing, so I had a foundational understanding of these concepts but the average person usually gets into this craft as a complete novice.
I definitely learned a few things here and I still have loads to learn.
Do you have any books that you might recommend to take a more in depth dive into the topic?
Great video, but I still can't figure out where to feed the strip of coded paper, with all of my g-code, into the printer's "electronic director".
So I spent £670 on a dumb gluegun lol
It’s not a very fast glue gun either.
Do you have or know some GCode to make a Bed Leveling program? ie... auto home, move z axis up 10 mm, move to corner, pause, disable stepppers, wait until resume is pressed, enable steppers, move z axis up 10 mm, move to opposite corner, pause, disable steppers, wait until resume is pressed, enable steppers, move z axis up 10 mm, move to opposite corner ect... i know there is a step i am missing. i dont know how to auto home the z axis during this process that would not make the nozzle press into bed when it gets to the corners.
Great video! Was actually going through some gcode for my Sovol SV06. I really like the M300 command. Does anyone know if the M300 commands can be added to a Prusa Mini+? I have yet to try it but was curious since its mentioned Prusa uses this in their printers. Thanks!
Have you ever considered going from STL to a full metal casting? Seems like something you would like
Dunno about Angus, but there are people who do this. Print a "positive" in PLA, form a mold around it, then pour in the liquid metal. The PLA gets burned out, if you've done everything right. It's basically "lost wax" casting for 3D-printable materials.
@@firehawkdelta yeah! Iv seen people do it with plaster and resin printers too. I just wasn’t sure if he’s thought about doing it.
Thanks, have another beer.
haha! Thanks mate, I will :)
For the waiting in some of my printer profile i had a G4 S450 :wait 7,5 minutes to help my bed to warp properly before some printing. i use it before G28
Got a link to the model of the vase you made with the two-tone filament?
A cool thing to do is: put some electrical tape on the 5V on a usb cable (those to make your cable longer, dont know how they are called in english), then the mother board only gets on when the power supply is switched on o:
Most adorable Angus ❤❤❤❤❤❤❤
This is perfect timing, thank you.
Thanks for this great video. I've known a good bit of GCode for a while, but I learned a thing or two anyway.
I'm a machinist and have been using g code for my entire life. Since getting into 3d printing, I've been wondering why printers don't utilize G2 and G3 arc commands. You could make a circle with one line of code instead of hundreds. My longest programs machining is about 200k of code. A simple 3d print of a toy was a few million. All because it only programs in linear commands. (A, J and, I command would be needed though). There are so many parameters that aren't being used. Anna what about, macros? Would a printer read it? Or the ability to pull up separate programs and run them within other programs. We should get together and blow the lid off printing. Right now it's so so basic.
H Just wondering if there is a command to dump the firmware. As I want to update mine, but would like a backup of the current state, cheers Darren.
I like using M104 and M140 at the start of gcode so that it can home while heating, and then using M109 and M190 with the same setpoints before the first use of the extruder (purge and swipe) in case it wasn't done yet. Currently, homing is all that happens between start heat and wait-for-heat, so there's usually still a wait, but it's at least less than only using wait-for-heat instructions.
When I first got my Ender-3 V2, I tried writing some G-code to help with bed levelling. It moved to the four corners of the bed and then to the centre but was intended to pause and wait for my Ok after each move, so I could adjust the dials. Sadly, this was when I found out that the stock Ender firmware did not support M25, It just carried on regardless, which is a real shame.
Thinking of this makes me wonder how many 3d printers *do* support M25, as it seems like a really useful thing to have available.
Is there no code one can add to the end of the programme that will shut the machine down at the end of a print?
Thanks for this awesome video.
how would I add this beep after the first layer without editing the gcode everytime?
How many programs are needed to go from idea to print?
Another great and informative video. About Micro Center, unfortunately the closest to me is 85 miles away or 136.7 kilometers. Might go there someday. Again thanks for the video!
I tried using the beep code on my Neptune 3 Pro right in Cura's gcode and it didn't work. I tested some different parameters of beeps and nothing. Does anyone know if it works through Cura's gcode?
My understanding of disconnecting power to the printer while plugged into the board through the usb is for safety. Saftey being to prevent the printer from doing anything unexpected like turning on the bed or hot end.
i have put a piece of electrical tape on pin 1 (+5V) of my usb cable. This to have the control board only power on when the PSU is on.
when 3d printer is on fan is on too? how set hardware fan to off?