基于C语言用Arduino写一个通过串口监视器进行密码输入且可以通过串口监视器修改密码的密码锁,要求密码存储在数组中
时间: 2024-02-15 09:03:45 浏览: 130
好的,以下是一个基于C语言用Arduino实现的通过串口监视器进行密码输入且可以通过串口监视器修改密码的密码锁的代码示例,密码存储在数组中:
```
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // 使用软串口,将RX连接到10号引脚,TX连接到11号引脚
int ledPin = 13; // 用于表示密码是否正确的LED灯,连接到13号引脚
char password[4] = {'1', '2', '3', '4'}; // 初始密码为1234
char input[4] = {'0', '0', '0', '0'}; // 输入密码的缓存区
int index = 0; // 当前输入密码的位数
bool pass = false; // 标记密码是否正确
void setup() {
pinMode(ledPin, OUTPUT); // 初始化LED灯为输出模式
mySerial.begin(9600); // 初始化软串口
Serial.begin(9600); // 初始化硬串口,用于与串口监视器通信
}
void loop() {
if (mySerial.available()) { // 如果软串口有数据可读
char c = mySerial.read(); // 读取数据
if (c == '\n') { // 如果读到换行符,表示一组密码输入完成
checkPassword(); // 检查输入的密码是否正确
index = 0; // 重置输入密码的位数
memset(input, 0, sizeof(input)); // 清空输入密码的缓存区
} else { // 否则将字符添加到输入密码的缓存区中
input[index++] = c;
}
}
if (Serial.available()) { // 如果硬串口有数据可读
String cmd = Serial.readStringUntil('\n'); // 读取数据
if (cmd.startsWith("set ")) { // 如果输入的命令以"set "开头,表示要修改密码
String newPwd = cmd.substring(4); // 获取新密码
for (int i = 0; i < 4; i++) {
password[i] = newPwd.charAt(i); // 将新密码存储到password数组中
}
Serial.println("New password is set."); // 发送消息到串口监视器
}
}
}
void checkPassword() {
pass = true;
for (int i = 0; i < 4; i++) {
if (input[i] != password[i]) {
pass = false; // 如果输入密码与初始密码不匹配,标记密码不正确
break;
}
}
if (pass) { // 如果密码正确
digitalWrite(ledPin, HIGH); // 点亮LED灯表示密码正确
Serial.println("Password is correct."); // 发送消息到串口监视器
} else { // 否则
digitalWrite(ledPin, LOW); // 熄灭LED灯表示密码错误
Serial.println("Password is incorrect."); // 发送消息到串口监视器
}
}
```
该示例代码使用了一个4位数字密码,可以通过串口监视器进行修改。在Arduino板子上运行该代码后,你可以通过串口监视器输入4位数字密码,如果该密码与初始密码匹配,LED灯会点亮表示密码正确;否则LED灯会熄灭表示密码错误。同时,你还可以在串口监视器中输入"set 新密码"来修改密码,例如输入"set 5678"来把密码修改为5678。
阅读全文