机械必威体育网址
标题:
基于电子积木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, L
long max_delta;
# [ a. K' N; M- a v& I
long 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- n
bool 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 J
int milli_delay;
& @. K1 _9 z+ `% z) x1 C, a8 Z
void 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* l
void 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 flags
0 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
else
6 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