xmdesign 发表于 2012-8-6 19:48:27

基于电子积木arduino(AVR)的G代码解释器原代码

基于电子积木arduino的G代码解释器原代码,来源于http://arduino.cc/forum/搜CNC
我去年收集了许多程序,经过测试挑选出可以用,后来没时间继续研究学习,现在发
上来给有用的朋友参考
下面是其中的小段源码
//init our variables
long max_delta;
long x_counter;
long y_counter;
long z_counter;
bool x_can_step;
bool y_can_step;
bool z_can_step;
int milli_delay;
void init_steppers()
{
//turn them off to start.
disable_steppers();

//init our points.
current_units.x = 0.0;
current_units.y = 0.0;
current_units.z = 0.0;
target_units.x = 0.0;
target_units.y = 0.0;
target_units.z = 0.0;

pinMode(X_STEP_PIN, OUTPUT);
pinMode(X_DIR_PIN, OUTPUT);
pinMode(X_ENABLE_PIN, OUTPUT);
pinMode(X_MIN_PIN, INPUT);
pinMode(X_MAX_PIN, INPUT);

pinMode(Y_STEP_PIN, OUTPUT);
pinMode(Y_DIR_PIN, OUTPUT);
pinMode(Y_ENABLE_PIN, OUTPUT);
pinMode(Y_MIN_PIN, INPUT);
pinMode(Y_MAX_PIN, INPUT);

pinMode(Z_STEP_PIN, OUTPUT);
pinMode(Z_DIR_PIN, OUTPUT);
pinMode(Z_ENABLE_PIN, OUTPUT);
pinMode(Z_MIN_PIN, INPUT);
pinMode(Z_MAX_PIN, INPUT);

//figure our stuff.
calculate_deltas();
}
void dda_move(long micro_delay)
{
//enable our steppers
digitalWrite(X_ENABLE_PIN, HIGH);
digitalWrite(Y_ENABLE_PIN, HIGH);
digitalWrite(Z_ENABLE_PIN, HIGH);

//figure out our deltas
max_delta = max(delta_steps.x, delta_steps.y);
max_delta = max(delta_steps.z, max_delta);
//init stuff.
long x_counter = -max_delta/2;
long y_counter = -max_delta/2;
long z_counter = -max_delta/2;

//our step flags
bool x_can_step = 0;
bool y_can_step = 0;
bool z_can_step = 0;

if (micro_delay >= 16383)
milli_delay = micro_delay / 1000;
else
milli_delay = 0;

xmdesign 发表于 2012-8-6 19:50:44

有2轴圆弧查补和3轴直线查补功能

godbyw 发表于 2013-8-7 14:46:24

谢谢分享。

cbcy 发表于 2013-8-25 00:01:13

谢谢分享。

兔子机械 发表于 2014-12-2 14:14:14

谢谢分享

lkmdkl 发表于 2015-5-2 17:56:27

谢谢分享!

yueame 发表于 2015-5-5 10:06:23

感谢分享

龙游大海 发表于 2015-5-5 10:18:43

电子积木是什么意思?是CNC的G码吗?

lnxianzhi 发表于 2015-9-27 00:13:28

这个还没怎么接触过,楼主能详细解释解释吗

Kiss1212 发表于 2015-10-5 11:21:26

谢谢分享
页: [1] 2
查看完整版本: 基于电子积木arduino(AVR)的G代码解释器原代码