目录
一,目的
通过arduino编写代码,实现代码验证功能,采用串口监视器输入密码并在OLED屏幕上显示验证结果,同时如果密码正确就亮一下绿灯,密码错误亮红灯
二,硬件
需要arduino板,0.96寸的OLED 屏幕,红绿led灯各一个,导线若干;
连接实物图如下
三,代码实现
1,首先引入U8glib库,用于驱动OLED显示屏幕,定义正确的密码“1234”,定义字符串变量为input_password,定义绿灯引脚为8,红灯引脚为9,并设置引脚为输出模式,
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK);
String password = "1234"; // 设置密码为1234
String input_password = ""; // 定义空字符串,用于存储输入的密码
const int green_led_pin=8;
const int red_led_pin=9;
void setup() {
Serial.begin(9600); // 开启串口通信
u8g.begin();
pinMode(green_led_pin,OUTPUT);
pinMode(red_led_pin,OUTPUT);
digitalWrite(green_led_pin,LOW);
digitalWrite(red_led_pin, LOW);
}
2,判断输入的密码是否正确,如果正确,就亮绿灯,并在OLED 屏幕上显示correct;如果不正确,亮红灯,并且在OLED上显示wrong
void loop() {
u8g.firstPage();
do {
u8g.setFont(u8g_font_unifont);
u8g.drawStr(0,25,"input 4 numbers");}
while( u8g.nextPage() );
if (Serial.available()) { // 如果有输入
char c = Serial.read(); // 读取输入的字符
if (c >= '0' && c <= '9') { // 如果输入为数字字符
input_password += c; // 把字符拼接到input_password字符串变量中
}
if (input_password.length() == 4) { // 如果输入长度达到四位数
if (input_password == password) { // 判断输入的密码是否正确
digitalWrite(green_led_pin, HIGH);
digitalWrite(red_led_pin, LOW);
u8g.firstPage();
do {
u8g.setFont(u8g_font_unifont);
u8g.drawStr(0,25,"password:");
u8g.setPrintPos(70,25);
u8g.print(input_password);
u8g.setFont(u8g_font_unifont);
u8g.drawStr(0,45,"correct");
} while( u8g.nextPage() );delay(3000);delay(2000);digitalWrite(green_led_pin, LOW);
} else {
digitalWrite(green_led_pin,LOW);
digitalWrite(red_led_pin, HIGH);
u8g.firstPage();
do {
u8g.setFont(u8g_font_unifont);
u8g.drawStr(0,25,"password:");
u8g.setPrintPos(70,25);
u8g.print(input_password);
u8g.setFont(u8g_font_unifont);
u8g.drawStr(0,45,"wrong");
} while( u8g.nextPage() );delay(3000);delay(2000);digitalWrite(red_led_pin, LOW);
}
input_password = ""; // 清空输入的密码
}
}
}
四,实现效果