📄 判断颜色.cpp
字号:
//////uchar LC=0,RC=0; //全局变量,检测左右颜色
/*sbit LW=P1^6; //左边检测白色的光电管(LEFT WHITE)
sbit LR=P1^4; //左边检测红色的光电管(LEFT RED)
sbit LB=P3^2; //左边检测蓝色的光电管(LEFT BLUE)
sbit RW=P1^7; //右边检测白色的光电管(RIGHT WHITE)
sbit RR=P1^5; //右边检测红色的光电管(RIGHT RED)
sbit RB=P3^3; //右边检测蓝色的光电管(RIGHT BLUE)*/
///////////检测左右颜色程序代码////////////////////
uchar colour(bit C,bit R,bit B,bit G) //检测左右的颜色 返回颜色值
//(GREEN=0,WHITE=1,RED=2,BLUE=3)
{ if(C=0)
{
if (R=0) return 1;
else if(B=0) return 2;
else if(G=0) return 3;
}
}
/*if (W==0) return 1; // 探 头
else if (R==0) return 2; // 底色 白 红 蓝-
else if (B==0) return 3; // 白 0 0 0
//else if (R==0&&B==0) return 4; // 红 0
//else return 0; // 蓝 0
} // 黄 0 0
// 绿
/**************************************************************************** scan */
void scan(void) //判断左右的颜色,
{uchar i,L=0,R=0;
uchar LC1=0,RC1=0,LC2,RC2; //LC(LEFT COLOUR) RC(RIGHT COLOUR)全局变量
LC=0; //先默认为GREEN
RC=0;
for (i=10;i;i--)
{LC2=colour(LC,LR,LB,LG); //检测颜色
RC2=colour(LC,LR,LB,LG);
if (L<3) //检测连续3次后再确定,避免产生错误
{if (LC1==LC2) L++; //每检测1次同样的颜色 L++
else {LC1=LC2; L=0;} //否则用新的颜色替代并让L=0开始重新检测
}
else LC=LC1;
if (R<3)
{if (RC1==RC2) R++;
else {RC1=RC2; R=0;}
}
else RC=RC1;
delay(500); //每次检测中间延时500个时间周期,可适当调整
//(前面程序也会耗一定的时间周期)
} //共检测10次,若10次都没有出现连续3次同一颜色的
//默认为GREEN*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -