Hello ! I engaged CNC not so long and faced with the fact that the program provides a signal format step / dir, and I does not found that I needed for my controller, but it is for arduino mega 2560 mach3を使ってみた - 北の国から電子工作(仮) Can I change the code for arduino UNO?
I am a novice, it is difficult for me
/*MP4401?FET??????????MACH3??????Ardunio??????????
Dsub25Pin???step/dia???Arduino?????MP4401??????????
????????????????XYZ?????????
0?5?STEP/dia×3?????6?17??????(4PIN*3=12PIN),18&19???
???????x??y????????????????????????????????
???loop???????????????????????????????mach????????????????
*/
#define X1 17//?????????
#define Y1 14
#define lX1 16
#define lY1 15
#define X2 13
#define Y2 10
#define lX2 12
#define lY2 11
#define X3 9
#define Y3 6
#define lX3 8
#define lY3 7
#define X_step 3
#define X_dia 4
#define Y_step 2
#define Y_dia 5
#define Z_step 0
#define Z_dia 1
//---------------------------------------------------------------------------------------------------------*/
//setup------------------------------------------------------------------------
void setup()
{
pinMode(X1,OUTPUT);
pinMode(lX1,OUTPUT);
pinMode(Y1,OUTPUT);
pinMode(lY1,OUTPUT);
pinMode(X2,OUTPUT);
pinMode(lX2,OUTPUT);
pinMode(Y2,OUTPUT);
pinMode(lY2,OUTPUT);
pinMode(X3,OUTPUT);
pinMode(lX3,OUTPUT);
pinMode(Y3,OUTPUT);
pinMode(lY3,OUTPUT);
pinMode(18,INPUT);
pinMode(19,INPUT);
pinMode(X_dia,INPUT_PULLUP);
pinMode(X_step,INPUT_PULLUP);
pinMode(Y_dia,INPUT_PULLUP);
pinMode(Y_step,INPUT_PULLUP);
pinMode(Z_dia,INPUT_PULLUP);
pinMode(Z_step,INPUT_PULLUP);
//???????
driveXp();
driveYp();
driveZp();
delay(1000);
driveXp();
driveYp();
driveZp();
delay(1000);
driveXp();
driveYp();
driveZp();
delay(1000);
driveXp();
driveYp();
driveZp();
delay(1000);
//???????
attachInterrupt(1, X_FALLING, FALLING);
attachInterrupt(0, Y_FALLING, FALLING);
}
void X_FALLING(){
if(digitalRead(X_dia))driveXp();
else driveXm();
}
void Y_FALLING(){
if(digitalRead(Y_dia))driveYm();
else driveYp();
}
//main-------------------------------------------------------------------------
void loop(){
/* if(!digitalRead(Z_step)){//LOW??
if(digitalRead(Z_dia)){
driveZp();
}
else{
driveZm();
}
while(!digitalRead(Z_step)){
}
}
*/
}
byte t1=1; //x?????????????
byte t2=1;//??????????????
byte t3=1;//z?????????????
//2???------------
void driveXp(){//p???????
switch(t1){//????
case 1:
digitalWrite(lY1,LOW);
digitalWrite(X1,HIGH);
t1=2;
break;
case 2:
digitalWrite(X1,LOW);
digitalWrite(Y1,HIGH);
t1=3;
break;
case 3:
digitalWrite(Y1,LOW);
digitalWrite(lX1,HIGH);
t1=4;
break;
case 4:
digitalWrite(lX1,LOW);
digitalWrite(lY1,HIGH);
t1=1;
break;
}
}
void driveXm(){//m????????
switch(t1){
case 1:
digitalWrite(lY1,LOW );
digitalWrite(lX1,HIGH);
t1=4;
break;
case 2:
digitalWrite(X1,LOW);
digitalWrite(lY1,HIGH);
t1=1;
break;
case 3:
digitalWrite(Y1,LOW);
digitalWrite(X1,HIGH);
t1=2;
break;
case 4:
digitalWrite(lX1,LOW);
digitalWrite(Y1,HIGH);
t1=3;
break;
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void driveYp(){
switch(t2){
case 1:
digitalWrite(lX2,LOW);
digitalWrite(X2,HIGH);
t2=2;
break;
case 2:
digitalWrite(lY2,LOW);
digitalWrite(Y2,HIGH);
t2=3;
break;
case 3:
digitalWrite(X2,LOW);
digitalWrite(lX2,HIGH);
t2=4;
break;
case 4:
digitalWrite(Y2,LOW);
digitalWrite(lY2,HIGH);
t2=1;
break;
}
}
void driveYm(){
switch(t2){
case 1:
digitalWrite(lY2,LOW );
digitalWrite(Y2,HIGH);
t2=4;
break;
case 2:
digitalWrite(X2,LOW);
digitalWrite(lX2,HIGH);
t2=1;
break;
case 3:
digitalWrite(Y2,LOW);
digitalWrite(lY2,HIGH);
t2=2;
break;
case 4:
digitalWrite(lX2,LOW);
digitalWrite(X2,HIGH);
t2=3;
break;
}
}
void driveZp(){
switch(t3){
case 1:
digitalWrite(X3,HIGH);
digitalWrite(lY3,LOW);
t3=2;
break;
case 2:
digitalWrite(Y3,HIGH);
digitalWrite(X3,LOW);
t3=3;
break;
case 3:
digitalWrite(lX3,HIGH);
digitalWrite(Y3,LOW);
t3=4;
break;
case 4:
digitalWrite(lY3,HIGH);
digitalWrite(lX3,LOW);
t3=1;
break;
}
}
void driveZm(){
switch(t3){
case 1:
digitalWrite(lX3,HIGH);
digitalWrite(lY3,LOW);
t3=4;
break;
case 2:
digitalWrite(lY3,HIGH);
digitalWrite(X3,LOW);
t3=1;
break;
case 3:
digitalWrite(X3,HIGH);
digitalWrite(Y3,LOW);
t3=2;
break;
case 4:
digitalWrite(Y3,HIGH);
digitalWrite(lX3,LOW);
t3=3;
break;
}
}
//----------------------------------------------------------------------------