永发信息网

arduino 串口控制舵机

答案:2  悬赏:80  手机版
解决时间 2021-03-21 06:19
  • 提问者网友:那叫心脏的地方装的都是你
  • 2021-03-20 23:50
ARDUINO通过串口控制舵机.
两两控制,S1和S2一组,S3和S4一组.
case1,2,3,4是正常速度控制舵机
case 5,6,7,8 是慢速控制舵机...

tera term为通信软件, 当使用case 5,6,7,8时,一开始一切正常,差不多,2,3分钟吧,arduino板子似乎就无法响应命令了,需要重新upload一下,一切正常,然后2,3分钟又一样..
但是如果..去掉case 5,6,7,8只用1,2,3,4时,一切正常..!
.初次用arduino做串口通信....
希望各路大神指教
因字数限制,发一些代表性的code:
...
....
void loop()
{
if (Serial.available())
{
int key= Serial.read();
switch(key) {
case '1': //fast: S1,S2 down
S1.writeMicroseconds(400);
S2.writeMicroseconds(2100);
...
...
case '5': //slow: S1,S2 DOWN
var=0;
pwm1=1300;
pwm2=1300;
while(var<800) {
var=var+40;
pwm1=pwm1-40;
pwm2=pwm2+40;
S1.writeMicroseconds(pwm1);
S2.writeMicroseconds(pwm2);

}
最佳答案
  • 五星知识达人网友:爱难随人意
  • 2021-03-21 00:39
关于调速,
……
if (val == 'i')
{
servo1.attach(9);
for(i=0;i<165;i++)
{
servo1.write(i);
delay(50);//速度值,越大越慢
}
}
关于可控,
……
void loop()
{
if (Serial.available())
{
char val = Serial.read();
if (val == 's')
{
servo1.attach(9);
for(i=0;i<180;i++)
{
servo1.write(i);
if (Serial.read()=='e') break;
delay(5);
}
}
}
}
全部回答
  • 1楼网友:风格不统一
  • 2021-03-21 02:12
#include arduino自带的servo函数及其语句,先来介绍一下舵机函数的几个常用语句吧。 1、attach(接口)——设定舵机的接口,只有9或10接口可利用。 2、write(角度)——用于设定舵机旋转角度的语句,可设定的角度范围是0°到180°。 3、read()——用于读取舵机角度的语句,可理解为读取最后一条write()命令中的值。 4、attached()——判断舵机参数是否已发送到舵机所在接口。 5、detach()——使舵机与其接口分离,该接口(9或10)可继续被用作pwm接口。 注:以上语句的书写格式均为“舵机变量名.具体语句()”例如:myservo.attach(9)。 下面就来具体分析一个小程序。 #include //定义头文件,这里有一点要注意,可以直接在 arduino软件菜单栏单击sketch>importlibrary>servo,调用servo函数,也可以直接输入#include ,但是在输入时要注意在#include 与之间要有空格,否则编译时会报错。 servo myservo;//定义舵机变量名 void setup() { myservo.attach(9);//定义舵机接口,9或10 } void loop() { myservo.write(90);//设置舵机旋转的角度 }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯