指紋門禁鎖
指紋控制解鎖+蜂鳴器+繼電器+LED
#include <Adafruit_Fingerprint.h>
#define mySerial Serial1
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); //使用TX1,RX1所以使用Serial1,如果使用TX2,RX2可使用Serial2
int ID = 0;
int BZ = 4; // 蜂鳴器接腳
int LED = 3; // LED接腳
int relay = 2; // 繼電器接腳
void setup(){
Serial.begin(9600);
finger.begin(57600);
if (finger.verifyPassword()) { // 檢查指紋感測器模組接線是否正確
Serial.println("發現指紋感測模組!");
}
else {
Serial.println(" 未發現指紋感測模組,請檢查接線後重新啟動 ");
while (1) { delay(1); }
}
pinMode(BZ,OUTPUT);
pinMode(LED,OUTPUT);
pinMode(relay,OUTPUT);
digitalWrite(relay,HIGH); // 繼電器初始狀態
digitalWrite(LED,HIGH); // LED初始狀態
}
void loop(){
ID = getID(); // 配對指紋並傳回 ID 值
delay(50);
if (ID > 0){ // 手指放上指紋感測模組
if((ID == 1 )||(ID == 2 )||(ID == 3 )){ // ID=1.2.3 的指紋圖像驗證成功
Serial.println("**** 指紋驗證正確 ****");
tone(BZ,300,300); // 蜂鳴器動作0.2秒兩次
delay(250);
tone(BZ,500,300);
digitalWrite(relay,LOW); // 繼電器動作
digitalWrite(LED,LOW); // LED動作
delay(3000); // 延遲5秒
digitalWrite(relay,HIGH); // 繼電器跳脫
digitalWrite(LED,HIGH); // LED跳脫
}
else { // 指紋驗證失敗
Serial.println("===== 指紋驗證錯誤 =====");
tone(BZ,1200,200); // 蜂鳴器動作0.2秒兩次
delay(250);
tone(BZ,1500,200);
}
}
while(ID > 0) { // 等待手指放開
ID = getID(); // 配對指紋並傳回 ID 值
}
}
int getID() { // 比對指紋,取得正確的 ID 碼
int p = finger.getImage(); // 指紋圖像
if (p != FINGERPRINT_OK) return -1;
p = finger.image2Tz(); // 指紋圖像處理
if (p != FINGERPRINT_OK) return -2;
p = finger.fingerFastSearch(); // 搜尋指紋
if (p != FINGERPRINT_OK) return 999; //未搜尋到指紋
return finger.fingerID;
}