我目前正在使用Arduino來補充我的一個DIY項目。目前,我的指紋掃描器(GT-511C3)連接到我的Arduino,效果很好。我能夠驗證登記的指紋。Arduino命令暫停
的finterprints的驗證通過樹莓裨命令(其中通過按下一個按鈕啓動)
在邏輯上,這意味着,當按下按鈕時,樹莓裨發送「驗證」命令到Arduino happends ,他們要求指紋掃描儀運行驗證命令。
但是,我想在它發送的validate命令後有一個超時。超時需要確保如果按下按鈕(並且啓動了validate命令),但沒有人將他們的手指放在機器上,超時並返回到等待validate命令的狀態。
我無法完成此操作。這是我試過的代碼:
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
FPS_GT511C3 fps(4, 5);
int val = 0;
void setup()
{
Serial.begin(9600);
delay(100);
fps.Open();
fps.SetLED(false);
}
void loop(){
if (Serial.available() > 0) {
Continue:
if(Serial.find("validate")){
fps.SetLED(true);
do {
++val;
delay(100);
}
while(fps.IsPressFinger() == false || val > 150);
if(val <= 150){
fps.SetLED(false);
goto Continue;
}
if (fps.IsPressFinger()){
fps.CaptureFinger(false);
int id = fps.Identify1_N();
if (id <200)
{
Serial.print("Verified ID:");
Serial.println(id);
fps.SetLED(false);
}
else
{
Serial.println("Finger not found");
fps.SetLED(false);
}
}
else
{
Serial.println("Please press finger");
}
delay(100);
}
}
}
的代碼,否則工作正常,如果手指被放置和驗證,它會關閉並返回以等待另一驗證命令。
任何幫助將不勝感激!
謝謝你的解釋,特別是哪個更好,並且擺脫goto。話雖如此,它的工作原理是超時,但我相信它不會將val重置爲0,因此當我請求第二次驗證時,它立即超時。有什麼辦法可以解決這個問題嗎? – user5740843
@ user5740843我編輯了IF塊。現在應該按預期工作。 – TisteAndii
@ user5740843如果它解決了您的問題,請考慮接受答案。 – TisteAndii