Capteur empreinte digitale adafruit

Bonjour,
Vous etes mon dernier espoir, j'ai tout essayé (ChatGPT, les videos, les tutos...). J'ai un probleme avec mon capteur d'empreinte digitale adafruit pour arduino (un des plus courant !), autrefois, j'arrivais a le faire fonctionner avec le code ci dessous. Tout se passait bien, j'avais enregistré mes empreintes, je les utilisais... Mais là, PROBLEME. Quand je connecte le capteur, le code dit : "Aucun capteur detecté :(", ce qui correspond au fait que le capteur ne reponde pas aux appeles de la carte. J'utilise une arduino uno, j'ai verifié TOUS les cablages. J'ai tenté le croisement et le recroisement des liaisons serie d'inombrables fois ; là, je suis coincé. Je vous met le code dans les balises (si ca marche ;)) ). Si vous pouviez me dire ce qui cloche ou me mettre sur le piste, j'en serais tres reconnaissant et ce serait d'une aide incroyable !!!`

#include <Adafruit_Fingerprint.h>



int b = 0;


#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino  (WHITE wire)
// Set up the serial port to use softwareserial..
SoftwareSerial mySerial(2, 3);

#else
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
// #0 is green wire, #1 is white
#define mySerial Serial3

#endif
int c = 40;

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup()
{pinMode(c,OUTPUT);digitalWrite(c,HIGH);
  Serial.begin(2000000);
  while (!Serial);  // For Yun/Leo/Micro/Zero/...
  delay(100);
  Serial.println("\n\nAdafruit finger detect test");

  // set the data rate for the sensor serial port
  finger.begin(57600);
  delay(5);
  if (finger.verifyPassword()) {
    Serial.println("Connection au capteur...");
  } else {
    Serial.println("Aucun capteur detecté :(");
    while (1) {
      delay(1);
    }
  }

  Serial.println(F("Lecture des parametres du capteur :"));
  finger.getParameters();
  Serial.print(F("Statut : 0x")); Serial.println(finger.status_reg, HEX);
  Serial.print(F("Systeme ID : 0x")); Serial.println(finger.system_id, HEX);
  Serial.print(F("Capacité : ")); Serial.println(finger.capacity);
  Serial.print(F("Niveau de securité : ")); Serial.println(finger.security_level);
  Serial.print(F("Adresse de l'appareil : ")); Serial.println(finger.device_addr, HEX);
  Serial.print(F("Taille du paquet : ")); Serial.println(finger.packet_len);
  Serial.print(F("Vitesse de transmission serie : ")); Serial.println(finger.baud_rate);

  finger.getTemplateCount();

  if (finger.templateCount == 0) {
    Serial.print("Le capteur n'a aucune donnée : enregistrez d'abord des empreintes !");
  }
  else {
    Serial.println("Patientez pour valider l'empreinte...");
    Serial.print("Numeros d'empreinte : "); Serial.println(finger.templateCount);
  }
  Serial.print(F("Chargement"));
}

void loop()                     // run over and over again
{
  getFingerprintID();
  delay(50);            //don't ned to run this at full speed.
}

uint8_t getFingerprintID() {
  uint8_t p = finger.getImage();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image reçu !");
      break;
    case FINGERPRINT_NOFINGER:
      b++;
      if (b < 4) {
        Serial.print(".");
      } else {
        Serial.println("");
        Serial.print("Detection");
        b = 0;
      }
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Erreur de communication");
      return p;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("Erreur image");
      return p;
    default:
      Serial.println("Erreur inconnue");
      return p;
  }

  // OK success!

  p = finger.image2Tz();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Reçu !");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("Image imprecise...");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Erreur Serial");
      return p;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("Empreinte non reconnue");
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("Empreinte non reconnue");
      return p;
    default:
      Serial.println("Erreur inconnue");
      return p;
  }

  // OK converted!
  p = finger.fingerSearch();
  if (p == FINGERPRINT_OK) {
    Serial.println("Correspondance d'impression trouvé !");
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
    Serial.println("Erreur de communication.");
    return p;
  } else if (p == FINGERPRINT_NOTFOUND) {
    Serial.println("Aucun resultat trouvé.");
    return p;
  } else {
    Serial.println("Erreur inconnue.");
    return p;
  }

  // found a match!
  Serial.println("Empreinte detectée !                                 ");
  // Serial.print(finger.fingerID);
  Serial.print("Bienvenue ");
  if (finger.fingerID == 1) {
    Serial.println("index main droite  !");
  } 


  Serial.print("Numero d'identification : #"); Serial.print(finger.fingerID);
  Serial.print(" avec une fiabilité de "); Serial.println(finger.confidence);


  return finger.fingerID;
}

// 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!


  return finger.fingerID;
}`

Tu n'aurais pas changé le mot de passe par hasard?

Je ne comprend pas bien, il y a un mot de passe sur un fingerprint ? Comment fait on pour le changer ? Il est vrai qu'il y a une fonction verifyPassword mais jamais je n'y ai touché.

Il y a une méthode pour ça

uint8_t setPassword(uint32_t password);

et on spécifie ce mot de passe lorsqu'on crée l'instance. Si on ne met rien c'est le mot de passe par défaut qui est utilisé (0x0)

Adafruit_Fingerprint(SoftwareSerial *ss, uint32_t password = 0x0);

Mais si tu n'y as jamais touché c'est qu'il y a un autre problème

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.