最近在拿arduino uno做智能門鎖項目nfc和指紋分開寫的兩個代碼,拼到一起發現不能用了,兄弟們幫忙看看什么問題
下面是代碼,大伙看看有什么問題 謝謝
/* rc522接線 舵機mg90s 0.96oled 光學指紋 * 3.3v-3.3v 黃色-8 GND-GND rt-2 * RST-9 紅色-5v VCC-5V tx-3 * GND-GND 褐色-GND SCL-A4 * MISO-12 SDA-A5 * MOSI-11 * SCK-13 * SDA-10 */#include <Adafruit_Fingerprint.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SPI.h>
#include <Wire.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10#define RST_PIN 9#define OLED_RESET 13
SoftwareSerial mySerial(2, 3);
Adafruit_SSD1306 display(128,64,&Wire,OLED_RESET);
MFRC522 rfid(SS_PIN, RST_PIN);
byte nuidPICC[4];
Servo myservo;
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
//hexvoid printHex(byte *buffer, byte bufferSize)
{
for (byte i = 0; i < bufferSize; i++)
{
Serial.print(buffer[ i] < 0x10 ? " 0" : "");
Serial.print(buffer[ i], HEX);
}
}
//decvoid printDec(byte *buffer, byte bufferSize)
{
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[ i] < 0x10 ? " 0" : "");
Serial.print(buffer[ i], DEC);
}
if (nuidPICC[0]==0x8D&& nuidPICC[1]==0xFE && nuidPICC[2]==0x67 && nuidPICC[3]==0x32)
{
myservo.write(180);
Serial.print("\n welcome pmy");
delay(300);
myservo.write(90);
display.clearDisplay();
display.setCursor(40,20);
display.print("welcome !");
display.setCursor(25,30);
display.print("your cardID:2");
display.display();
}
else if(nuidPICC[0]==0x33&& nuidPICC[1]==0xA9 && nuidPICC[2]==0xDB && nuidPICC[3]==0x04)// 卡號ID{
myservo.write(180);
Serial.print("\n welcome pmy");
delay(300);
myservo.write(90);
display.clearDisplay();
display.setCursor(0,30);
display.print("your cardID:3");
display.display();
}
}
//指紋uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
//Serial.println("No finger detected"); return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
return p;
default:
Serial.println("Unknown error");
return p;
}
// OK success!
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
//Serial.println("Could not find fingerprint features"); return p;
case FINGERPRINT_INVALIDIMAGE:
//Serial.println("Could not find fingerprint features"); return p;
default:
Serial.println("Unknown error");
return p;
}
// OK converted! p = finger.fingerSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
myservo.write(180);
delay(300);
myservo.write(90);
// found a match! Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
return p;
} else {
Serial.println("Unknown error");
return p;
}
}
// returns -1 if failed, otherwise returns ID #int getFingerprintIDez() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;
p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;
p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;
// found a match! Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
}
void setup()
{
Serial.begin(9600);
finger.begin(57600);
SPI.begin();
rfid.PCD_Init();
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC,0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,20);
display.print("please slot your card");
display.setCursor(30,30);
display.print("your cardID");
display.display();
digitalWrite(5, LOW);
//舵機設置 myservo.attach(8);
myservo.write(90);
}
void loop()
{
//rc552識別 if ( ! rfid.PICC_IsNewCardPresent())
return;
if ( ! rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); // 將NUID保存到nuidPICC數組for (byte i = 0; i < 4; i++)
{
nuidPICC[ i] = rfid.uid.uidByte[ i];
}
Serial.print("十六進制UID:");
printHex(rfid.uid.uidByte, rfid.uid.size); //Hex:16進制Serial.println();
Serial.print("十進制UID:");
printDec(rfid.uid.uidByte, rfid.uid.size); //Dec:10進制Serial.println();
// 使放置在讀卡區的IC卡進入休眠狀態,不再重復讀卡,Halt(停止)rfid.PICC_HaltA();
// 停止讀卡模塊編碼rfid.PCD_StopCrypto1();
//as608識別 getFingerprintID();
delay(50); //don't ned to run this at full speed.
}
|