当前位置:首页 > 名师导学 > 专家点拨 > 亮宁机器人巡线、测试综合程序分析

亮宁机器人巡线、测试综合程序分析

发表日期:2017-03-13 14:44:09文章编辑:信息管理员浏览次数: 标签:亮宁机器人    

     本程序包括三项功能:巡线,测光值和测试电机连线是否正确。

     一个程序中书写多项功能函数,需要使用哪个就屏蔽暂时不用的函数。具体分析看程序中的注释语句。

     整个程序运用于轨迹赛已足够!

#include  <LNDZ.h> 

int ll,l,r,rr,m,n,t=0;

 

lc lcd;

void init()

{

   B_start();          //按键(K2)启动程序

   lcd.begin(16,2);     //初始化液晶屏,为测试程序做准备,巡线时屏蔽

   lcd.bg(1);          //打开屏幕背景光,综线时关闭

   //motor(30,30);     //五眼巡线时需要这句,给机器人初始速度

   // delay(500); test();            //0.5秒延时,隔离上次按键动作,测试光值

}

void check()           //巡线时不断测量光值

{

   ll=AR(3)>644;      //各光值分界点。时间和空间改变,请重新测量

   l=AR(1)>605;

   m=0;  // =AR(0)>610;   //四眼与五眼的不同之处

   r=AR(2)>622;

   rr=AR(4)>640;

   n=ll+l+m+r+rr;         //求和简化条件的书写

}

void find()                //巡线函数

{  

   check();               //函数中调用测值函数

   motor(30,30);          //四眼巡线时需要,五眼巡线去掉这句。轨迹较直时,加大速度

   if (ll==1) motor(-70,70);   //轨迹较直时减小速度  

   if (l==1) motor(0,50);     //机器人左右摇摆厉害时,减小速度

   //if (m==1) motor(50,50);  //五眼巡线时需要

   if (r==1) motor(50,0);      

   if (rr==1) motor(70,-70);

}

void display(int ll1,int l1,int m1,int r1,int rr1,char c)

{

   lcd.clear();          //清除上次的显示内容

   lcd.print(c);

   lcd.print(ll1);lcd.print(" ");  lcd.print(l1);lcd.print(" ");

   lcd.print(r1);lcd.print(" ");  lcd.print(rr1);

   //lcd.setCurrsor(1,1); lcd.print(m1); //五眼时用,注意顺序,这个是0端口号的值

   delay(300);

}

void test()             //测光值函数

{

int ll_w,l_w,m_w,r_w,rr_w;  //定义白色区临时变量名

int ll_b,l_b,m_b,r_b,rr_b;   //定义黑色区临时变量名

while (DR(48)==1)         //没有按下K2时,48号口为1

                     //按下K2前,先放白色区域内

    ll_w=AR(3); l_w=AR(1); m_w=AR(0); r_w=AR(2); rr_w=AR(4);

    display(ll_w,l_w,m_w,r_w,rr_w,w);     //W表示没白色值

delay(500);         //防止按键被重复读取

while (DR(48)==1)   //五眼均放黑色区上

{

   ll_b=AR(3); l_b=AR(1); m_b=AR(0); r_b=AR(2); rr_b=AR(4);

   display(ll_b,l_b,m_b,r_b,rr_b,b);      //B表示没黑色值

}

ll=(ll_w+ll_b)/2;l=(l_w+l_b)/2;      //用机器人求平均值

r=(r_w+r_b)/2;rr=(rr_w+rr_b)/2;

//r=(m_w+m_b)/2;

display(ll,l,m,r,rr,p);               //测试完成 P表示平均值

}

void motor_test()

{

motor(30,0); delay(1000); //左轮正转,方向反,红黑线对换;左右反,则左右双线对换 

motor(-30,0);  delay(1000);

    motor(0,30);  delay(1000);

    motor(0,-30);  delay(1000);

}

void way()          //十字路口处理函数

{

   if (n>2)          //简单判断十字路口的条件

   {

      t++;          //路口计数

      if (t==1)

      {

         motor(50,50) ;delay(80);    //1号路口直行,时间尽量短,能越过路口即可

      }

      if (t==2)

      {

        motor(-50,50);delay(300);  //2号路口左拐,转弯时间长短以机器人能转到能找到

      }                       //下一条垂直的线为止,右转类似

      if (t==10)                

      {

          motor(0,0); while(1); //delay(9000); //用两句中一句,可防止机器人重新启动

      }

   }

}

void repeat()

{

   find();         //调用巡线函数,需要使用某函数时,就去掉前面的“//”。

   //motor_test();  //调用测试电机函数

   way();

}

如没特殊注明,文章均为亮宁电子原创,转载请注明出处
相关新闻

浅析心理暗示在青少年行为教育中的作用(图文)

在与许许多多学生家长交流的过程中发现,不少家长都觉得孩子难管难教,特别是处于青春期的孩子,家长们更是感到头痛。所以,本文作者在这里发表个人看法,讨论一下心理暗示在教育孩...

日期:2019-04-24

不忘初心,方得始终

不忘初心,方得始终——对知识应用能力的执着追求 长沙市一中戴胜军 从事教师这行三十多年,我了解到许多教育教学中长期存在的不足和缺陷,也一直尝试用一己之力改变...

日期:2018-06-30

机器人教育中的责任心培养

本文已发表在《创意与发明》2016年第7期上在近年从事机器人教育教学工作中,我发现当代中小学生普遍存在责任心的缺失问题,引发了我对当前教育的担忧和诸多思考。一、缺失责任...

日期:2018-06-13

论中小学机器人教练员应该具备的基本素质

【摘 要】本文重在提示中小学机器人教练员建立必要的自信心和自我重塑,提出机器人教练员一些必须具备的基本素质,提醒可能成为机器人教练员的老师和目前处于探索阶段的机器...

日期:2018-03-19

亮宁机器人特有的符号系统(图文)

使用亮宁机器人的师生,可能注意到了这样一个特色,即亮宁机器人有自己特有的一套符号系统。如果还没有发现这一特色的师生,那我们就随本文来理解为什么我们要有这套特有的符号系...

日期:2018-01-19

亮宁可视化编程平台V2.2第6讲(图文)

第6讲 循环程序 我们先来看看顺序结构的程序实例。我们先用可视化系统设置如下: 上述设置的程序运行结果是八个LED灯同时被点亮。 我们看不出八个灯的点亮语句的顺序...

日期:2017-10-09