機(jī)械社區(qū)
標(biāo)題:
基于電子積木arduino(AVR)的G代碼解釋器原代碼
[打印本頁]
作者:
xmdesign
時間:
2012-8-6 19:48
標(biāo)題:
基于電子積木arduino(AVR)的G代碼解釋器原代碼
基于電子積木arduino的G代碼解釋器原代碼,來源于http://arduino.cc/forum/搜CNC
2 [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 v
long max_delta;
+ P+ r9 O) ]3 [' _* V6 J: }
long x_counter;
5 Y6 u$ b9 g# n( I
long y_counter;
1 Z. {3 ^, d6 o0 i
long z_counter;
) L0 e- S1 ? i/ B; D+ F
bool x_can_step;
' O( y( |' \6 ]9 m3 |5 G; J
bool y_can_step;
$ y% [ g& T4 r( r1 y3 s
bool z_can_step;
$ C$ W! U2 k# r7 Y
int 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