Код датчика отпечатков пальцев некорректно работает с LCD дисплеем 16x2

Я делаю датчик отпечатков пальцев, который работает с ЖК-дисплеем 16x2. Код работает правильно для датчика отпечатков пальцев, но когда я ввожу ЖК-код, ЖК-дисплей работает, но отпечаток пальца перестает работать.

Я использую Arduino Uno и датчик отпечатков пальцев Adafruit. Как отпечаток пальца, так и ЖК-дисплей подключены правильно и работают отдельно. Я зарегистрировал и протестировал отпечатки пальцев, и это работало отлично, пока я не добавил ЖК-код.

#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int getFingerprintIDez();
// контакт №2 подключен от датчика (ЗЕЛЕНЫЙ провод)
// вывод № 3 отсутствует в arduino (БЕЛЫЙ провод)
SoftwareSerial mySerial(2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup() {
 // настройка количества столбцов и строк на ЖК-дисплее:
  lcd.begin(16, 2);
  // Выведите сообщение на ЖК-дисплей.
  lcd.print("hello, world!");
  Serial.begin(9600);
  Serial.println("fingertest");
  // установите скорость передачи данных для последовательного порта датчика
  finger.begin(57600);
  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  } else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1);
  }
  Serial.println("Waiting for valid finger...");
}

void loop() {
  getFingerprintIDez();
}

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;
  }

  // Хорошо, успехов!
  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;
  }

  // Хорошо преобразовано!
  p = finger.fingerFastSearch();
  if (p == FINGERPRINT_OK) {
    Serial.println("Found a print match!");
  } 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;
  }

  // нашел совпадение!
  Serial.print("Found ID #");
  Serial.print(finger.fingerID); 
  Serial.print(" with confidence of ");
  Serial.println(finger.confidence); 
}

// возвращает -1 в случае сбоя, в противном случае возвращает идентификатор #
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;
  // нашел совпадение!
  Serial.print("Found ID #");
  Serial.println(finger.fingerID);
  Serial.print("This Finger print related to : ");
  switch(finger.fingerID){
   case 0:  
     Serial.println("Subhy Mesmar");
     break;
   case 1 :  
     Serial.println("Amjad Mesmar");
     break;
  }
  return finger.fingerID;
}

На этом изображении датчик отпечатков пальцев работает без ЖК-кода:

Fingerprint sensor works without lcd code

И в этом случае ЖК-дисплей работает после добавления кода, но датчик отпечатков пальцев перестал работать:

lcd works after adding code but fingerprint sensors stopped working

, 👍3


1 ответ


Лучший ответ:

3

У вас есть контакты 2 и 3, используемые как ЖК-дисплеем, так и программным обеспечением, используемым для датчика отпечатков пальцев.

Используйте разные контакты для одного или другого.

Стоит взглянуть на software serial, чтобы лучше понять, как это работает.

,

безопасно ли использовать разные контакты для датчика отпечатков пальцев? , Не приведет ли смена контактов 2,3 к повреждению датчика?Пожалуйста , посоветуйте ., @Souls Reaper

Да, это должно быть безопасно., @Mark Smith