找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3350|回复: 0
收起左侧

白标 小车寻迹程序

[复制链接]
ID:291454 发表于 2018-3-13 20:08 | 显示全部楼层 |阅读模式
int pin[3] = {A0, A4, A3};           //从左至右对应
int velocity = 210;                        //定义速率
byte value;
byte value_his = 0; //记录上一次的传感器值
void setup()
{
  pinMode( 5 , OUTPUT);//右
  pinMode( 6 , OUTPUT);
  pinMode( 9 , OUTPUT);
  pinMode( 10 , OUTPUT);

}

void loop()
{

   value = 0;
        for(int i=0; i<3; i++)
        {
            value |= (digitalRead(pin[i]) << i);
        }

        if(value == 0x00)
        { //当传感器都没有触发时默认为上一次的值
          value = value_his;
        }
        switch (value)
        {
          case 0x07: //全部触发
          Forwards();
          break;
          case 0x06: //触发右边两个
          while(!digitalRead(pin[1])){ //通过while 循环使小车回到跑道中间
          Right();
        }
        break;
        case 0x04: //触发右边一个
        while(!digitalRead(pin[1]))
        {
          Right();
        }
        break;
        case 0x03: //触发左边两个
          while(!digitalRead(pin[1]))
          {
            Left();
          }
        break;
        case 0x02: //触发中间一个
          Forwards();
          break;
        case 0x01: //触发左边一个
          while(!digitalRead(pin[1]))
          {
          Left();
          }
          break;


        }
        value_his = value;

  }

void Left()
{
analogWrite( 5 ,230);//左
analogWrite( 6 ,0 );
analogWrite( 9 ,240);
analogWrite( 10 , 0);
delay(1);
}

void Right()
{
analogWrite( 5 ,230);
analogWrite( 6 , 0 );
analogWrite( 9 ,220);
analogWrite( 10 ,0 );
delay(1);
}

void Forwards()
{
analogWrite( 5 ,240 );//左
analogWrite( 6 , 0 );
analogWrite( 9 ,220);
analogWrite( 10 ,0 );
delay(1);
}
void back()
{
analogWrite( 5 , 0 );
analogWrite( 6 ,230 );
analogWrite( 9 , 0 );
analogWrite( 10 ,255 );
delay(1);
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表