找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 486|回复: 0
打印 上一主题 下一主题
收起左侧

arduino智能门锁代码问题求助

[复制链接]
跳转到指定楼层
楼主
ID:927279 发表于 2023-1-27 21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在拿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.
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表