查看: 1258|回复: 0

[未解决] arduino控制L298N黑线循迹

[复制链接]
  • TA的每日心情
    开心
    2018-5-29 13:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-5-29 17:50 | 显示全部楼层 |阅读模式
    https://www.arduino.cn/thread-3721-1-1.html(下面代码出处)

    下面我找到的一段代码,但是我不知道他的arduino与L298N之间的接线是怎样的,希望有大神可以指点指点
    void motor(char pin,char pwmpin,char state,int 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 runfoward(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,0);
    }
    void turnR(int n)      //右转
    {
      motor(4,5,0,0);
      motor(7,6,1,n);
    }
    void stop()            //停止
    {
      motor(4,5,0,0);
      motor(7,6,1,0);
    }
    void setup()
    {
      pinMode(10,INPUT);//定义右边传感器,
      pinMode(11,INPUT);//定义中间传感器,
      pinMode(12,INPUT);//定义左边传感器,  
      Serial.begin(9600);
    }
    void loop()
    {
      char num1,num2,num3;
      
      num1=digitalRead(12);
      num2=digitalRead(11);
      num3=digitalRead(10);  
      
       if((num1==0)&&num2&&num3)
       {
        turnL(120);          //检测到左边传感器遇到黑线,说明小车右偏了,立即往左转一点
        delay(2);
        while(1){
        num2=digitalRead(11);         //循环判断中间传感器度数,
        if(num2==1)
        {  turnL(120);                     //如果num2==1说明还没有转到中间位置,继续左转
         delay(2);}
         else
         break;                      //检测到num2==0说明转过头了,跳出循环,检测三个传感器的状态再做出相应动作
       }                                       //后面道理相同
       }   
         
      else if(num2&&num1&&(num3==0))
       {
        turnR(120);
        delay(2);
        while(1)
        {
         num2=digitalRead(11);
        if(num2==1){
          turnR(120);   
         delay(2);}
         else
          break;
        }
       }
      else
      {
        runfoward(120);
        delay(2);
      }
    }
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    《Color Unit免费申请试用》
    《Color Unit免费申请试用
    COLOR 是一款颜色识别 Unit,其内部集成TCS3472彩色光数字转换器,能够将其检测到颜色
    【干货分享】mega2560原理图PCB图纸altium designer18
    【干货分享】mega2560原理
    分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
    求助帖,ESP01S介入WS2812B,无法让灯
    求助帖,ESP01S介入WS2812
    看抖音暴改车间着迷,但是无法调试出氛围灯,新手,有没有大神帮忙解决一下,感谢 上
    完美解决同步开关状态 ,小爱同学+app+本地按键控制状态...
    完美解决同步开关状态 ,
    你有没有发现app上面的按键在操作完毕后你就不知道开关的状态了;或者小爱操作完毕后
    DW542驱动器控制42步进电机
    DW542驱动器控制42步进电
    求一个范例,或者现成的代码,控制42步进电机,实现控制转台转动,要求可以控制转台转
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表