arduino小车(三):蓝牙控制

小车的蓝牙控制功能我们选择放在最后做,当时把蓝牙控制放在最后实现简直是再明智不过的决定!因为有前两天的经验积累,这次整个过程更顺利更流畅。

首先我们的思路很简单,就是用“switch”语句将小车的运动状态分为五种情况:“前进、停止、后退、左转、右转”。这就是我们在手机上用的对小车进行控制的软件
在之前我们也已经在手机上安装了几款用于与小车进行串口通信的软件,感觉上图中的软件对用户比较友好,操作界面也比较简洁,推荐此款软件蓝牙串口APP下载地址

  1. 软件安装完毕后,点击右上方“连接”连接arduino小车的蓝牙;
  2. 连接完毕后将软件切换为“键盘”模式。
  3. 在按钮文本处输入该按钮代表的功能;
  4. 将后面的选项改为字符,并输入该功能要发送的信息;

之后用写好的move函数针对小车不同的运动状态给move函数不同的参数。在这里小车转向我们采用的方案是让小车原地转向,即小车的两个轮子向不同的方向转动但转速相同。不知道是不是我们给的电压没达到的原因,当analogWrite()函数的第二个参数给到90以下时马达就不转了(我们用了四节南孚供电,电压在六伏左右)
我们用Serial.parseInt()函数来查找传入串行流中的下一个有效整数,即读取手机发送的指令。但在发送的过程中一直存在延时而且延时很明显,这个有点小瑕疵。
要注意的是因为信息传输存在延时,小车转向时的速度最好设置慢一点。不然很容易转过头。
蓝牙控制小车实现视频
以下为蓝牙控制实现代码:

int STBY = 11; //standby

int PWMA = 3; //Speed control 
int AIN1 = 23; //Direction
int AIN2 = 22; //Direction

int PWMB = 5; //Speed control
int BIN1 = 25; //Direction
int BIN2 = 24; //Direction
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  
}

void loop() {
  // put your main code here, to run repeatedly:
  int i;
  Serial.println("Hello World!");
  if(Serial.available())
  {
     i=Serial.parseInt();
  }
  Serial.println(i,DEC);
  switch(i)
  {
    case 2:
    {
      move(1,128,1);
      move(2,128,1);
      Serial.println("前进");
      break;
    }
    case 4:
    {
      move(1,90,1);
      move(2,90,0);
      Serial.println("左转");
      break;
    }
    case 6:
    {
      move(1,90,0);
      move(2,90,1);
      Serial.println("右转");
      break;
    }
    case 8:
    {
      move(1,128,0);
      move(2,128,0);
      Serial.println("后退");
      break;
    }
    case 5:
    {
      move(1,0,0);
      move(2,0,0);
      Serial.println("STOP!!!");
      break;
    }
  }
}






void move(int motor, int speed, int direction){
  
  digitalWrite(STBY, HIGH); //disable standby
  
  boolean inPin1 = HIGH;

  boolean inPin2 = LOW;

  if(direction == 1){
    inPin1 = LOW;
    inPin2 = HIGH;
  }

  if(motor == 1){
    digitalWrite(AIN1, inPin1);
    digitalWrite(AIN2, inPin2);
    analogWrite(PWMA, speed);
  }
  else{
    digitalWrite(BIN1, inPin1);
    digitalWrite(BIN2, inPin2);
    analogWrite(PWMB, speed);
  }

}

到此为止,arduino智能小车的三个分功能都已经实现了,之后我和搭档nidie会将三段功能代码整合在一起。并添加矩阵键盘,通过操作矩阵键盘选择三个功能中的一个让小车实现。
现在我的思路是用switch语句,通过读取矩阵键盘的数值,选择功能。而switch语句的位置应该放在arduinoIDE的配置文件中的main.cpp中。

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是Arduino小车和Matlab蓝牙通信控制的基本步骤: 1. 首先需要将蓝牙模块与Arduino板连接起来。可以使用HC-05或HC-06等常见蓝牙模块。 2. 然后需要在Arduino中编写程序,以接收来自Matlab的蓝牙数据,并根据接收到的指令控制小车的运动。以下是一个简单的示例程序: ``` #include <SoftwareSerial.h> SoftwareSerial bluetooth(2,3); // 使用软串口连接蓝牙模块 void setup() { Serial.begin(9600); // 初始化串口 bluetooth.begin(9600); // 初始化软串口 } void loop() { if (bluetooth.available()) { // 如果有数据可读取 char command = bluetooth.read(); // 读取指令 Serial.print("Command received: "); Serial.println(command); // 根据指令控制小车运动 if (command == 'F') { // 前进 // 控制左右轮向前转 } else if (command == 'B') { // 后退 // 控制左右轮向后转 } else if (command == 'L') { // 左转 // 控制左轮向后转、右轮向前转 } else if (command == 'R') { // 右转 // 控制左轮向前转、右轮向后转 } else if (command == 'S') { // 停止 // 停止左右轮运动 } } } ``` 3. 在Matlab中编写程序,以通过蓝牙Arduino发送指令。以下是一个简单的示例程序: ``` bluetooth = Bluetooth('HC-06', 1); % 连接蓝牙模块 % 发送指令控制小车运动 write(bluetooth, 'F'); % 前进 pause(1); write(bluetooth, 'L'); % 左转 pause(1); write(bluetooth, 'S'); % 停止 ``` 以上是基本的Arduino小车和Matlab蓝牙通信控制步骤,具体实现还需要根据自己的需求进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值