昨天发了帖,不知怎么的,文件没有上传,今天重新发一个,该履带小车置三类传感器(闪光传感器在很低的光强下也会反应,不用的话可以不管或着注释掉),基于“探索者”平台和arduion编程环境。
Arduino源程序如下:
- //第二种转向方式——差速转向
- //本程序有个多余的Flash传感器,这是个光感传感器,只要有稍稍强的光,就会反应,不用可以注释掉它
- void setup()
- {
- pinMode(14,INPUT);
- pinMode(18,INPUT);
- pinMode(17,INPUT);
- pinMode(16,INPUT);
- pinMode( 9 , OUTPUT);
- pinMode( 10 , OUTPUT);
- pinMode( 5 , OUTPUT);
- pinMode( 6 , OUTPUT);
- }
- void loop()
- {
- int touch = digitalRead(14);
- int red_line_1=digitalRead(18);
- int red_line_2=digitalRead(16);
- int flash=digitalRead(17);
- if(touch==LOW) //触碰到障碍物
- {
- digitalWrite( 9 , LOW );
- digitalWrite( 10 , HIGH );
- digitalWrite( 5 , LOW );
- digitalWrite( 6 , HIGH );
- delay(3000);
-
-
-
- digitalWrite( 9 ,HIGH ); //只用写高电平那位,用analogWrite(引脚,转速)函数
- analogWrite(9,100);
- // digitalWrite( 10 , LOW );
- digitalWrite( 5 , HIGH );
- analogWrite(5,200);
- // digitalWrite( 6 , LOW );
- delay(2000);
- digitalWrite( 9 , HIGH );
- digitalWrite( 10 , LOW );
- digitalWrite( 5 , HIGH );
- digitalWrite( 6 , LOW );
- }
- if(touch==HIGH)
- {
- digitalWrite( 9 , HIGH );
- digitalWrite( 10 , LOW );
- digitalWrite( 5 , HIGH );
- digitalWrite( 6 , LOW );
- }
- if(red_line_1==LOW&&red_line_2==LOW) //两个都遇到障碍物后退一秒,往右转
- {
- digitalWrite( 9 , LOW );
- digitalWrite( 10 , HIGH );
- digitalWrite( 5 , LOW );
- digitalWrite( 6 , HIGH );
- delay(1000);
- digitalWrite( 9 ,HIGH ); //然后用第二种方法转向
- analogWrite(9,100);
- // digitalWrite( 10 , LOW );
- digitalWrite( 5 , HIGH );
- analogWrite(5,200); ////两个都遇到障碍物,转得厉害点
- // digitalWrite( 6 , LOW );
- delay(1500); //转向后要直走
- digitalWrite( 9 , HIGH );
- digitalWrite( 10 , LOW );
- digitalWrite( 5 , HIGH );
- digitalWrite( 6 , LOW );
- }
-
- if(red_line_1==0&&red_line_2!=0) //只有第一个灯检测到障碍物——左侧遇到障碍物,后退半秒,往右走/转
- {
- digitalWrite( 9 , LOW );
- digitalWrite( 10 , HIGH );
- digitalWrite( 5 , LOW );
- digitalWrite( 6 , HIGH );
- delay(500);
- digitalWrite( 9 ,HIGH );
- analogWrite(9,100);
- // digitalWrite( 10 , LOW );
- digitalWrite( 5 , HIGH );
- analogWrite(5,150);
- // digitalWrite( 6 , LOW );
- delay(1500); //延时后直走
- digitalWrite( 9 , HIGH );
- digitalWrite( 10 , LOW );
- digitalWrite( 5 , HIGH );
- digitalWrite( 6 , LOW );
- }
- if(red_line_1!=0&&red_line_2==0) //右侧红外灯检测到障碍物,往左走
- {
- digitalWrite( 9 , LOW );
- digitalWrite( 10 , HIGH );
- digitalWrite( 5 , LOW );
- digitalWrite( 6 , HIGH );
- delay(500);
- digitalWrite( 9 ,HIGH );
- analogWrite(9,150); //往左走就是把转速改下
- // digitalWrite( 10 , LOW );
- digitalWrite( 5 , HIGH );
- analogWrite(5,100);
- // digitalWrite( 6 , LOW );
- delay(1500); //延时后直走
- digitalWrite( 9 , HIGH );
- digitalWrite( 10 , LOW );
- digitalWrite( 5 , HIGH );
- digitalWrite( 6 , LOW );
- }
- if(flash==LOW)
- {
- digitalWrite( 9 ,LOW);
- digitalWrite( 10 ,HIGH );
- digitalWrite( 5 ,LOW );
- digitalWrite( 6 ,HIGH );
- delay(2000);
-
- digitalWrite( 9 ,HIGH );
- analogWrite(9,200);
- // digitalWrite( 10 , LOW );
- digitalWrite( 5 , HIGH );
- analogWrite(5,100);
- // digitalWrite( 6 , LOW );
- delay(1500);
- }
- }
复制代码
内含视频演示资料51hei提供下载:
arduion程序对履带小车的控制履带小车的控制.zip
(10.05 MB, 下载次数: 17)
|