Adding custom M Codes to Marlin

  • If I wanted to add my own custom M Codes in Marlin - in which source code file would I do that?


    This answer is relevant for Marlin 1.x, but not for Marlin 2.x

  • Airfield20

    Airfield20 Correct answer

    5 years ago

    In the file Marlin_main.cpp on line 7131 there is a switch case:



    (To turn on line numbers go to File>Preferences and click Display line numbers.)



    case 'M': switch (codenum) {
    #if ENABLED(ULTIPANEL)
    case 0: // M0 - Unconditional stop - Wait for user button press on LCD
    case 1: // M1 - Conditional stop - Wait for user button press on LCD
    gcode_M0_M1();
    break;
    #endif // ULTIPANEL

    case 17:
    gcode_M17();
    break;
    etc.....


    Adding another case with an unused number such as 5 and then the code you want followed by a break should do the trick. Ex:



    case 5:
    doABunchofCoolStuff();
    myservo.write(thebestposition);
    break;


    -AC


License under CC-BY-SA with attribution


Content dated before 7/24/2021 11:53 AM

Tags used