关于以下代码的设计思路及其设计框图,代码如下:#include <SPI.h> #include <Adafruit_GFX.h> #include <Max72xxPanel.h> String MIMA; String ZJ; volatile int cishu; Max72xxPanel myMatrix = Max72xxPanel(9,1,1); void serialEvent() { if (Serial.available() > 0) { ZJ = Serial.readStringUntil('#'); Serial.println(String("INPUT:") + String(ZJ)); if (ZJ == "12345678") { Serial.println("RIGHT"); myMatrix.setCursor(0, 0); myMatrix.print("1"); myMatrix.write(); digitalWrite(2,HIGH); delay(2000); digitalWrite(2,LOW); } else { Serial.println("ERROE"); myMatrix.setCursor(0, 0); myMatrix.print("2"); myMatrix.write(); cishu = cishu + 1; if (cishu >= 3) { while (true) { if (digitalRead(5)) { Serial.println("RIGHT"); digitalWrite(2,HIGH); digitalWrite(4,LOW); digitalWrite(3,LOW); while (true) { } } digitalWrite(4,HIGH); digitalWrite(3,HIGH); delay(200); digitalWrite(3,LOW); delay(200); } } } } } void setup(){ MIMA = "12345678"; ZJ = ""; cishu = 0; Serial.begin(9600); Serial.println("PLEASE INPUT!"); pinMode(2, OUTPUT); pinMode(5, INPUT); pinMode(4, OUTPUT); pinMode(3, OUTPUT); } void loop(){ }
时间: 2024-03-09 14:44:18 浏览: 122
这段代码实现了一个密码验证系统,通过串口输入密码并与预设密码进行比较,如果输入的密码正确则点亮 LED 灯并在 8x8 点阵显示屏上显示数字 1,否则在 8x8 点阵显示屏上显示数字 2,并在输入错误密码 3 次以上时触发报警。
以下是代码的设计思路:
1. 密码验证逻辑:首先定义预设密码为 MIMA,然后通过串口读取输入的密码 ZJ,与 MIMA 进行比较,如果相同则点亮 LED 灯并在 8x8 点阵显示屏上显示数字 1,否则在 8x8 点阵显示屏上显示数字 2。
2. 报警逻辑:如果输入错误密码 3 次以上,则触发报警。在输入错误密码时,将错误次数 cishu 加 1,如果 cishu 大于等于 3,则触发报警。报警的方式是不断地切换两个 LED 灯的状态,同时延迟一段时间,以达到闪烁的效果。
以下是代码的设计框图:
```
+--------------+ +----------------------+
| | | |
| serialEvent()---->| Password Validation |
| | | |
+--------------+ +----------+-----------+
|
|
+--------------+ +-----------v-----------+
| | | |
| setup()-------->| Initialize Hardware |
| | | |
+--------------+ +-----------+-----------+
|
|
+--------------+ +-----------v-----------+
| | | |
| loop()-------->| Do Nothing |
| | | |
+--------------+ +-----------------------+
```
阅读全文