機(jī)械社區(qū)

標(biāo)題: 基于電子積木arduino(AVR)的G代碼解釋器原代碼 [打印本頁]

作者: xmdesign    時間: 2012-8-6 19:48
標(biāo)題: 基于電子積木arduino(AVR)的G代碼解釋器原代碼
基于電子積木arduino的G代碼解釋器原代碼,來源于http://arduino.cc/forum/搜CNC2 [8 W& k  s( S( T+ e! n
我去年收集了許多程序,經(jīng)過測試挑選出可以用,后來沒時間繼續(xù)研究學(xué)習(xí),現(xiàn)在發(fā)
; b. L/ P% j- u# w8 U上來給有用的朋友參考: n: s+ u# ]  K6 N* E# t5 h
下面是其中的小段源碼
: @( z4 f0 F. E% A/ W8 q//init our variables
* Z% _! R: y/ Y1 ^9 w7 vlong max_delta;
+ P+ r9 O) ]3 [' _* V6 J: }long x_counter;
5 Y6 u$ b9 g# n( Ilong y_counter;1 Z. {3 ^, d6 o0 i
long z_counter;
) L0 e- S1 ?  i/ B; D+ Fbool x_can_step;' O( y( |' \6 ]9 m3 |5 G; J
bool y_can_step;
$ y% [  g& T4 r( r1 y3 sbool z_can_step;
$ C$ W! U2 k# r7 Yint milli_delay;
, T$ w! v" W, R2 ~void init_steppers()
" p+ g# V( c6 ^{
  a0 y. m" D) }: e5 e //turn them off to start.! U5 u3 f2 I6 u3 N6 G. |
disable_steppers();
8 |& {% F, q+ c" A4 A! G! _* ]& o( H
1 x+ G- ?) S& C4 C% ?! [( t& ` //init our points.
" _. R/ f4 H/ ^  v1 G  e2 A current_units.x = 0.0;- Y# J; a) _: S# x+ b. C( K( v
current_units.y = 0.0;, g  Q/ o. z% @8 b) U
current_units.z = 0.0;
  u1 M( _9 q4 _1 O target_units.x = 0.0;, \7 P# _1 `+ @. s
target_units.y = 0.0;  E" w1 u) M+ T: A, H
target_units.z = 0.0;' a, g; m; b0 ]$ K+ v0 Y; M
# c3 I1 Z9 z! u( a- g+ M
pinMode(X_STEP_PIN, OUTPUT);+ H- N8 V+ D' e: |+ r
pinMode(X_DIR_PIN, OUTPUT);* |/ z) r; \  D
pinMode(X_ENABLE_PIN, OUTPUT);; ?4 P" ~5 m* D! s  V+ s4 O4 s
pinMode(X_MIN_PIN, INPUT);
3 d" h- j' P) k& G4 `6 x pinMode(X_MAX_PIN, INPUT);+ \4 E  P  v! M4 f. U

9 ~- t* x$ x8 y3 _& c pinMode(Y_STEP_PIN, OUTPUT);7 A1 Q1 d0 ?' O- J4 L
pinMode(Y_DIR_PIN, OUTPUT);% p% A; y6 U+ I+ E
pinMode(Y_ENABLE_PIN, OUTPUT);: P9 L* X( i; b+ }+ S+ v
pinMode(Y_MIN_PIN, INPUT);. ~: `  x7 I( |9 i; b3 B" R( h: b
pinMode(Y_MAX_PIN, INPUT);
+ e- a; w' ~9 F- s; h" X/ H 4 M+ E: k* a( }; b
pinMode(Z_STEP_PIN, OUTPUT);1 {5 Z' l" ], ~. A3 v- Y3 J
pinMode(Z_DIR_PIN, OUTPUT);
/ z% N. f. [2 h( c  ?9 e9 E$ d! R  F pinMode(Z_ENABLE_PIN, OUTPUT);$ {- F) U$ O$ A5 U9 Z) P
pinMode(Z_MIN_PIN, INPUT);; R: b8 b/ F* ~7 J  a
pinMode(Z_MAX_PIN, INPUT);
& w! D/ }: S, K( u # g* L, X( E# W: }
//figure our stuff.
# p( {/ B# t, ?5 V% w calculate_deltas();
2 T4 ~' ^6 y- N, }) u, W! L}8 o) @5 ~4 J% }: I( J+ }8 j
void dda_move(long micro_delay)0 _" H7 K+ A  O' z  f* h# ~
{2 ~$ [9 ?. u, H9 M3 e6 \
//enable our steppers& A; {* A/ }0 e! m
digitalWrite(X_ENABLE_PIN, HIGH);: u$ y$ y6 \5 C7 g0 r& n/ h7 E7 j5 k
digitalWrite(Y_ENABLE_PIN, HIGH);
% u0 G0 ~3 t- n( B digitalWrite(Z_ENABLE_PIN, HIGH);
  k: m' @: `4 a9 \. [3 p4 [5 z
- |0 n! Q, m* j) p //figure out our deltas, d3 s' m- _/ Z2 v; i
max_delta = max(delta_steps.x, delta_steps.y);
" S" h7 k, l: C" Y) ~* a/ @3 J7 n max_delta = max(delta_steps.z, max_delta);
2 p% G' `, I6 I3 C. ]1 z" \$ D //init stuff.% w' `( J! y% w5 V0 w4 L& O( Z3 G
long x_counter = -max_delta/2;$ `; w* T6 w; K& b( i
long y_counter = -max_delta/2;$ e- E1 }* n- P1 b
long z_counter = -max_delta/2;! g5 s# j& d* m+ j
2 f6 Q* ?7 t) f4 ]& F0 w! ^
//our step flags# ]" o; P( U& H
bool x_can_step = 0;
3 _0 R: m0 x4 |1 z* ?; I* U bool y_can_step = 0;
, T+ t( T- B: d, c+ Z/ W) \ bool z_can_step = 0;6 m+ n9 g/ f' a! v, L
: F1 S5 M: `* a
if (micro_delay >= 16383)) P$ o! `. v# F
  milli_delay = micro_delay / 1000;
' E2 S! P, M+ E4 f( ` else
8 e$ u4 q8 `6 w# d/ E  milli_delay = 0;; n8 u! g  x) h6 O; h9 u; O
/ `$ [$ P$ x& {5 U

作者: xmdesign    時間: 2012-8-6 19:50
有2軸圓弧查補(bǔ)和3軸直線查補(bǔ)功能
作者: godbyw    時間: 2013-8-7 14:46
謝謝分享。
作者: cbcy    時間: 2013-8-25 00:01
謝謝分享。
作者: 兔子機(jī)械    時間: 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
這個還沒怎么接觸過,樓主能詳細(xì)解釋解釋嗎3 F0 j4 J5 h- t) ]

作者: Kiss1212    時間: 2015-10-5 11:21
謝謝分享  
作者: 醉行者123    時間: 2016-1-19 18:07
不錯




歡迎光臨 機(jī)械社區(qū) (http://e-learninguniversity.com/) Powered by Discuz! X3.4