|
本帖最后由 q1549445633 于 2016-1-15 20:20 编辑
在小车的基础上,加装红外避障模块,热释电传感器实现对移动暗哨的位置、周围是否有可疑人员的实时测量,并将测量数据传送至arduino芯片进行处理,然后由arduino芯片根据所检测的各种数据实现对电动车的智能控制。车上的蓝牙模块可以实现手机、电脑对小车的控制。
模仿守卫二十九棕榈村美海军陆战队空军基地的MDARS机器人。
红外避障模块,位于小车左右和中间的三个红外避障模块可以根据左右的障碍物情况来控制巡逻暗哨自动避障。
通过蓝牙模块可以将小车与手机、电脑连接起来,可以实现对小车的实时控制。这样可以再发现可以人员后由控制人员操控小车去进行追踪调查。
通过热释电模块,利用小车的灵活性和隐蔽性,检测无人时段某一区域是否有可疑人物出没,达到预警效果,本作品只是用了一个蜂鸣器模拟一个警报装置。
不过说啦,程序附录如下,大家交流一下,后期如何改进。。。。
#define IN1 4
#define IN2 5 //定义In1接arduino的4引脚,In2接5引脚
#define IN3 6
#define IN4 7 //定义IN3接arduino的6引脚,IN4接7引脚
#define jl 30
#include <Servo.h>
Servo myservo;//定义舵机变量名
int buzzer=10;
int zhw;
int yhw;
int zjhw;
int LedPin=13; //定义13接口为灯闪烁
int Echo_Pin=2;
int Trig_Pin=3; //定义超声波Echo接口和Trig接口
float cm; //定义cm为超声波距离,浮点类型
int i;
int j,m;
int k,rt;
int potpin=3;//定义模拟接口0;
void forward( );
void back( );
void turnLeft( );
void turnRight( );
void turnbackLeft( );
void turnbackRight( );
void turnLeftOrigin( );
void turnRightOrigin( );
void _stop(); //这里是把我们用到的函数都声明一遍
void setup()
{
pinMode(buzzer,OUTPUT);//设置数字IO脚模式,OUTPUT为辒出
pinMode(rt, INPUT);
Serial.begin(9600); //波特率为9600
pinMode(Trig_Pin, OUTPUT);
pinMode(Echo_Pin, INPUT);
pinMode(zhw, INPUT);
pinMode(yhw, INPUT);
pinMode(LedPin,OUTPUT); //定义LED8口为输出
myservo.attach(9);//定义舵机接口(9、10 都可以,缺点只能控制2 个)
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
}
/**************************************************
forward子函数——前进子函数
函数功能:控制车前进
**************************************************/
void forward( )
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW); //左轮前进
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW); //右轮前进
}
/**************************************************
back子函数——后退子函数
函数功能:控制车后退
**************************************************/
void back( )
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH); //左轮后退
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH); //右轮后退
}
/**************************************************
turnLeft子函数——左转子函数
函数功能:控制车左转
**************************************************/
void turnLeft( )
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW); //左轮静止不动
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW); //右轮前进
}
/**************************************************
turnbackLeft子函数——左后转弯子函数
函数功能:控制车左后转弯
**************************************************/
void turnbackLeft( )
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW); //左轮静止不动
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH); //右轮后退
}
/**************************************************
turnRight子函数——右后转弯转子函数
函数功能:控制车右转弯
**************************************************/
void turnRight( )
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW); //左轮前进
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW); //右轮静止不动
}
/**************************************************
turnbackRight子函数——右转子函数
函数功能:控制车右后转
**************************************************/
void turnbackRight( )
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH); //左轮后退
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW); //右轮静止不动
}
/**************************************************
turnLeftOrigin子函数——原地左转子函数
函数功能:控制车原地左转
**************************************************/
void turnLeftOrigin( )
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH); //左轮后退
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW); //右轮前进
}
/**************************************************
turnRightOrigin子函数——原地右转子函数
函数功能:控制车原地右转
**************************************************/
void turnRightOrigin( )
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW); //左轮前进
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH); //右轮后退
}
/**************************************************
stop子函数—停止子函数
函数功能:控制车停止
**************************************************/
void _stop()
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW); //左轮静止不动
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW); //右轮静止不动
}
void loop()
{
if(Serial.available())
{
i=Serial.read();
switch(i)
{
case'1':
{turnLeft( );
break;
}
case'2':
{forward( ); break;}
case'3':
{turnRight( );
break;}
case'4':
{turnLeftOrigin( );
break;}
case'5':
{_stop(); break;}
case'6':
{turnRightOrigin( );
break;}
case'7':
{turnbackLeft( ); break;}
case'8':
{back( ); break;}
case'9':
{turnbackRight( ); break;}
case'a':
{while(1)
{
zjhw=digitalRead(16);
zhw=digitalRead(15);
yhw=digitalRead(14);//读取前面的避障模块状态
if(zjhw==1)
{
forward();
}
else
{
if(yhw==0&&zhw==1)
{
turnLeft();
}
if(yhw==1&&zhw==0)
{
turnRight();
}
if(yhw==0&&zhw==0)
{
back( );
}
}
rt=analogRead(potpin);
if(rt==1)
{digitalWrite(buzzer,HIGH);//发声音
delay(1);//延时1ms
digitalWrite(buzzer,LOW);//不发声音
delay(1);//延时ms
}
j=Serial.read();
if(j=='1'||j=='2'||j=='3'||j=='4'||j=='5'||j=='6'||j=='7'||j=='8')break;
}
}
}
rt=analogRead(potpin);
if(rt==1)
{digitalWrite(buzzer,HIGH);//发声音
delay(1);//延时1ms
digitalWrite(buzzer,LOW);//不发声音
delay(1);//延时ms
}
}
}
蓝牙 自动避障 暗哨.zip
(1.77 KB, 下载次数: 92)
|
|