Arduino利用蓝牙远程操控舵机运转(Arduino+ZS040+电机)

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.本人在做实验时就接错了,结果导致只能发送不能接收

三、电机的接线及设置

直接上图,图片更简洁明了:
Arduino利用蓝牙远程操控舵机运转(Arduino+ZS040+电机)_第1张图片
接完所有先之后,就可以烧录代码啦:

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;
  }
}

注意:

  1. 首先在InPut设置的时候,注意是单引号,不能是双引号 。可能python敲多了,然后那天蓝牙传输的时候半天都运动不起来。后来发现,单引号才是表示字符,双引号表示字符串
  2. 手机蓝牙传输的时候,要注意传输的格式,有些蓝牙串口调试助手传输的是hex格式或ufd-8模式,一定要打开串口监视器看看,传输过来的是什么字符

大功告成!编写不易,大家成功后点个关注or赞谢谢~~

你可能感兴趣的:(嵌入式,人工智能,嵌入式硬件,arm,单片机,stm32)