找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1746|回复: 2
打印 上一主题 下一主题
收起左侧

Arduino XY轴上控制步进机转动,烦请师傅们指点指点程序如何修改,谢谢!

[复制链接]
跳转到指定楼层
楼主
ID:719553 发表于 2020-6-16 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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)
{
     
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:719553 发表于 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)
 {
     
 }
 
}
回复

使用道具 举报

板凳
ID:719553 发表于 2020-6-17 15:05 | 只看该作者
请问师傅们能这么写么,验证的时候最后Y的else if报错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表