设定三个按键(B1,B2,B3)分別控制三个LED(红绿黄),按住B1红色LED会快闪(0.5秒),按住B2绿色LED会慢慢变亮慢慢变暗(Fade),按住B3黄色LED会慢闪(1秒),当放开时LED要灭掉
并加入优先权问题,权限大小分別为B1>B2>B3。
例如:
(1)当B1与B2同时按住,只会有B1红色LED会快闪(0.5秒)的结果。
(2)当B1与B3同时按住,只会有B1红色LED会快闪(0.5秒)的结果。
(3)当B2与B3同时按住,只会有B2绿色LED会慢慢变亮慢慢变暗(Fade)的结果。
(4)若是个別启动,输出结果不变。
我只能完成分别控制按钮,关于优先权问题一直做不出 求大神指导
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
const int xR = 13;
const int xG = 11;
const int xY = 8;
const int xB1 = 5;
const int xB2 = 4;
const int xB3 = 3;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(xR, OUTPUT);
pinMode(xG, OUTPUT);
pinMode(xY, OUTPUT);
pinMode(xB1, INPUT);
pinMode(xB2, INPUT);
pinMode(xB3, INPUT);
Serial.begin(9600);
}
unsigned long intR = 500;
unsigned long intY = 1000;
unsigned long tR = 0;
unsigned long tY = 0;
int sR = LOW;
int sY = LOW;
// the loop routine runs over and over again forever:
void loop() {
int b1 = digitalRead(xB1);
int b2 = digitalRead(xB2);
int b3 = digitalRead(xB3);
unsigned long ct = millis();
if (b1 && (ct - tR >= intR)) {
tR = ct;
sR=flip(sR);
digitalWrite(xR, sR);
}
if (b3 && (ct - tY >= intY)) {
tY = ct;
sY=flip(sY);
digitalWrite(xY, sY);
}
if (b1==LOW)
digitalWrite(xR,LOW);
if (b3==LOW)
digitalWrite(xY,LOW);
Serial.println(b1);
delay(10);
}
int flip(int s) {
if (s==LOW)
return HIGH;
else
return LOW;
}
|