机械必威体育网址
标题:
基于电子积木arduino(AVR)的G代码解释器原代码
[打印本页]
作者:
xmdesign
时间:
2012-8-6 19:48
标题:
基于电子积木arduino(AVR)的G代码解释器原代码
基于电子积木arduino的G代码解释器原代码,来源于http://arduino.cc/forum/搜CNC
: _) U1 Q# A- Y9 l. T8 x: d
我去年收集了许多程序,经过测试挑选出可以用,后来没时间继续研究学习,现在发
! F' u* _- V" {& O* x
上来给有用的朋友参考
5 Q x% g9 Y. @8 y7 L# H9 Q
下面是其中的小段源码
. F6 k" [- o; j( m( }6 K7 l. h
//init our variables
! b0 e& D8 O$ T1 w% c
long max_delta;
4 l: L3 M+ [5 n' V0 f
long x_counter;
: y, z3 Q, A x7 k, k+ Z
long y_counter;
* M8 n9 v8 n: m
long z_counter;
# U3 g5 o2 C0 K D6 n) B( z( R7 _
bool x_can_step;
- `, [; M: |: j1 _; |/ S! ?
bool y_can_step;
* y! O' Z6 v7 {% Y! H) P
bool z_can_step;
: x( ^/ V4 ]+ u* B( k! P
int milli_delay;
! h, u( f3 n( Z [' u
void init_steppers()
0 D/ M" n f- G
{
; f8 ?) _2 F! Y% D$ T$ y
//turn them off to start.
) [% E: v+ |4 U& i5 z: F$ G
disable_steppers();
8 s9 M8 S. Y! R8 l4 I
4 t5 U1 M4 U& N, R0 _$ T) ~
//init our points.
, `, f+ n0 |0 @* c4 t
current_units.x = 0.0;
! T: }. L1 J: y% s
current_units.y = 0.0;
2 n$ Y$ ?. N* c9 z: R. u6 V$ E
current_units.z = 0.0;
. @& \5 B& D$ p, J$ ^( n2 ~ ~
target_units.x = 0.0;
8 a* o& z1 x. Z9 `+ P) s
target_units.y = 0.0;
) l7 A7 G0 e8 k% `% w
target_units.z = 0.0;
L2 R; {7 ?* i0 C
" F+ d2 x0 c7 q
pinMode(X_STEP_PIN, OUTPUT);
# c1 D0 t, W4 u+ s, [, c/ L
pinMode(X_DIR_PIN, OUTPUT);
9 E! r6 J+ C& r3 ? g3 f" b
pinMode(X_ENABLE_PIN, OUTPUT);
1 x% ~+ G/ o) R8 y8 R, R! j# s
pinMode(X_MIN_PIN, INPUT);
3 R( F( N F+ m' N4 T! k! C2 V
pinMode(X_MAX_PIN, INPUT);
6 l+ p3 F* Q$ S9 f
: u% m8 d+ e: D( ^5 t" C- R! _& U
pinMode(Y_STEP_PIN, OUTPUT);
, Z' ~, `, v. r; \0 z" y
pinMode(Y_DIR_PIN, OUTPUT);
$ f/ [' W+ V- e5 T" |4 s
pinMode(Y_ENABLE_PIN, OUTPUT);
0 d1 C5 x2 q8 M3 }
pinMode(Y_MIN_PIN, INPUT);
9 A9 |7 g% f1 ~( I* \
pinMode(Y_MAX_PIN, INPUT);
% X x" x6 V! ]8 G& y* s& L
5 `6 k9 v* d; [' T" ^+ `: ~' y
pinMode(Z_STEP_PIN, OUTPUT);
3 R# Z- K3 |# @3 z! x
pinMode(Z_DIR_PIN, OUTPUT);
- ` y* _, ]% [3 m. q, x
pinMode(Z_ENABLE_PIN, OUTPUT);
! E4 ]* J& f2 s& I7 h( A
pinMode(Z_MIN_PIN, INPUT);
* ^7 [3 r( Y( Q5 T. w! y
pinMode(Z_MAX_PIN, INPUT);
8 F+ F2 T: [6 b2 T" E
+ o5 f! g6 j6 A
//figure our stuff.
% @( k! Y; [- W9 _2 Y
calculate_deltas();
$ A6 ~# I, r! K
}
6 D; l4 E) T5 W% L
void dda_move(long micro_delay)
6 ^0 N6 I( d/ A
{
: {" B* s9 N: e. l
//enable our steppers
/ ?5 ?3 t+ T4 I* [7 j* \( w) O
digitalWrite(X_ENABLE_PIN, HIGH);
3 Y1 t9 f+ k/ ~4 K1 L+ f0 `
digitalWrite(Y_ENABLE_PIN, HIGH);
5 d$ t* M0 Q6 Z Z, L( z: a# I$ `- H& e
digitalWrite(Z_ENABLE_PIN, HIGH);
$ N- X( G5 T* c! g
4 n# C7 w. R: i @7 M/ C
//figure out our deltas
3 D3 U* _. R! K2 ?" ?% r
max_delta = max(delta_steps.x, delta_steps.y);
( D' g4 `+ B5 d! J
max_delta = max(delta_steps.z, max_delta);
% _9 a& W: T) q" [# d1 J0 v; Z
//init stuff.
# [( h, U" W2 G9 V! W0 e; `4 h- X
long x_counter = -max_delta/2;
8 i9 ?/ s, x) t" I9 L) I9 s
long y_counter = -max_delta/2;
: ?( K2 B2 R6 o, S$ a9 v8 M9 g! X. D. E) k
long z_counter = -max_delta/2;
. J# d( z/ ^# P) P/ K" t8 x/ z
/ R4 ^6 f; J- r; |9 y$ \
//our step flags
! e0 r5 X/ _# n& G$ T
bool x_can_step = 0;
8 s+ v. {1 y! O5 ^5 t& ?* s
bool y_can_step = 0;
0 V7 v/ }. ]3 A3 x
bool z_can_step = 0;
+ A8 l- S# g$ y: _
6 _/ |8 I+ E2 e3 O9 [* S3 O0 K% C3 i
if (micro_delay >= 16383)
% {) A& C- F, Q& x U: @
milli_delay = micro_delay / 1000;
+ A; m! P* m+ _2 y; w6 ^( m
else
! s5 r% ^ u7 D6 q' k3 ~$ B
milli_delay = 0;
) K ?% j5 F* ^. [7 @& h" d
: c1 U" `6 i0 ?+ ^4 N
作者:
xmdesign
时间:
2012-8-6 19:50
有2轴圆弧查补和3轴直线查补功能
作者:
godbyw
时间:
2013-8-7 14:46
谢谢分享。
作者:
cbcy
时间:
2013-8-25 00:01
谢谢分享。
作者:
兔子机械
时间:
2014-12-2 14:14
谢谢分享
作者:
lkmdkl
时间:
2015-5-2 17:56
谢谢分享!
作者:
yueame
时间:
2015-5-5 10:06
感谢分享
作者:
龙游大海
时间:
2015-5-5 10:18
电子积木是什么意思?是CNC的G码吗?
作者:
lnxianzhi
时间:
2015-9-27 00:13
这个还没怎么接触过,楼主能详细解释解释吗
1 O; C; H% F. {* f+ K0 u. M
作者:
Kiss1212
时间:
2015-10-5 11:21
谢谢分享
作者:
醉行者123
时间:
2016-1-19 18:07
不错
欢迎光临 机械必威体育网址 (//www.szfco.com/)
Powered by Discuz! X3.4