基于Arduino的蓝牙遥控智能小车

一.简介

通过蓝牙模块HC-05实现安卓端控制小车前进、后退、左转、右转、加速、减速、运动模式切换

二.原理

在这里插入图片描述

HC-05蓝牙模块:

HCO5是蓝牙串口模块,采用蓝牙2.0协议,可以与任何版本的蓝牙兼容通讯,与具有蓝牙的电脑,蓝牙主机,手机,PDA(掌上电脑),PSP(Personal Satfware Process)等终端配对。

1.参数:

供电电压:3.3V~5.0V
通信距离:10米
波特率: 支持波特率4800~13824000,默认波特率为9600

2.引脚说明:

RXD:接收端(连接Arduino的TXD端口
TXD:发送端(连接Arduino的RXD端口
VCC:供电端口(连接Arduino的+5V输出端口
GND:模块供电负极(连接Arduino的GND端口
KEY/EN:设置工作模式
1)工作模式:自动连接
2)AT指令设置模式:命令回应

3.注意事项:

只需连接RXD、TXD、VCC、GND四个端口,并且使用从机模式(被动连接)

三.源代码

//适用于4个轮的小车
//左轮
#define ENA 6
#define inPinA1 7
#define inPinA2 8
//右轮
#define ENB 5
#define inPinB1 12
#define inPinB2 13

int speedA = 160;//左轮
int speedB = 160;//右轮

int normalSpeed = 160;

int accelerate1 = 180;
int accelerate2 = 200;
int accelerate3 = 220;

int decelerate1 = 150;
int decelerate2 = 140;
//int decelerate3 = 130;

int mode = 1;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  
  pinMode(ENA, OUTPUT);
  pinMode(inPinA1,OUTPUT);
  pinMode(inPinA2,OUTPUT);
  
  pinMode(ENB,OUTPUT);
  pinMode(inPinB1,OUTPUT);
  pinMode(inPinB2,OUTPUT);

}

void loop() {
  // put your main code here, to run repeatedly:
  while(Serial.available())
  {
    char signalChar = (char)Serial.read();
    Serial.println(signalChar);
    if(signalChar == 'L')
    {
     //左转
      forwardLeft(speedB);
    }
    else if(signalChar == 'R')
    {
      //右转
      forwardRight(speedA);
    }
    else if(signalChar == 'U')
    {
      //前进
      forwardPwm(speedA,speedB);
    }
    else if(signalChar == 'D')
    {
      //后退
      backwardPwm(speedA,speedB);
    }
    else if(signalChar == 'S')
    {
      //停止
      speedA = normalSpeed;
      speedB = normalSpeed;
      mode = 1;
      stop();
    }
    else if(signalChar == 'A')
    {
      speedA = accelerate1;
      speedB = accelerate1;
    }
    else if(signalChar == 'B')
    {
      speedA = accelerate2;
      speedB = accelerate2;
    }
    else if(signalChar == 'C')
    {
      speedA = accelerate3;
      speedB = accelerate3;
    }
    else if(signalChar == 'D')
    {
      speedA = decelerate1;
      speedB = decelerate1;
    }
    else if(signalChar == 'E')
    {
      speedA = decelerate2;
      speedB = decelerate2;
    }
    else if(signalChar == 'F')
    {
      //模式选择
      mode = 2;
    }

    if(mode == 2)
    {
      //延时500ms后停止
      delay(500);
      stop();
    }
  }
}

//PWM调节正转速度
void forwardPwm(int valueA,int valueB)
{
  forwardPwmA(valueA);
  forwardPwmB(valueB);
}

//右轮
void forwardPwmA(int value)
{
  analogWrite(ENA, value);
  digitalWrite(inPinA1,LOW);
  digitalWrite(inPinA2,HIGH);
}
//左轮
void forwardPwmB(int value)
{
  analogWrite(ENB, value);
  digitalWrite(inPinB1,LOW);
  digitalWrite(inPinB2,HIGH);
}

//停止
void stop()
{
  stopA();
  stopB();
}

void stopA()
{
  analogWrite(ENA, HIGH);
  digitalWrite(inPinA1,LOW);
  digitalWrite(inPinA2,LOW);
}

void stopB()
{
  analogWrite(ENB, HIGH);
  digitalWrite(inPinB1,LOW);
  digitalWrite(inPinB2,LOW);
}

//value:0~255
//PWM调节反转速度
void backwardPwm(int valueA,int valueB)
{
  backwardPwmA(valueA);
  backwardPwmB(valueB);
}

void backwardPwmA(int value)
{
  analogWrite(ENA, value);
  digitalWrite(inPinA1, HIGH);
  digitalWrite(inPinA2, LOW);
}

void backwardPwmB(int value)
{
  analogWrite(ENB, value);
  digitalWrite(inPinB1, HIGH);
  digitalWrite(inPinB2, LOW);
}

//左转 A反转 B正转
void forwardLeft(int value)
{
  //stopB();
  backwardPwmA(value);
  forwardPwmB(value);
}

//右转 A正转 B反转
void forwardRight(int value)
{
  //stopA();
  backwardPwmB(value);
  forwardPwmA(value);
}

四.运行效果

在这里插入图片描述

1)控制效果

通过手机端蓝牙调试软件 控制小车前进、后退、左转、右转、加速、减速、运动模式切换。

2)手机端蓝牙控制app

在这里插入图片描述
通过关注下方微信公众号电子设计研习社》后,回复“蓝牙调试软件”,获取免费软件下载链接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码客_人工智能创客高级指导师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值