机械必威体育网址

标题: 基于电子积木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 flong 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! Pint milli_delay;
! h, u( f3 n( Z  [' uvoid 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 deltas3 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