f
#include <ID1016C.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
ID1016C C1016;
uint8_t serial_buffer[20] = {0};
uint32_t Finge_num = 0; //读取的结果
uint32_t Input_Finge_num = 1; //指定要录入的ID
int key1 = 49; //设置按键IO
int key2 = 48; //设置按键IO
void setup() {
C1016.ID1016C_Init();
delay(500);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Serial.begin(115200);
pinMode(key1, INPUT);
pinMode(key2, INPUT);
display.clearDisplay(); // 清屏
display.setTextSize(1); //设置字体大小
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.setCursor(30, 0);
display.println("FingerTEST");
display.display();
}
void loop() {
C1016.ID1016C_Weakup();
switch (key_scan())
{
case 1:
C1016.C1016_Enroll(Input_Finge_num); // 录入指纹
display.clearDisplay();
display.setCursor(0, 10);
display.println("FingerOK");
display.print("Finge_num:");
display.print(Input_Finge_num);
display.display();
break;
case 2:
Finge_num = C1016.C1016_Identify(); // 识别指纹
display.clearDisplay();
if (Finge_num == 0)
{
display.setCursor(0, 20);
display.print("No Finge");
} else
{
display.setCursor(0, 20);
display.print("Finge_num:");
display.print(Finge_num);
}
display.display();
break;
case 3: //指纹 ID++ 方便录入下一个指纹
display.setCursor(0, 10);
display.clearDisplay();
Input_Finge_num++;
display.print("Input_Finge_num:"); //显示将要录入指纹的ID
display.print(Input_Finge_num);
display.display();
break;
case 4: // 清除所有指纹信息
C1016.C1016_cmd_Delete(); // 清除所有指纹信息
display.clearDisplay();
display.setCursor(0, 40);
display.print("Clean Finge");
display.display();
break;
default:
break;
}
display.setCursor(30, 0);
display.println("Finger TEST");
display.display();
}
uint8_t key_scan()
{
uint8_t i = 0;
if (digitalRead(key1) == 0)
{
delay(20);
if (digitalRead(key1) == 0)
{
while (digitalRead(key1) == 0)
{
delay(1);
i++;
if (i > 200)
{
while (digitalRead(key1) == 0);
return 3;
}
}
return 1;
}
} else if (digitalRead(key2) == 0)
{
delay(20);
if (digitalRead(key2) == 0)
{
while (digitalRead(key2) == 0)
{
delay(1);
i++;
if (i > 200)
{
while (digitalRead(key2) == 0);
return 4;
}
}
return 2;
}
}
return 0;
}