標題: Arduino XY軸上控制步進機轉動,煩請師傅們指點指點程序如何修改,謝謝! [打印本頁]
作者: jewelry21 時間: 2020-6-16 13:57
標題: Arduino XY軸上控制步進機轉動,煩請師傅們指點指點程序如何修改,謝謝!
本帖最后由 jewelry21 于 2020-6-17 15:03 編輯
小白最近在學習uno,用搖桿+28電機做實驗,邊學邊做,下面的程序能做到X軸上控制步進機轉動,如何實現在Y軸上也能控制一個電機呢?
這段程序沒有像其他的一樣用define來定義A0或A1,直接插線就成了,于是想著在后面也復制一段,改針腳什么的,改來改去驗證都不通過,想煩請師傅們提示一下如何修改?萬分感激!
//PS2搖桿控制X,Y方向各控制一個步進電機
int apin=8; //定義X軸電機使用8,9,10,11號針腳
int bpin=9;
int cpin=10;
int dpin=11;
int epin=4; //定義Y軸電機使用4,5,6,7號針腳
int fpin=5;
int gpin=6;
int hpin=7;
int delay1; //左拉搖桿時延時
int delay2; //右推搖桿時延時
int delay3; //上推搖桿時延時
int delay4; //下拉搖桿時延時
void setup()
{
pinMode(apin,OUTPUT); //關閉X軸電機
pinMode(bpin,OUTPUT);
pinMode(cpin,OUTPUT);
pinMode(dpin,OUTPUT);
pinMode(epin,OUTPUT); //關閉Y軸電機
pinMode(fpin,OUTPUT);
pinMode(gpin,OUTPUT);
pinMode(hpin,OUTPUT);
Serial.begin(9600); //開啟調試輸出,設定9600波特率
}
void loop()
{
int x;
int y;
x=map(analogRead(0),0,1023,0,254); //從A0讀取X軸搖桿隨機值
y=map(analogRead(1),0,1023,0,254); //從A1讀取Y軸搖桿隨機值
Serial.println(x); //以十進制形式輸出x的ASCII編碼值,并同時跟隨一個回車和換行符
Serial.println(y);
if (x>130);
{
int delay1=264-x;
digitalWrite(apin,HIGH);
delay(delay1);
digitalWrite(apin,LOW);
digitalWrite(bpin,HIGH);
delay(delay1);
digitalWrite(bpin,LOW);
digitalWrite(cpin,HIGH);
delay(delay1);
digitalWrite(cpin,LOW);
digitalWrite(dpin,HIGH);
delay(delay1);
digitalWrite(dpin,LOW);
Serial.print("264-");
Serial.print(x);
Serial.print("=");
Serial.println(delay1);
}
else if (x<115)
{
delay2=x+10;
Serial.print(x);
Serial.print("+10");
Serial.print("=");
Serial.println(delay2);
digitalWrite(apin,HIGH);
delay(delay2);
digitalWrite(apin,LOW);
digitalWrite(dpin,HIGH);
delay(delay2);
digitalWrite(dpin,LOW);
digitalWrite(cpin,HIGH);
delay(delay2);
digitalWrite(cpin,LOW);
digitalWrite(bpin,HIGH);
delay(delay2);
digitalWrite(bpin,LOW);
}
if (y>130);
{
int delay3=264-y;
digitalWrite(epin,HIGH);
delay(delay3);
digitalWrite(epin,LOW);
digitalWrite(fpin,HIGH);
delay(delay3);
digitalWrite(fpin,LOW);
digitalWrite(gpin,HIGH);
delay(delay3);
digitalWrite(gpin,LOW);
digitalWrite(hpin,HIGH);
delay(delay3);
digitalWrite(hpin,LOW);
Serial.print("264-");
Serial.print(y);
Serial.print("=");
Serial.println(delay3);
}
else if (y<115)
{
delay4=y+10;
Serial.print(y);
Serial.print("+10");
Serial.print("=");
Serial.println(delay4);
digitalWrite(epin,HIGH);
delay(delay4);
digitalWrite(epin,LOW);
digitalWrite(hpin,HIGH);
delay(delay4);
digitalWrite(hpin,LOW);
digitalWrite(gpin,HIGH);
delay(delay4);
digitalWrite(gpin,LOW);
digitalWrite(fpin,HIGH);
delay(delay4);
digitalWrite(fpin,LOW);
}
else if (110<x<130)
{
}
else if (100<y<130)
{
}
}
作者: jewelry21 時間: 2020-6-17 15:03
//PS2搖桿控制X,Y方向各控制一個步進電機
int apin=8; //定義X軸電機使用8,9,10,11號針腳
int bpin=9;
int cpin=10;
int dpin=11;
int epin=4; //定義Y軸電機使用4,5,6,7號針腳
int fpin=5;
int gpin=6;
int hpin=7;
int delay1; //左拉搖桿時延時
int delay2; //右推搖桿時延時
int delay3; //上推搖桿時延時
int delay4; //下拉搖桿時延時
void setup()
{
pinMode(apin,OUTPUT); //關閉X軸電機
pinMode(bpin,OUTPUT);
pinMode(cpin,OUTPUT);
pinMode(dpin,OUTPUT);
pinMode(epin,OUTPUT); //關閉Y軸電機
pinMode(fpin,OUTPUT);
pinMode(gpin,OUTPUT);
pinMode(hpin,OUTPUT);
Serial.begin(9600); //開啟調試輸出,設定9600波特率
}
void loop()
{
int x;
int y;
x=map(analogRead(0),0,1023,0,254); //從A0讀取X軸搖桿隨機值
y=map(analogRead(1),0,1023,0,254); //從A1讀取Y軸搖桿隨機值
Serial.println(x); //以十進制形式輸出x的ASCII編碼值,并同時跟隨一個回車和換行符
Serial.println(y);
if (x>130);
{
int delay1=264-x;
digitalWrite(apin,HIGH);
delay(delay1);
digitalWrite(apin,LOW);
digitalWrite(bpin,HIGH);
delay(delay1);
digitalWrite(bpin,LOW);
digitalWrite(cpin,HIGH);
delay(delay1);
digitalWrite(cpin,LOW);
digitalWrite(dpin,HIGH);
delay(delay1);
digitalWrite(dpin,LOW);
Serial.print("264-");
Serial.print(x);
Serial.print("=");
Serial.println(delay1);
}
else if (x<115)
{
delay2=x+10;
Serial.print(x);
Serial.print("+10");
Serial.print("=");
Serial.println(delay2);
digitalWrite(apin,HIGH);
delay(delay2);
digitalWrite(apin,LOW);
digitalWrite(dpin,HIGH);
delay(delay2);
digitalWrite(dpin,LOW);
digitalWrite(cpin,HIGH);
delay(delay2);
digitalWrite(cpin,LOW);
digitalWrite(bpin,HIGH);
delay(delay2);
digitalWrite(bpin,LOW);
}
if (y>130);
{
int delay3=264-y;
digitalWrite(epin,HIGH);
delay(delay3);
digitalWrite(epin,LOW);
digitalWrite(fpin,HIGH);
delay(delay3);
digitalWrite(fpin,LOW);
digitalWrite(gpin,HIGH);
delay(delay3);
digitalWrite(gpin,LOW);
digitalWrite(hpin,HIGH);
delay(delay3);
digitalWrite(hpin,LOW);
Serial.print("264-");
Serial.print(y);
Serial.print("=");
Serial.println(delay3);
}
else if (y<115)
{
delay4=y+10;
Serial.print(y);
Serial.print("+10");
Serial.print("=");
Serial.println(delay4);
digitalWrite(epin,HIGH);
delay(delay4);
digitalWrite(epin,LOW);
digitalWrite(hpin,HIGH);
delay(delay4);
digitalWrite(hpin,LOW);
digitalWrite(gpin,HIGH);
delay(delay4);
digitalWrite(gpin,LOW);
digitalWrite(fpin,HIGH);
delay(delay4);
digitalWrite(fpin,LOW);
}
else if (110<x<130)
{
}
else if (100<y<130)
{
}
}
作者: jewelry21 時間: 2020-6-17 15:05
請問師傅們能這么寫么,驗證的時候最后Y的else if報錯
| 歡迎光臨 (http://www.denmoz.com/bbs/) |
Powered by Discuz! X3.1 |