Arduino蓝牙远程操控舵机运转(Arduino+ZS-040 or HC-05+电机)
- 一、效果内容
- 二、ZS-040蓝牙设置
- 三、电机的接线及设置
- 大功告成!编写不易,大家成功后点个关注or赞谢谢~~
一、效果内容
利用手机蓝牙串口调试助手,远程操控两个舵机的运转。还没有使用PWM调速,但是可以实现前进,后退,左右转的功能。利用延迟时间差来实现断续操控。而不是使它一直同个方向运动。话不多说下面整活。(创作不易,希望各位点个赞,有问题欢迎评论区交流)
二、ZS-040蓝牙设置
此处参考另一位博主文章(在此感谢):Arduino使用HC-05蓝牙模块与手机连接
同时ZS-040的操作和HC-05操作一样,按照这篇文章一样可以完成
给大家发一个别人分享的蓝牙串口调试助手:蓝牙串口调试助手(记得在操控界面设置上下左右对应发送的字母)
注意:
1.连接线时,蓝牙段的RXD端口要连接UNO上的TX->1端口
2.蓝牙段的TXD端口要连接UNO上的RX->0端口
3.本人在做实验时就接错了,结果导致只能发送不能接收
三、电机的接线及设置
直接上图,图片更简洁明了:
接完所有先之后,就可以烧录代码啦:
int N1 = 5; // 定义Uno端口5向N1输出
int N2 = 6; // 定义Uno端口6向N2输出
int N3 = 9; // 定义Uno端口9向N3输出
int N4 = 10; // 定义Uno端口10向N4输出void Stop()
{//Stop 停止digitalWrite(N1,LOW);digitalWrite(N2,LOW); digitalWrite(N3,LOW);digitalWrite(N4,LOW); delay(1000); //延时1秒Serial.print("Stop!!");
}void Forward()
{//forward 向前转digitalWrite(N1,HIGH); //给高电平digitalWrite(N2,LOW); //给低电平digitalWrite(N3,HIGH); //给高电平digitalWrite(N4,LOW); //给低电平delay(1000); //延时1秒Serial.print("Forward!!");Stop();
}void Left()
{//Left 向左转digitalWrite(N1,HIGH); //给高电平digitalWrite(N2,LOW); //给低电平digitalWrite(N3,LOW); //给高电平digitalWrite(N4,LOW); //给低电平delay(1000); //延时1秒Serial.print("Left");Stop();
}void Right()
{//Right 向右转digitalWrite(N1,LOW);digitalWrite(N2,LOW); digitalWrite(N3,HIGH);digitalWrite(N4,LOW); delay(1000); //延时1秒 Serial.print("Right"); Stop();
}void setup()
{
Serial.begin (9600);
//初始化各IO,模式为OUTPUT 输出模式
pinMode(N1,OUTPUT);
pinMode(N2,OUTPUT);
pinMode(N3,OUTPUT);
pinMode(N4,OUTPUT);}void loop()
{if (Serial.available()) {char InPut = Serial.read();if(InPut == 'f'){//forward 向前转Forward();}if(InPut == 's'){//stop 停止Stop();} if(InPut == 'l'){//forward 向左转Left();}if(InPut == 'r'){//back 向右转Right();} InPut=0;}
}
注意:
- 首先在InPut设置的时候,注意是单引号,不能是
双引号。可能python敲多了,然后那天蓝牙传输的时候半天都运动不起来。后来发现,单引号才是表示字符,双引号表示字符串 - 手机蓝牙传输的时候,要注意传输的格式,有些蓝牙串口调试助手传输的是hex格式或ufd-8模式,一定要打开串口监视器看看,传输过来的是什么字符