完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
大家好,我在用arduino编程的时候出了一点问题,我想用两个超声波传感器的距离之差控制舵机的转向,程序应该是一直循环的,可是程序只执行一次,哪位能帮忙解答一下吗?下面是我写的程序
#include Servo myservo; float df, db, num; //df,db,分别代表两个超声波测量的距离 void set_sr04(int trigpin, int echopin) //端口初始化 { pinMode(trigpin, OUTPUT); pinMode(echopin, INPUT); } float get_sr04(int trigpin, int echopin) //计算距离 { float distance; digitalWrite(trigpin, 0); delayMicroseconds(2); digitalWrite(trigpin, 1); delayMicroseconds(10); digitalWrite(trigpin, 0); distance = pulseIn(echopin, 1) / 58.0; return distance; } void setup() { Serial.begin(9600); set_sr04(4, 5); set_sr04(6, 7); myservo.attach(9); } float difference() //前后距离差 { Serial.println("front"); df = get_sr04(4, 5); Serial.println(df); Serial.println("between"); db = get_sr04(6, 7); Serial.println(db); return df - db; } void loop() { num = difference(); //根据num的值控制舵机的转向 if (num < -1.0) { myservo.write(85); while (num < -0.3) myservo.write(90); } if (num > 1.0) { myservo.write(105); while (num > 0.3) myservo.write(90); } delay(200); } |
|
相关推荐
4个回答
|
|
楼主,善用Serial.println()做调试啊,你这代码要调试一下才容易看出来,目测不容易做到啊
|
|
|
|
如果我没说错的话,你发的程序不够完整!我已经看出一点端倪了,可惜程序不够完整,不能判断是否正确,帮不到你了。
|
|
|
|
可以在程序中使用串口的显示功能,实时输出变量数据
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
WIO Terminal +MCP2515 实现车辆OBD的速度监控
10360 浏览 0 评论
60659 浏览 77 评论
5955 浏览 3 评论
一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
36025 浏览 219 评论
10023 浏览 0 评论
484浏览 1评论
请教:esp32中用u8g2显示shtc3传感器数据到i2c液晶屏,显示不稳定的问题
1237浏览 1评论
1383浏览 1评论
597浏览 0评论
715浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 16:36 , Processed in 0.618360 second(s), Total 88, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号