1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 基于手机蓝牙的arduino遥控小车(实时红外避障)

基于手机蓝牙的arduino遥控小车(实时红外避障)

时间:2020-12-26 03:31:42

相关推荐

基于手机蓝牙的arduino遥控小车(实时红外避障)

小车整体图片

代码部分

//----------引脚设置----------//#define left_motor_Go 9 //左电机前进#define left_motor_Back 3 //左电机后退#define right_motor_Go 10 //右电机前进#define right_motor_Back 11 //右电机后退#define led1 7#define led2 8#define buzzer1 A0#define buzzer2 A3#define Hw A4 //定义红外 A4 接口//----------函数声明----------//void motor_init(void);//电机初始化void forward(void);//控制小车前进void back(void); //控制小车后退void turnRightforward(void);//控制小车右转void turnLeftforward(void);//控制小车左转void addSpeed(void);//加速void subSpeed(void);//减速void Stop(void);//控制小车停车void obstacleAvoidance(void);//避障//----------参数设置----------//int incomingByte = 0; // 传入的串行数据int first_speed = 150; //初速度int val;// val接收避障参数void setup(){Serial.begin(9600);motor_init();//电机初始化}void loop(){// 当接收数据时if (Serial.available() > 0) {//判断返回串口缓冲区中当前剩余的字符个数是否大于零// 读取传入的数据:incomingByte = Serial.parseInt();switch(incomingByte){case 1://前进{forward();break; }case 2://后退{back();break; }case 3://停{Stop(); break; }case 4://左转{turnLeftforward();delay(500); forward(); break; }case 5://右转{turnRightforward();delay(500); forward(); break; }case 6://加速{addSpeed(); break; }case 7://减速{subSpeed(); break; } case 8://停{Stop(); break; }}}val = digitalRead(Hw);obstacleAvoidance();}void motor_init(void){//电机初始化,两个电机需要四个PWM。pinMode (left_motor_Go,OUTPUT); //设置引脚为输出引脚pinMode (left_motor_Back,OUTPUT); //设置引脚为输出引脚pinMode (right_motor_Go,OUTPUT); //设置引脚为输出引脚pinMode (right_motor_Back,OUTPUT); //设置引脚为输出引脚//设定避障inputpinMode (Hw,INPUT); //设置红外传感器为输入pinMode (led1,OUTPUT);pinMode (led2,OUTPUT);analogWrite(led1,0);analogWrite(led2,0);}void obstacleAvoidance(void)//避障{if(val==1)//无障碍物 {analogWrite(led1,0);analogWrite(led2,0);analogWrite(buzzer1,0);analogWrite(buzzer2,0);}else if(val==0)//遇到障碍物{analogWrite(buzzer1,255);analogWrite(buzzer2,0);analogWrite(led1,255);analogWrite(led2,0); back();delay(1000);Stop();}else//异常情况{Stop();delay(1000);}}//----------小车动作----------//void forward(void){analogWrite(left_motor_Go,200);analogWrite(left_motor_Back,10);analogWrite(right_motor_Go,220); analogWrite(right_motor_Back,10); }void back(void){analogWrite(left_motor_Go,10);analogWrite(left_motor_Back,200);analogWrite(right_motor_Go,10); analogWrite(right_motor_Back,200); }void turnRightforward(void){analogWrite(left_motor_Go,250); analogWrite(left_motor_Back,10); analogWrite(right_motor_Go,150); analogWrite(right_motor_Back,10); }void turnLeftforward(void){analogWrite(left_motor_Go,150); analogWrite(left_motor_Back,10); analogWrite(right_motor_Go,250); analogWrite(right_motor_Back,10); }void addSpeed(void)//加速{analogWrite(left_motor_Go,250);analogWrite(left_motor_Back,10);analogWrite(right_motor_Go,250); analogWrite(right_motor_Back,10); }void subSpeed(void)//减速{analogWrite(left_motor_Go,150);analogWrite(left_motor_Back,10);analogWrite(right_motor_Go,150); analogWrite(right_motor_Back,10); }void Stop(void){analogWrite(left_motor_Go,10);analogWrite(left_motor_Back,10);analogWrite(right_motor_Go,10);analogWrite(right_motor_Back,10);}

硬件部分

红外模块

透明灯发出光线(不可见),黑色的接收

VCC接电源 GND接地(我们是接在面包板上了,uno板上不够用了

(现在回头发现没有必要…接在面包板上…是我傻了)

OUT接了A4端口

蜂鸣器和led灯避障报警模块

这里led灯正极接7 负极接8

蜂鸣器正极接A0 负极接A3

(因为用了两个端口 所以才说面包板上面的正负极没有用上)

(也不知道为什么要用两个端口)

#define led1 7#define led2 8#define buzzer1 A0#define buzzer2 A3

蓝牙模块

VCC接电源 GND接地

TXD接uno板上的RX RXD接uno板上的TX

电机

四个逻辑通道从左到右()分别接5、6、9、10

输出A接左边电机,输出B接右边电机

uno板接线如图

操作部分

下载一个蓝牙串口助手APP

这个自己网上查吧

细节部分

一开始我们小车转速总是很慢,必须推着才能走。

后来我们发现是电压不足,我们一开始用的是四块电池,但是加起来输出才6V,后来又加了一个充电宝(如图)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。