Marlin固件具有很强大的功能,支持非常多G代码命令(参考:http://reprap.org/wiki/Gcode )。但很多朋友还是有特殊定制的需求,在这里简单写一个例子来说明一下如何添加或修改自己定制的G代码命令。
所有的G代码列表在Marlin_main.cpp文件中。
所有的相关代码都在process_commands这个函数里面。G开头的(G1、G2、G3等)及M开头的(M0、M1等)是分开的,所以一定要注意区分。
我这里以一个简单例子做说明,是@wanhaixin 提出的,执行M03的时候,接通一个继电器,执行M05的时候,关闭这个继电器。
首先因为是M命令,所以应该将代码添加在M代码部分。为了方便查找,按照原顺序进行添加会更好,比如M3应该放在M2和M4之间。
添加代码是一定要注意#if、#endif这样的宏命令。
- #ifdef 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
- {
- LCD_MESSAGEPGM(MSG_USERWAIT);
- codenum = 0;
- if(code_seen('P')) codenum = code_value(); // milliseconds to wait
- if(code_seen('S')) codenum = code_value() * 1000; // seconds to wait
- st_synchronize();
- previous_millis_cmd = millis();
- if (codenum > 0){
- codenum += millis(); // keep track of when we started waiting
- while(millis() < codenum && !lcd_clicked()){
- manage_heater();
- manage_inactivity();
- lcd_update();
- }
- }else{
- while(!lcd_clicked()){
- manage_heater();
- manage_inactivity();
- lcd_update();
- }
- }
- LCD_MESSAGEPGM(MSG_RESUMING);
- }
- break;
- #endif
- //需要添加的代码应该放在这个位置
- case 3:
- digitalWrite(Pin,High);//Pin指你打算用于控制继电器的接口(arduino Pin编号)。如果跟其它管脚冲突,可能需要配置Pins.h文件中相关管脚为-1.
- break;
- case 5:
- digitalWrite(Pin,LOW);
- break;
- //定制添加代码结束
- case 17:
- LCD_MESSAGEPGM(MSG_NO_MOVE);
复制代码 添加代码后,就可以通过发送M3和M5来分别拉高(5V)和拉低(0V)相应的IO口,从而实现对继电器的控制了。
修改代码的话跟添加差不多,只是找到相应代码段进行修改就好了。
|
|
全部评论2
你可能喜欢
开源3D建模软件FreeCAD 1.0正式发布,支持W
人工智能与3D打印技术结合,实现小型核反应
最新《Nature》:动态界面3D打印
石墨烯增强混凝土能否推动可持续建筑? UVA
推荐课程
神奇的3D打印
SLA3D打印工艺全套培训课程 - 软件篇
3D打印月球灯视频教程 包括完整贴图建模流
【原创发布】Cura软件修改二次开发定制视频