Arduino 寻迹程序——王洋

Arduino 单片机 四驱 四路红外寻线


下面为arduino单片机控制四驱四红外传感器的程序,没有揉合颜色传感器程序,后期会有GY-33匹配arduino的相应程序。更多的程序即黑带情况需要大家自行研究学习,下面只给出了简单的寻迹,更多详细内容如arduino引脚功能,程序主要关键字等。


  int l_go = 13 ;       // 左前电机 前进
  int l_back = 12 ;       // 后退
  
  int ll_go = 9 ;      //左后电机  前进
  int ll_back = 8 ;      //后退

  int r_go = 4 ;       // 右前电机  前进
  int r_back = 7 ;       //后退
  
  int rr_go = 2 ;      //右后电机   前进
  int rr_back = 3 ;      //后退
  
  int l_pwm =11  ;     // 左前电机 控速
  int ll_pwm = 10 ;     // 左后
   
  int r_pwm = 6  ;     // 左后电机 控速
  int rr_pwm = 5  ;     // 右后

  const int x1 = A0 ;    // x1 x2 x3 x4 红外传感
  const int x2 = A1 ;   //  A1 接传感器的 X2
  const int x3 = A2 ;   //  _____
  const int x4 = A3 ;   //  _____

  int l1 ;       //
  int l2 ;       //
  int l3 ;       //
  int l4 ;       //

void setup()          // 端口初始化函数

{  

  Serial.begin(9600);  // 可认为 为数据传输速度

  pinMode( l_go ,  OUTPUT  );  
  pinMode( ll_go ,  OUTPUT  );
  pinMode( l_back ,  OUTPUT  );
  pinMode( ll_back ,  OUTPUT  );
 
  pinMode( r_go,  OUTPUT  );
  pinMode( rr_go ,  OUTPUT  );
  pinMode( r_back ,  OUTPUT  );
  pinMode( rr_back ,  OUTPUT  );

  pinMode(r_pwm, INPUT);
  pinMode(rr_pwm, INPUT);
  pinMode(r_pwm, INPUT);
  pinMode(rr_pwm, INPUT);
   
   pinMode ( l1 , INPUT );
   pinMode ( l2 , INPUT );
   pinMode ( l3 , INPUT );
   pinMode ( l4 , INPUT );

   digitalWrite ( l1 ,  HIGH ) ;
   digitalWrite ( l2 ,  HIGH ) ;
   digitalWrite ( l3 ,  HIGH ) ;
   digitalWrite ( l4 ,  HIGH ) ;
}


void Go ( int l_speed , int ll_speed , int r_speed , int rr_speed )    // 向前走

{
  digitalWrite ( l_go , HIGH ) ;
  digitalWrite ( l_back , LOW  ) ;
  analogWrite  ( l_pwm , l_speed ) ;
 
  digitalWrite ( ll_go , HIGH ) ;
  digitalWrite ( ll_back , LOW  ) ;
  analogWrite  ( ll_pwm , ll_speed ) ;

  
  digitalWrite ( r_go , HIGH ) ;
  digitalWrite ( r_back , LOW  ) ;
  analogWrite  ( r_pwm , r_speed ) ;
  
  digitalWrite ( rr_go , HIGH ) ;
  digitalWrite ( rr_back , LOW  ) ;
  analogWrite  ( rr_pwm , rr_speed ) ; 
  
}

void Back ( int l_speed,int ll_speed ,int r_speed ,int rr_speed )     // 往后走

 {
  digitalWrite ( l_go , LOW ) ;
  digitalWrite ( l_back , HIGH ) ;
  digitalWrite ( ll_go , LOW ) ;
  digitalWrite ( ll_back , HIGH) ;
 
  analogWrite  ( l_pwm , l_speed ) ;
  analogWrite  ( ll_pwm , ll_speed ) ;

 
 
  digitalWrite ( r_go , LOW  ) ;
  digitalWrite ( r_back , HIGH  ) ;
  digitalWrite ( rr_go , LOW  ) ;
  digitalWrite ( rr_back , HIGH ) ;
  
  analogWrite  ( r_pwm , r_speed ) ;
  analogWrite  ( rr_pwm , rr_speed ) ;
}


/
void wheel_90( )  //  **90度转弯函数** **以及半圆弧函数**
{
  //省略
}
/




void loop ()  // 主函数  无限循环
{
    l1 = digitalRead (x1);    //灯灭  HIGH 没扫到黑带
    l2 = digitalRead (x2);  
    l3 = digitalRead (x3);
    l4 = digitalRead (x4);
//
//以下只罗列个别情况,具体情况参赛者自行分析。只提供思路。
//
if ( l2 == HIGH && l1 == LOW && l3 == LOW && l4 == HIGH )   //直走
      {
         Go ( 100 ,100 ,100 ,100 ) ; 
         delay (100); 
      }
if ( l2 == LOW && l1 == LOW && l3 == HIGH && l4 == HIGH )     //左微转 
      {
         Go ( 80 ,80 ,100 ,100 ) ;  
      }
if ( l2 == HIGH && l1 == HIGH  && l3 == LOW && l4 == LOW )    //右微转  
      {
        Go ( 100 ,100 ,80 ,80 ) ;  
      }

  }



娱乐:
void wheel_w ( int l_speed,int ll_speed ,int r_speed ,int rr_speed ) // 原地旋转函数
{
  digitalWrite ( l_go , HIGH ) ;
  digitalWrite ( l_back , LOW ) ;
  digitalWrite ( ll_go , HIGH ) ;
  digitalWrite ( ll_back , LOW ) ;
 
  analogWrite  ( l_pwm , l_speed ) ;
  analogWrite  ( ll_pwm , ll_speed ) ;

  digitalWrite ( r_go , LOW  ) ;
  digitalWrite ( r_back , HIGH  ) ;
  digitalWrite ( rr_go , LOW  ) ;
  digitalWrite ( rr_back , HIGH ) ;
  
  analogWrite  ( r_pwm , r_speed ) ;
  analogWrite  ( rr_pwm , rr_speed ) ;
}

颜色模块后续…

  • 9
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Arduino寻迹小车是一种基于Arduino开发板的智能小车,它可以通过传感器识别地面上的黑线,自动跟踪移动。这种小车可以用来实现很多有趣的项目,比如智能巡线,仓库自动化管理等。 Arduino寻迹小车需要用到红外线传感器,这种传感器可以通过反射亮度的变化来检测黑线。传感器最常用的安装方式是旋转地面,发射器和接收器交替排列。当地面上有黑线时,传感器会检测到亮度的变化,从而确定线的位置。然后通过控制小车的电机,让小车保持在线路上移动。 实现Arduino寻迹小车的关键是编写合适的程序。这个程序可以用Arduino IDE编写,通常分为两部分:线路识别和小车控制。线路识别部分需要读取传感器的数据,并根据数据判断线的位置。根据判断结果,我们可以决定小车的移动方向。小车控制部分需要根据线路识别的结果,控制小车的电机以保持在线路上移动。在控制电机时,应该保持合适的速度和方向,同时避免产生抖动和奔跑。 除了基本的线路识别和小车控制以外,Arduino寻迹小车还可以加入其他的功能来增强其性能。比如,我们可以增加避障传感器来让小车能够避开障碍物。我们还可以加入蜂鸣器和LED灯,在遇到特定情况时发声或闪烁,提醒用户。总之,Arduino寻迹小车是一个可以很好地锻炼程序设计能力和机械动手能力的项目,同时也很有趣。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值