当前位置:首页 > 资源下载 > 资料下载 > 普及赛参考程序(图文)

普及赛参考程序(图文)

发表日期:2023-11-24 18:54:16文章编辑:信息管理员浏览次数: 标签:亮宁机器人,现场竞技,普及赛    

    为方便师生们修改,将程序分成很多段。while(x)中的x并没有别的意义,只是一种段落标志,只要 x 不是0,就和while(1)的意义相同。
#include <LNDZ.h>
twled led;
int ll,l,m,r,rr,n;
void check(){//传感器检测
  ll=AR(47)>400;//注意此处的黑背分界线和模拟口引脚编号
  l=AR(49)>400;
  m=AR(50)>400;
  r=AR(48)>400;
  rr=AR(46)>400;
  n=ll+l+m+r+rr;//求和方便判断同一时间有几个传感器检测到线
}
void find(){//黑线
   if (ll) motor(-50,50);
   else
   if (l) motor(0,50);
   else
   if (m) motor(50,50);
   else
   if (r) motor(50,0);
   else
   if (rr) motor(50,-50);
}
void findwhite(){//白线
   if (ll==0) motor(-50,50);
   else
   if (l==0) motor(0,50);
   else
   if (m==0) motor(50,50);
   else
   if (r==0) motor(50,0);
   else
   if (rr==0) motor(50,-50);
}
void setup() {
   B_start();
   motor(40,40);delay(200);//出发区出发
   while (1){
      check();find();
      if (rr+r==2||rr+m==2||n>2){//进入圆弧
         motor(40,40);delay(100);
         motor(40,-40);beep(300);
         break;
      }
   }
   while (2){
      check();find();
      if (n>3){//到达A点,停车一秒
          motor(0,0); beep(1000);
          break;
      }
   }
   motor(40,40);delay(100);//确保冲过A点
   
   String s="";//记录左右路口情况
   while (3){
      check();find();
      if (n>3){//到达b点停车,并开始亮灯
          motor(0,0);
          long tm=millis();//记录当前消耗的总时间
          while (millis()-tm<5000){//停车后开始亮灯5秒(双色同在)
            for (int i=0;i<5;i++){//遍历字符串,区分左右路口
                if (s[i]=='0') led.sw(i,Green);
            }
            delay(1);//1毫秒之后灭灯
            for (int i=0;i<5;i++){
                if (s[i]=='0') led.sw(i,0);
            }//利用闪烁(视觉残留)实现双色同在
            for (int i=0;i<5;i++){
                if (s[i]=='1') led.sw(i,Red);
            }
            delay(1);
            for (int i=0;i<5;i++){
                if (s[i]=='1') led.sw(i,0);
            }          
          }
          break;//结束“识别路口”任务
      }
      if (ll+l==0){
          s=s+'0';//字符0表示左路口
          motor(40,40);beep(120);
      }
      if (rr+r==0){
          s=s+'1';//字符1表示右路口
          motor(40,40);beep(120);
      }
   }
   motor(40,40);delay(100);
 
   //冲过B点
   while (4){
      check();find();
      if (n>3){//进入白线区域
          motor(40,40);beep(150);
          break;
      }
      if (rr+r==2){
          motor(30,30);delay(100);
          motor(40,-40);beep(300);
      }
   }
   int p=0;//记录白线路口
   while (5){//开始走白线
      check();findwhite();
      if (n<3){
         p++;
         if (p==1){
            motor(40,40);beep(150);
         }
         if (p==2){
            motor(30,30);delay(100);
            motor(40,-40);beep(300);
         }
         if (p==3){
            motor(40,40);beep(150);
            break;//到达C点,开始巡黑线
         }
      }
   }
   //此处省略推物程序,直接由C点走到D点
   p=0;//记录黑线路口
   while (6){
      check();find();
      if (n>3){
          p++;
          if (p==1){
              motor(30,30);delay(100);
              motor(40,-40);beep(300);
          }
          if (p==2){
              motor(40,40);beep(150);
          }
          if (p==3){
              motor(30,30);delay(100);
              motor(-40,40);beep(300);
          }
          if (p==4){
              motor(30,30);delay(100);
              motor(40,-40);beep(300);
              break;
          }
      }
   }
   p=0;
   while (7){
       check();find();
       if (n==0) p++; else p=0;
       //无路口(全白区域)检测
       if (p>400){//如果有超过400次检测,没有看到黑线认为到达D点
           motor(0,0);beep(800);//报警
           motor(50,-50);delay(450);//调头
           break;
       }
   }
   while(8){
      check();find();
      if (n>3){
          motor(30,30);delay(100);
          motor(40,-40);beep(300);
          break;
      }
   }
   long tm=millis();
   while (9){
      check();find();
      if (millis()-tm>4000){
      //巡线4秒后停车(进入了终止区)
          motor(0,0);
          break;
      }
   }
}
void loop() {}
 
如没特殊注明,文章均为亮宁电子原创,转载请注明出处
相关新闻

普及赛参考程序(图文)

#include <LNDZ.h> twled led; int ll,l,m,r,rr,n; void check(){//传感器检测 ll=AR(47)>400;//注意此处的黑背分界线和模拟口引脚编号 l=AR(49)>400; m=AR(50)>400;...

日期:2023-11-24

2024'现场竞技普及赛规则

为了引导中小学生正确对待机器人技术教育,把重点放在基础知识的获取和基本技能训练上,提高学生的学习积极性与主动性,鼓励学生多动手动脑和把机器人比赛变成真正的技能竞...

日期:2023-10-27

2024'全国中小学机器人现场竞技专项赛规则

中小学机器人竞赛,旨在引导更多的中小学生关注科技、热爱科技、走进科技,丰富中小学生学习生活,激发学生创新精神、培养学生的动手能力,提高学生的综合素质。为发挥竞...

日期:2023-10-27

下载报名表

下载报名表...

日期:2020-03-27

编程平台有奖试用

疫情期间,长沙亮宁电子技术有限公司采用远程合作模式,经过几位专家的通力合作,将亮宁机器人可视化平台升级至4.0版。在原有基础上作出了较大的改进,融进了全国各地师生提出的宝...

日期:2020-03-07

2020年科协机器人比赛规则(图文)

2020年科协机器人比赛规则.rar 897fe7aee7e5617668f18e15b6de996e.rar (4.37 MB)...

日期:2019-11-06