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