请选择 进入手机版 | 继续访问电脑版

【Arduino】超声波测距控制步进电机转动

[复制链接]
欣然自乐 发表于 2021-1-1 17:49:09 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
功能实现
超声波测距控制步进电机,当超声波检测隔断低于阈值隔断,电机转动;反之电机则不转动。
电路毗连

接线图

源代码及注释
  1. #include // 这里设置步进电机旋转一圈是多少步#define STEPS 100// attached to设置步进电机的步数和引脚Stepper stepper(STEPS, 8, 9, 10, 11);const int trig = 6; // 触发信号const int echo = 7; // 反馈信号// 界说变量用来存储汗青读数int length=10;//阈值隔断float S;void setup(){  Serial.begin(9600);  // 设置电机每分钟的转速为90步  stepper.setSpeed(90);  pinMode(8, OUTPUT);    //设置引脚为输出引脚  pinMode(9, OUTPUT);  pinMode(10,OUTPUT);  pinMode(11, OUTPUT);  pinMode(echo, INPUT);  pinMode(trig, OUTPUT);}void loop(){  long IntervalTime=0; //界说一个时间变量  while(1){  digitalWrite(trig, 1);//置高电平  delayMicroseconds(15);//延时15us  digitalWrite(trig, 0);//设为低电平  IntervalTime=pulseIn(echo, HIGH);//用自带的函数采样反馈的高电平的宽度,单位us  S=IntervalTime/58.00; //使用浮点盘算出隔断,单位cm  turntest();  S=0;IntervalTime=0;//对应的数值清零。  delay(500);//延时隔断决定采样的频率,根据实际需要变更参数  }}void stop(){   digitalWrite(8,LOW);   digitalWrite(9,LOW);   digitalWrite(10,LOW);   digitalWrite(11,LOW);   delay(2000);}void turntest(){if(S>length){  Serial.print("隔断过长:");  Serial.print(S);//通过串口输出隔断数值  Serial.println("  步进电机开始转动");  stepper.step(256);}else{  Serial.print("隔断:");  Serial.print(S);//通过串口输出隔断数值  Serial.println("  步进电机不转动转动");  stop();}}
复制代码
实验现象
超声波检测隔断小于阈值隔断,电机不转动


超声波检测隔断高于阈值隔断,电机转动



来源:https://blog.csdn.net/weixin_43319452/article/details/112006206
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

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

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )