简易门禁编程代码是什么
-
简易门禁编程代码通常是使用基于Arduino或树莓派等开源硬件平台和C/C++等编程语言编写的。下面是一个示例代码,实现了一个简单的门禁系统:
#include <Keypad.h> #include <Servo.h> // 定义密码 char password[4] = {'1', '2', '3', '4'}; char enteredPassword[4]; int passwordIndex = 0; // 定义按键矩阵 const byte ROW_NUM = 4; // 按键行数 const byte COLUMN_NUM = 4; // 按键列数 char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; // 按键行引脚 byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; // 按键列引脚 Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); // 定义舵机 Servo servo; int servoPin = 10; void setup() { Serial.begin(9600); servo.attach(servoPin); servo.write(0); // 设置舵机初始位置为关闭状态 } void loop() { char key = keypad.getKey(); // 获取当前按下的按键 if (key) { if (key == '#') { // 输入完整密码,验证密码是否正确 if (checkPassword()) { // 密码正确,开启门 openDoor(); } else { // 密码错误,错误提示 Serial.println("Invalid password!"); } // 重置输入的密码 resetEnteredPassword(); } else { // 输入密码 enteredPassword[passwordIndex] = key; passwordIndex++; if (passwordIndex >= 4) { // 已经输入4位密码,验证密码是否正确 if (checkPassword()) { // 密码正确,开启门 openDoor(); } else { // 密码错误,错误提示 Serial.println("Invalid password!"); } // 重置输入的密码 resetEnteredPassword(); } } } } // 验证密码是否正确 bool checkPassword() { for (int i = 0; i < 4; i++) { if (enteredPassword[i] != password[i]) { return false; } } return true; } // 打开门 void openDoor() { servo.write(90); // 门锁舵机旋转到打开的位置 delay(2000); // 延迟2秒钟保持门打开状态 servo.write(0); // 门锁舵机旋转到关闭的位置 } // 重置输入的密码 void resetEnteredPassword() { for (int i = 0; i < 4; i++) { enteredPassword[i] = ' '; // 清空输入的密码 } passwordIndex = 0; // 重置密码索引 }以上代码实现了一个简单的门禁系统,使用4×4的按键矩阵作为密码输入界面,通过舵机控制门锁的打开和关闭。用户输入正确的密码后,舵机会旋转到打开的位置打开门,保持2秒钟后再关闭。如果输入错误的密码,则会提示密码错误。这只是一个简单的示例代码,实际的门禁系统可以根据需求进行修改和扩展。
1年前 -
简易门禁编程代码是指用于控制门禁系统的代码,通常用于对门禁设备进行控制和管理,比如开门权限的设置、刷卡记录的查询等功能。下面是一个简单的门禁编程代码示例:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> // 定义用户结构体 typedef struct { char username[20]; // 用户名 char card_id[20]; // 卡片ID time_t access_time; // 门禁刷卡时间 } User; // 定义用户数组 User users[100]; int user_count = 0; // 添加用户 void add_user(const char* username, const char* card_id) { strcpy(users[user_count].username, username); strcpy(users[user_count].card_id, card_id); users[user_count].access_time = time(NULL); user_count++; } // 根据卡片ID查找用户 User* find_user(const char* card_id) { for (int i = 0; i < user_count; i++) { if (strcmp(users[i].card_id, card_id) == 0) { return &users[i]; } } return NULL; } // 刷卡验证 void card_swipe(const char* card_id) { User* user = find_user(card_id); if (user != NULL) { printf("用户:%s\n", user->username); printf("刷卡时间:%s", ctime(&(user->access_time))); printf("验证通过,门已开启。\n"); } else { printf("验证失败,无此用户。\n"); } } // 主函数 int main() { // 添加测试用户 add_user("张三", "123456"); add_user("李四", "654321"); // 模拟刷卡 card_swipe("123456"); card_swipe("654321"); card_swipe("777777"); return 0; }这个示例代码使用C语言实现了一个简单的门禁系统,具有添加用户、刷卡验证等功能。用户信息保存在一个用户数组中,通过刷卡时输入的卡片ID来查找对应的用户,并进行验证。符合条件的用户会被识别为通过验证,门禁系统会打印出相应的用户信息,并开启门禁。如果输入的卡片ID没有找到对应的用户,则验证失败,门禁系统打印出相应的提示。
1年前 -
简易门禁系统可以使用Arduino等开发板来实现,以下是一个简单的门禁编程代码示例。
#include <Keypad.h> #include <LiquidCrystal_I2C.h> #define ROW_NUM 4 // 行数 #define COLUMN_NUM 4 // 列数 char keys[ROW_NUM][COLUMN_NUM] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; // 连接行脚的引脚 byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; // 连接列脚的引脚 Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C LCD屏幕 const char* accessCode = "1234"; // 门禁密码 void setup() { lcd.begin(16, 2); // 初始化LCD lcd.backlight(); // 打开背光 lcd.print("Enter access code"); // LCD显示文字 } String getInput() { String inputCode = ""; while (true) { char key = keypad.getKey(); if (key) { if (key == '#') { return inputCode; } else if (key == '*') { inputCode = ""; lcd.clear(); lcd.print("Enter access code"); } else { inputCode += key; } } } } void showResult(bool accessGranted) { lcd.clear(); if (accessGranted) { lcd.print("Access Granted"); } else { lcd.print("Access Denied"); } delay(2000); lcd.clear(); lcd.print("Enter access code"); } void loop() { String inputCode = getInput(); if (inputCode == accessCode) { showResult(true); } else { showResult(false); } }这段代码使用了Keypad库来读取按键输入,LiquidCrystal_I2C库来控制I2C LCD屏幕显示。先定义了按键矩阵的布局和引脚连接,然后在
setup()函数中初始化LCD并显示提示文字。然后在
getInput()函数中循环检测按键输入,每次按键结束后判断是否输入结束,如果按下了"#"键则返回输入的密码字符串,如果按下了"*"键则清空输入并重新显示提示文字,其他按键则将按键值添加到输入密码字符串中。接下来,在
showResult()函数中根据传入的参数(是否授权)显示不同的信息在LCD屏幕上。最后,在
loop()函数中循环调用getInput()函数获取输入的密码,并与预设的密码比较,如果相等则调用showResult()函数显示授权信息,否则显示拒绝信息。1年前