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