|
发表于 2016-3-25 11:22:17
|
显示全部楼层
//红灯6,绿7,按键ABC,依次8,9,10
- bool isBtnPressed[3]={0,0,0},isBtnCAC =0; //按C后按A标记
- byte delayTimes=0; //闪烁计数
- int FlashDelay=500; //闪烁间隔时间(ms)
- void setup() {
- for(byte i=6;i<11;i++){
- pinMode(i,INPUT);
- if (i<8) pinMode(i,OUTPUT);
- }
- }
- void loop() {//B键后 数据清零
- if (isBtnPressed[1]) {
- for(byte i=0;i<3;i++){
- isBtnPressed[i]=0;
- if (i>0)digitalWrite(i+5,LOW);
- }
- isBtnCAC =0;
- } // C A C键 关红亮绿
- else if (isBtnPressed[2] && isBtnPressed[0] && isBtnCAC){
- digitalWrite(7,HIGH);
- digitalWrite(6,LOW);
- }
- else if ((isBtnPressed[2] && !delayTimes)|| isBtnPressed[0]) {
- digitalWrite(6,!digitalRead(6) | isBtnPressed[0]); //闪烁或常亮
- isBtnCAC=isBtnPressed[2] && isBtnPressed[0]; //按C后A,标志
- isBtnPressed[2]=!(isBtnPressed[2] && isBtnPressed[0]); //按C后A,清除C标志
- }
- // 读取按键
- for(byte i=0; i<3;i++){
- if (digitalRead(i+8)){ //读取按键
- delay(50);
- delayTimes = ++delayTimes % (FlashDelay /50); //闪烁延时计次
- if (digitalRead(i+8)) isBtnPressed[i]=1;
- }
- }
- delay(50);
- delayTimes = ++delayTimes % (FlashDelay /50); //闪烁延时计次
- }
复制代码 |
|