- /*==================================================================
- (1)玩具扫雷避障小车实物一个
- (2)研究成果介绍书一份
- (3)小车能够行进,在行进的过程中能够检测前方金属物品(即为雷)并提示
- (4)小车可以调整行进的速度
- (5)小车行进的过程中能够规避前方的障碍
- (6)小车可以循迹黑线
- -------------------------------------------------------------
- 或者外部遥控,用lcd1602显示小车行进中排雷的总数
- -------------------------------------------------------------
- ===================================================================*/
- int UltrasonicRanging(int pinnum1,int pinnum2)//超声波测距
- {
- int readdate;
- pinMode(pinnum1,OUTPUT);
- pinMode(pinnum2,INPUT);
- digitalWrite(pinnum1,LOW);
- delayMicroseconds(2);
- digitalWrite(pinnum1,HIGH);
- delayMicroseconds(5);
- digitalWrite(pinnum1,LOW);
- readdate=pulseIn(pinnum2,HIGH);
- //一个简单的测量脉冲宽度的函数,默认单位是us
- readdate/=59;
- return readdate;
- }
- void voice()
- {
- for(int i=200;i<=800;i++) //用循环的方式将频率从200HZ 增加到800HZ
- {
- pinMode(4,OUTPUT);
- tone(4,i); //在四号端口输出频率
- delay(3);
- }
- delay(1000);
- for(int i=800;i>=200;i--)
- {
- pinMode(4,OUTPUT);
- tone(4,i);
- delay(6);
- }
- }
- boolean InfraredRanging(int pinNumber)//红外测距
- {
- pinMode(pinNumber, INPUT);
- return digitalRead(pinNumber);
- }
- boolean MetalDetection(int pinNumber)//金属探测
- {
- pinMode(pinNumber, INPUT);
- return digitalRead(pinNumber);
- }
- void motor(char pin,char pwmpin,char state,int val)
- //pin、pwnpin为端口、state为该轮子的状态、val调节速度
- {
- pinMode(pin,OUTPUT);
- if (state==1)//高
- {
- analogWrite(pwmpin,val);
- digitalWrite(pin,1);
- }
- else if (state==2)//低
- {
- analogWrite(pwmpin,val);
- digitalWrite(pin,0);
- }
- else if (state==0)//停
- {
- analogWrite(pwmpin,0);
- digitalWrite(pin,0);
- }
- }
- void runforward(int i)//前进
- {
- motor(4,5,1,i);
- motor(7,6,1,i);
- }
- void runback(int j)//后退
- {
- motor(4,5,2,j);
- motor(7,6,2,j);
- }
- void turnL(int m) //左转
- {
- motor(4,5,1,m);
- motor(7,6,0,m);
- }
- void turnR(int n)//右转
- {
- motor(4,5,0,n);
- motor(7,6,1,n);
- }
- void stop_z()//停
- {
- motor(4,5,0,0);
- motor(7,6,0,0);
- }
- void setup() {
-
- }
- void run_black()//走黑线
- {
- int num=0;//扫雷数量
- bool n1,n2; //1 左;2 右
- n1=digitalRead(9);
- n2=digitalRead(10);
- if (MetalDetection(13))
- {
- voice();
- num++;
- }
- if (UltrasonicRanging(4,5))find_obstacle();
- if(n1==1&&n2==1) while(1) stop_z();//终点
- if (n1==1) turnR(120);
- else if (n2==1) turnL(120);
- else runforward(120);
- }
- void find_obstacle()//发现障碍物
- {
- runback(120);
- delay(2000);
- turnL(120);
- delay(1000);
- runforward(120);
- delay(3000);
- turnR(120);
- delay(1000);
- }
- void loop()
- {
- while(1) run_black();
- }
复制代码 1、项目的研究内容
利用各种传感器实现机器对金属的感应,从而能够有效的提醒人们能够快速寻找并识别雷及类似物,并能有效的穿过区域。
2、预计突破或解决哪些技术难题
(1)传感器如何配合运转使得机器扫雷车有效运行。
(2)扫雷车使用什么结构能使扫雷车有效灵活改变方向。
(3)加固车身结构,当地形崎岖时,运动的扫雷车如何稳定车身结构以至于不会因为与地面撞击而产生较大损坏。
(4)在扫雷车调试运行中,会出现一些程序问题并将其如何解决,同时如何优化程序。
3、研究的创新点
(1)利用合理地车身结构来稳定车身,不至于因转向产生晃动。
(2)利用超声波传感器来避开障碍物,提高扫雷车的对地形的把控。
|