久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱
機械社區(qū)
標題:
基于電子積木arduino(AVR)的G代碼解釋器原代碼
[打印本頁]
作者:
xmdesign
時間:
2012-8-6 19:48
標題:
基于電子積木arduino(AVR)的G代碼解釋器原代碼
基于電子積木arduino的G代碼解釋器原代碼,來源于http://arduino.cc/forum/搜CNC
( e/ W9 S, k! e0 Y! I3 y T0 L
我去年收集了許多程序,經(jīng)過測試挑選出可以用,后來沒時間繼續(xù)研究學習,現(xiàn)在發(fā)
6 G% r5 [, Q' g- ~/ H
上來給有用的朋友參考
# U9 s. i, G% d5 ^
下面是其中的小段源碼
6 ]9 A* n8 h: ^6 X; ~# {9 \
//init our variables
$ O: N% @' S, p
long max_delta;
( {& {% o/ S7 G1 F% W4 v" S4 |
long x_counter;
* _( @& t4 I1 o. Y i( Y# o% A
long y_counter;
, ?* f+ s3 Q) X7 [, {+ p
long z_counter;
S/ G5 C! w2 E; d
bool x_can_step;
4 Y& H5 j3 K: `% `
bool y_can_step;
$ W l8 b) u( L+ r* A
bool z_can_step;
% F; @# _9 R: @- ?
int milli_delay;
/ n$ ]' `0 c, t
void init_steppers()
q8 H# _, p& I: ^( b
{
c8 n: U) ^" o/ @* I& Q8 w p" t
//turn them off to start.
; c G/ ^5 x9 T0 o' U" q
disable_steppers();
& J r" K9 Y8 u9 q4 D% U1 s7 H, H
j5 U" a1 `& `' E' U
//init our points.
$ X# p. t! f) K# k. ^
current_units.x = 0.0;
, n4 r g9 v1 c N* o6 T$ N+ M
current_units.y = 0.0;
z: w" }" y5 t* C6 I3 O
current_units.z = 0.0;
% s; K& c% M) _! i$ W% E
target_units.x = 0.0;
4 l% { D D6 W% [9 {: ^
target_units.y = 0.0;
E& A6 y1 I: B
target_units.z = 0.0;
) B" a6 K3 F5 q$ W" _
( r$ j, z( K" I9 f+ g; _6 ?: f K' g
pinMode(X_STEP_PIN, OUTPUT);
" C+ u# X( V% u+ r0 A& K0 g
pinMode(X_DIR_PIN, OUTPUT);
( K+ @3 z+ i5 F1 S. c, u) a
pinMode(X_ENABLE_PIN, OUTPUT);
4 d* }8 Y+ e, R8 k {# ?$ w
pinMode(X_MIN_PIN, INPUT);
" K( U! C; L/ m4 c. D% M. Z" e
pinMode(X_MAX_PIN, INPUT);
1 W; R8 Z8 m* A2 w" p( Y; G
/ B% i, T: m" V F4 A) Q' g* S
pinMode(Y_STEP_PIN, OUTPUT);
$ c9 s) O' V9 u
pinMode(Y_DIR_PIN, OUTPUT);
1 t. u/ A, a2 e" B+ O6 x3 ~
pinMode(Y_ENABLE_PIN, OUTPUT);
# m5 L7 r+ x% M* j, V/ s/ S% j, `
pinMode(Y_MIN_PIN, INPUT);
; h: g& K/ m; {$ ^5 m
pinMode(Y_MAX_PIN, INPUT);
7 J9 d" }1 A# _ g s
% ^- n( q2 X5 C4 G, p/ f! e+ O; D
pinMode(Z_STEP_PIN, OUTPUT);
0 b, Q- C( V, t l* M: [ D8 H& j% }
pinMode(Z_DIR_PIN, OUTPUT);
. D. x& j" u& k0 s' }
pinMode(Z_ENABLE_PIN, OUTPUT);
$ z2 A9 j5 h. H9 I; g! T; r/ y
pinMode(Z_MIN_PIN, INPUT);
$ L E% R; x7 {5 m$ e
pinMode(Z_MAX_PIN, INPUT);
$ Z7 U! X1 u0 _3 \
" D( g) L+ W. ]. l8 X" F `
//figure our stuff.
- n6 v7 O- I7 [: U
calculate_deltas();
+ R/ s/ @: H1 l- ^& b
}
# B0 {! K6 ^7 D; P
void dda_move(long micro_delay)
! j2 M, J2 G* U1 ]
{
5 P v8 ~5 o5 K8 x/ z7 B4 x7 N
//enable our steppers
' r: T u; E8 w) u; {) M
digitalWrite(X_ENABLE_PIN, HIGH);
& U9 V4 N3 [- W( ~8 x q
digitalWrite(Y_ENABLE_PIN, HIGH);
5 ^1 G( T K8 k. c, C2 q
digitalWrite(Z_ENABLE_PIN, HIGH);
- D& f: @1 p* J' c) Y4 O# { B0 ?
' @: e" S) M, _- Z' }0 p
//figure out our deltas
& G8 a8 k. N) [# C/ q3 b
max_delta = max(delta_steps.x, delta_steps.y);
2 R+ `" F8 |: z7 Z9 s! ^0 Q9 F
max_delta = max(delta_steps.z, max_delta);
3 F/ P/ }2 ]3 w) B g6 z* ^
//init stuff.
9 i! E2 T: k: {7 m- } l1 W# o
long x_counter = -max_delta/2;
1 o3 ?9 D1 _/ y2 M1 u+ N
long y_counter = -max_delta/2;
7 @+ r- R; \9 H! u# H# ~5 Z
long z_counter = -max_delta/2;
4 d/ c' \9 j" x# V5 p
& |: `- K8 C! ~( m
//our step flags
, k' c$ b5 i: @4 {) C$ q. G& _
bool x_can_step = 0;
5 P G" A8 {0 K* }
bool y_can_step = 0;
4 }$ r: k/ U9 y6 M
bool z_can_step = 0;
+ c& Z8 M2 ]* T: N
y$ Y0 k% U' H- i* |5 |6 {' u9 s
if (micro_delay >= 16383)
: m( I* k/ J. X' O- a
milli_delay = micro_delay / 1000;
% T* H D2 b/ J: [
else
" _9 l8 B. o8 v, e
milli_delay = 0;
5 ~$ _# M! [2 {6 E- d
9 x6 L: m0 r& T _; M6 F
作者:
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
這個還沒怎么接觸過,樓主能詳細解釋解釋嗎
3 S. x4 F& M4 h6 a$ ~+ B
作者:
Kiss1212
時間:
2015-10-5 11:21
謝謝分享
作者:
醉行者123
時間:
2016-1-19 18:07
不錯
歡迎光臨 機械社區(qū) (http://www.ytsybjq.com/)
Powered by Discuz! X3.5