arduino蓝牙小车实现控制程序开源代码

arduino蓝牙小车的实现

材料:

  • arduino uno 开发板
  • 蓝牙JDY-32
  • 四驱小车套件
  • 杜邦线若干
  • 3.7v电池两节

软件:

  • arduino IDE 开发平台在这里插入图片描述

  • 移动app----SPP(找了很多款,都搜索不到蓝牙,发现这款还好,一下子就连上了蓝牙)在这里插入图片描述

相关程序:

注:代码来源为引用相关博客加以修改和优化(pwm调速),以实现小车的控制。
在调试的过程中,也存在一些问题,比如小车的左右转有一些bug.

#define STOP      0
#define FORWARD   1
#define BACKWARD  2
#define TURNLEFT  3
#define TURNRIGHT 4

int leftMotor1 = 5;
int leftMotor2 = 6;
int rightMotor1 = 9;
int rightMotor2 = 10;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);//波特率9600
  pinMode(leftMotor1, OUTPUT);
  pinMode(leftMotor2, OUTPUT);
  pinMode(rightMotor1, OUTPUT);
  pinMode(rightMotor2, OUTPUT);
}

void loop()
{
  
  if(Serial.available()>0)//判断串口是否有数据
  {
    char cmd = Serial.read();//读取蓝牙模块发送到串口的数据   
    motorRun(cmd);//调用小车电机函数      
  }  
}
void motorRun(int cmd)
{
  switch(cmd){
     case'F':
      Serial.println("前进"); //输出状态
      analogWrite(leftMotor1,100);      
      analogWrite(leftMotor2,0);         
      analogWrite(rightMotor1,100);      
      analogWrite(rightMotor2,0);         
      delay(500);
      Stop();
      break;
     case'B':
      Serial.println("后退"); //
      analogWrite(leftMotor1,0);      
      analogWrite(leftMotor2,100);        
      analogWrite(rightMotor1,0);      
      analogWrite(rightMotor2,100); 
      delay(500);
      Stop();
      break;
     case 'L':
      Serial.println("左转"); //
      analogWrite(leftMotor1, 100);
      analogWrite(leftMotor2,200);
      analogWrite(rightMotor1, 200);
      analogWrite(rightMotor2, 100);
      delay(500);
      Stop();
      break;
     case 'l':    //原地左转
      analogWrite(leftMotor1,0);      
      analogWrite(leftMotor2,200);         
      analogWrite(rightMotor1,200);      
      analogWrite(rightMotor2,0); 
      Serial.println("右转"); 
      delay(500);
      Stop();
      break;
      case 'R':
      Serial.println("右转"); //
      analogWrite(leftMotor1, 200);
      analogWrite(leftMotor2, 100);
      analogWrite(rightMotor1, 100);
      analogWrite(rightMotor2, 200);
      delay(500);
      Stop();
      break;
      case 'r':    //原地右转
      analogWrite(leftMotor1,200);      
      analogWrite(leftMotor2,0);         
      analogWrite(rightMotor1,0);      
      analogWrite(rightMotor2,200); 
      delay(500);
      Stop();
      break;
      default:
      
     
  }
}

void Stop(void)
{
  analogWrite(leftMotor1,0);      
  analogWrite(leftMotor2,0);         //左轮静止不动
  analogWrite(rightMotor1,0);      
  analogWrite(rightMotor2,0);         //右轮静止不动
  delay(100);
}
  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值