机械必威体育网址

标题: 基于电子积木arduino(AVR)的G代码解释器原代码 [打印本页]

作者: xmdesign    时间: 2012-8-6 19:48
标题: 基于电子积木arduino(AVR)的G代码解释器原代码
基于电子积木arduino的G代码解释器原代码,来源于http://arduino.cc/forum/搜CNC
& p* O* S) L& b  ?8 g7 j我去年收集了许多程序,经过测试挑选出可以用,后来没时间继续研究学习,现在发: k) _& N9 N8 n5 t
上来给有用的朋友参考
, _# S& [# P7 u8 `  j* _下面是其中的小段源码
1 ^, R) U% q4 |! ]- t1 \& ~//init our variables
2 v. [6 L6 A! A, Llong max_delta;
# [  a. K' N; M- a  v& Ilong x_counter;- a; P. p; F4 n2 d6 h
long y_counter;# G1 b. R1 y9 b' z& `% \, g
long z_counter;
/ [8 l( E- F7 g' I- nbool x_can_step;5 K% r/ I7 P4 I3 o1 O" `
bool y_can_step;! C% \0 n5 v( ^9 H% J8 D2 A8 y; G% J
bool z_can_step;
+ `6 q+ j* R+ [5 L1 Jint milli_delay;
& @. K1 _9 z+ `% z) x1 C, a8 Zvoid init_steppers()
- y5 \+ p( H- r: @7 z{
& `6 x' {9 {# H5 v6 I; C' z& p //turn them off to start.6 c+ _0 r  p* \7 i8 d1 J! ?  l, f
disable_steppers();
5 Q7 D7 g- j9 j: K0 j
( d$ {8 D8 U0 N1 k //init our points.. E! n' e9 Z, I6 W2 ]) f. `- q
current_units.x = 0.0;) U, ^8 G0 m8 Z" m, y7 L' a
current_units.y = 0.0;$ L7 y4 K/ d9 N" f$ L, g( {. Z' H
current_units.z = 0.0;, T; j1 m( n( u$ t8 t% O4 I3 O
target_units.x = 0.0;+ \7 b; V5 V$ X0 @' @- e$ F
target_units.y = 0.0;
& w' ?0 e8 `$ k. k, Q4 @8 ~ target_units.z = 0.0;
. ]( ]3 v4 @- d* X
) A6 D6 g( }- N3 g pinMode(X_STEP_PIN, OUTPUT);& b* o( I+ d, Z4 Z' [
pinMode(X_DIR_PIN, OUTPUT);- A8 l- S" m" R3 l; N$ P
pinMode(X_ENABLE_PIN, OUTPUT);+ w* Q) g+ X3 Y  O0 i7 j0 b" U
pinMode(X_MIN_PIN, INPUT);
' O" m: G% H& }% ]* {' n# H- `: m- B pinMode(X_MAX_PIN, INPUT);- s2 L7 l3 n) u  I
" u6 J  y9 Q1 J6 A: J, _- T" l1 o
pinMode(Y_STEP_PIN, OUTPUT);& R% Y0 Q2 J  I3 H) p4 k& b
pinMode(Y_DIR_PIN, OUTPUT);
- g% x' Z- g3 y: l2 m pinMode(Y_ENABLE_PIN, OUTPUT);% h+ v) o& q7 X0 P9 e. K' n
pinMode(Y_MIN_PIN, INPUT);
8 [5 s, i2 {- v, ]- q% b pinMode(Y_MAX_PIN, INPUT);) W( g( z( w, Y# l
, U( z- ?3 P; s& b- T
pinMode(Z_STEP_PIN, OUTPUT);% M: H( R& w: z6 W* {
pinMode(Z_DIR_PIN, OUTPUT);9 M+ V4 h9 Y  u+ ]- f. }( q- @
pinMode(Z_ENABLE_PIN, OUTPUT);
4 e) Y, u$ \1 a; l9 V& M' B pinMode(Z_MIN_PIN, INPUT);
1 a( P4 C( v. I; t& |- @ pinMode(Z_MAX_PIN, INPUT);
& \; `2 |+ S' v
5 V" \* ^: Q5 y+ B //figure our stuff.7 C% h& ?3 H* f4 f
calculate_deltas();
( p$ C# b( V( y* k! A, E  P}
0 z! v% d, _4 M* lvoid dda_move(long micro_delay)$ {' [, s) [5 y5 d
{/ U( E, d5 n2 J3 Y1 Y: A8 r6 W
//enable our steppers, e2 |/ v5 l, c: w2 P. ~
digitalWrite(X_ENABLE_PIN, HIGH);
4 a' ~; c, ^: d. }% {* M- ^ digitalWrite(Y_ENABLE_PIN, HIGH);
7 i; _' m7 Y" `, s  S3 B digitalWrite(Z_ENABLE_PIN, HIGH);# f6 j- r' H8 x# M; [" m7 @
$ b- H( ^: u8 H1 _
//figure out our deltas
6 R3 N, l. u; |/ E max_delta = max(delta_steps.x, delta_steps.y);
0 a. d  {! ~* l* x0 t max_delta = max(delta_steps.z, max_delta);1 X6 }5 W1 T4 ]2 H# v
//init stuff.' J5 U  [. a$ C3 ]  e
long x_counter = -max_delta/2;
% x* V6 e- l+ L6 o! k4 v  H2 @ long y_counter = -max_delta/2;
( d. O* N6 L1 ^. v- L) a; w( R long z_counter = -max_delta/2;1 ^$ I5 Z: X9 ]( J3 ?) _( l5 `' j

  T6 f4 Y& q- O4 t! C% l //our step flags0 I8 U/ [* y3 F' i/ m) f
bool x_can_step = 0;# X5 o( f# h; K8 J$ u7 R9 o
bool y_can_step = 0;5 ~$ f' q0 |5 m) Z( \
bool z_can_step = 0;$ W; \" a4 D, Q9 a& T

( f7 r; g' u/ T% K6 [  [" k if (micro_delay >= 16383)
, U" Q, |7 n6 L: N' u  milli_delay = micro_delay / 1000;% j1 ?4 B( L% e: m$ g; b
else6 Q7 t4 v+ N. T2 K' y/ c$ F8 \# U
  milli_delay = 0;
% v! A+ W" l2 J, k0 u
6 s, t& f9 y% q: {  W1 z
作者: 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
这个还没怎么接触过,楼主能详细解释解释吗
# R# C' e/ W( _' j; l3 z" h
作者: Kiss1212    时间: 2015-10-5 11:21
谢谢分享  
作者: 醉行者123    时间: 2016-1-19 18:07
不错




欢迎光临 机械必威体育网址 (//www.szfco.com/) Powered by Discuz! X3.4