const int btn1Pin = 9;
const int btn2Pin = 8;
bool btn1Val = 0;
bool btn2Val = 0;
const int light1Pin = 13;
const int light2Pin = 12;
const int light3Pin = 11;
const int light4Pin = 10;
bool light1Val = 0;
bool light2Val = 0;
bool light3Val = 0;
bool light4Val = 0;
const int ledPin = 7;
void setup() {
pinMode(btn1Pin, INPUT_PULLUP);
pinMode(btn2Pin, INPUT_PULLUP);
pinMode(light1Pin, INPUT);
pinMode(light2Pin, INPUT);
pinMode(light3Pin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
Serial.print("btn1: ");
Serial.print(digitalRead(btn1Pin));
Serial.print(" btn2: ");
Serial.println(digitalRead(btn2Pin));
Serial.print("light1Pin: ");
Serial.print(digitalRead(light1Pin));
Serial.print(", light2Pin: ");
Serial.print(digitalRead(light2Pin));
Serial.print(", light3Pin: ");
Serial.print(digitalRead(light3Pin));
Serial.print(", light4Pin: ");
Serial.println(digitalRead(light4Pin));
btn1Val = digitalRead(btn1Pin);
btn2Val = digitalRead(btn2Pin);
light1Val = digitalRead(light1Pin);
light2Val = digitalRead(light2Pin);
light3Val = digitalRead(light3Pin);
light4Val = digitalRead(light4Pin);
//第一页,只露出btn1,与LED直连
//四个LDR全部挡住,此时light1Pin为1(黑)
if(light1Val == 1){
Serial.println("直连");
//btn1按下,LED亮,btn1松开,LED灭
if(btn1Val == 0){
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}
}
//第二页,只露出btn1,与LED“非”连接
//露出一个LDR,此时light1Val为0(亮),且light2Val为1(黑)
else if(light1Val == 0 && light2Val == 1){
Serial.println("非");
//btn1没按,LED亮,btn1按下,LED灭
if(btn1Val == 0){
digitalWrite(ledPin, LOW);
}
else{
digitalWrite(ledPin, HIGH);
}
}
//第三页,露出btn1和btn2,两个按钮与LED“与”连接
//露出两个LDR,此时light2Val为0(亮),且light3Val为1(黑)
else if(light2Val == 0 && light3Val == 1){
Serial.println("与");
//btn1,btn2同时按下,LED亮,有一个松开,LED灭
if(btn1Val == 0 && btn2Val == 0){
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}
}
//第四页,露出btn1和btn2,两个按钮与LED“或”连接
//露出三个LDR,此时light3Val为0(亮),light4Val为1(黑)
else if(light3Val == 0 && light4Val == 1){
Serial.println("或");
//btn1,btn2按下任意一个,LED亮,两个一起按也能亮
if(btn1Val == 0 || btn2Val == 0){
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}
}
//第五页,露出btn1和btn2,两个按钮与LED“异或”连接
//异或,露出四个LDR,此时light4Val为0(亮)
else if(light4Val == 0){
Serial.println("异或");
//btn1,btn2按下任意一个,LED亮,两个一起按灭
if(btn1Val == 0 ^ btn2Val == 0){
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}
}
delay(100);
}