找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 9560|回复: 10

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

  [复制链接]
发表于 2012-8-6 19:48:27 | 显示全部楼层 |阅读模式
基于电子积木arduino的G代码解释器原代码,来源于http://arduino.cc/forum/搜CNC( }7 S# [8 j. o; C' [
我去年收集了许多程序,经过测试挑选出可以用,后来没时间继续研究学习,现在发) p$ {- i9 o9 m- G6 F  B' i
上来给有用的朋友参考
: `6 _) j/ b! Y: D下面是其中的小段源码: N) A  V0 \6 c1 `7 T7 s5 r9 l7 G# s
//init our variables
. f* x8 e- Y" O% E1 Clong max_delta;( m; j& n- _# d3 n" P* J3 f- E
long x_counter;
5 l7 w1 `  k3 j0 s* ^% B8 Blong y_counter;* C' s4 E8 J" r9 j; }! D/ Y7 |
long z_counter;/ c5 f" g2 l7 o- V
bool x_can_step;, M; W6 a# d) j4 q
bool y_can_step;
$ ^) ]  Q* L: }6 p4 e1 r* jbool z_can_step;
6 l+ I2 T7 V) y: d2 n, ]int milli_delay;$ k  m" ?7 x- U
void init_steppers()/ P  i  U& j+ O: G* P) U" o9 {, |
{
4 P+ ]+ n. p9 G) r0 s# b //turn them off to start.; @. J* `8 P5 t$ T9 k/ {
disable_steppers();
! t1 K- u1 n- [( g3 B' g& O
0 K2 T, i+ A3 b8 _+ f) T+ m //init our points.- N6 f( R/ {1 G# S9 w
current_units.x = 0.0;
+ P, `8 s& j% X/ s; l current_units.y = 0.0;
& d( Y1 N% E3 K9 z& q9 D% N+ Q current_units.z = 0.0;6 D  M) _, y, T; H2 [: h
target_units.x = 0.0;
+ |6 y4 `5 e4 [ target_units.y = 0.0;' r4 Z2 i1 U+ U
target_units.z = 0.0;) N3 a/ {; r) i4 ~% I" y. V

; U- a2 ~3 v) l pinMode(X_STEP_PIN, OUTPUT);
* b  {5 j$ e# l# k9 K( ` pinMode(X_DIR_PIN, OUTPUT);
. u0 r/ `1 y8 @$ b% q  z pinMode(X_ENABLE_PIN, OUTPUT);' w( n  a9 l7 }$ E7 [3 L% `- p
pinMode(X_MIN_PIN, INPUT);' H3 e$ K/ @8 V  L! [: P( ?
pinMode(X_MAX_PIN, INPUT);0 T5 r/ R* L% t. p! P! D7 X
0 O3 D" T1 X) R$ y4 j
pinMode(Y_STEP_PIN, OUTPUT);" ]' f# f' X" y5 z7 K3 |( a, S% w
pinMode(Y_DIR_PIN, OUTPUT);
2 r1 ^4 D. ]- Q5 ^% w. U/ }" R pinMode(Y_ENABLE_PIN, OUTPUT);+ X( m0 J; ~# S! n8 C8 {
pinMode(Y_MIN_PIN, INPUT);" G) l. i2 h2 g* O8 H
pinMode(Y_MAX_PIN, INPUT);
& `$ _  `) S+ y* e! z " k+ Y: D  [* k% R
pinMode(Z_STEP_PIN, OUTPUT);
' [! N3 _- Z8 Q2 p6 o  Z pinMode(Z_DIR_PIN, OUTPUT);
8 W$ C6 B* y% x, R& K0 i pinMode(Z_ENABLE_PIN, OUTPUT);, U5 Z: j, M3 e$ b6 M
pinMode(Z_MIN_PIN, INPUT);
3 x! s7 {% F0 k( K5 c& {- X" i" n pinMode(Z_MAX_PIN, INPUT);& c2 h% p$ O0 Q* V% `- c
8 q; @% {, K5 p1 V
//figure our stuff.
0 z; T; J8 p! H8 K calculate_deltas();$ A, O2 J$ K7 H7 @) `. E5 w
}
0 h' o: B0 k$ e8 F* k, D# v  Zvoid dda_move(long micro_delay)# B' X  g2 o0 x
{
/ z, x1 C7 z+ y& A0 j* u7 r- L //enable our steppers- b1 C6 s1 j& m  Q6 A5 }7 ]
digitalWrite(X_ENABLE_PIN, HIGH);
" l  a# t1 a2 B) e8 X digitalWrite(Y_ENABLE_PIN, HIGH);/ ~- }# H: b$ @9 h0 c
digitalWrite(Z_ENABLE_PIN, HIGH);' d4 k, g  b( s0 L$ x* C
+ |) P+ m7 L, ?
//figure out our deltas  r% }$ a! U" E2 R9 r
max_delta = max(delta_steps.x, delta_steps.y);/ ~3 ~2 J1 B, ^( u5 B& z5 H
max_delta = max(delta_steps.z, max_delta);1 F+ k) j6 S: t2 ^! k
//init stuff.: |, t$ ?3 a7 g6 d
long x_counter = -max_delta/2;! O7 L" k0 h# Z- X1 q0 n
long y_counter = -max_delta/2;  f* h) ]0 x: O1 g
long z_counter = -max_delta/2;
# M: @7 p2 H" z) L' h 3 q) Z7 ?, }/ r7 M2 j
//our step flags
, h3 Z6 N" ?9 a% S* t9 H+ f bool x_can_step = 0;) U& ~! V' Y/ D, K
bool y_can_step = 0;' k2 x( H  {( U* r" m
bool z_can_step = 0;
+ a0 u0 v2 T1 w$ p3 [: c$ n * c* n2 h6 H  Q/ U: u" K' D  F
if (micro_delay >= 16383)
" E, H" k6 f& I; y' X' a  milli_delay = micro_delay / 1000;
/ V# o( {" O! `3 n, }- I2 { else" s6 i0 H' x$ Z
  milli_delay = 0;' ]% t0 j8 ?' C' F, v/ v9 l$ W1 @3 u# J% n

# t# [/ F7 v) l

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
回复

使用道具 举报

 楼主| 发表于 2012-8-6 19:50:44 | 显示全部楼层
有2轴圆弧查补和3轴直线查补功能
发表于 2013-8-7 14:46:24 | 显示全部楼层
谢谢分享。
发表于 2013-8-25 00:01:13 | 显示全部楼层
谢谢分享。
发表于 2014-12-2 14:14:14 | 显示全部楼层
谢谢分享
发表于 2015-5-2 17:56:27 | 显示全部楼层
谢谢分享!
发表于 2015-5-5 10:06:23 | 显示全部楼层
感谢分享
发表于 2015-5-5 10:18:43 | 显示全部楼层
电子积木是什么意思?是CNC的G码吗?
发表于 2015-9-27 00:13:28 | 显示全部楼层
这个还没怎么接触过,楼主能详细解释解释吗, P4 u: O+ V( A
发表于 2015-10-5 11:21:26 | 显示全部楼层
谢谢分享  
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-9-18 17:52 , Processed in 0.089694 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表