本帖最后由 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) { } } |