Arkadaşlar bir proje yapmam gerek ama yazdığım kodlar bir türlü çalışmıyor aslında çalışıyor ama parmak izi sensörü işini yapmıyor. Öncelikle ChatGPT'ye ne yazdığımı bağlantı şemalarını paylaşayım;
Merhaba benim bir proje yapmam gerek. Projenin konusu parmak izi ile açılan bir kasa. Elimde bulunan malzemeler ise 1 adet Arduino Uno, 1 adet servo motor, 1 adet ortak katot RGB LED, 1 adet AS608 parmak izi sensörü, 1 adet de 2 pinli push buton. Proje şu şekilde olmalı; Arduino'ya güç verildiğinde parmak izi sensörü parmak kaydetme modunda olmalı, parmak izi sensörüne parmağımı okuttuğumda okutulan parmağın verisini Arduino'ya kaydetmeli ve parmak izi kaydetme modu aktifken LED mavi yanmalı parmak izi başarıyla kaydedildiği zaman mavi LED 2 saniye boyunca yarım saniye aralıklarla yanıp sönmeli ve sonra eski haline dönmeli. Daha sonra butona 1 kez basıldığında LED'in rengi kırmızıya dönmeli bunun anlamı parmak izi sensörünün parmak silme moduna geçtiğidir. Bu mod aktifken sensöre okutulan parmağın verisi Arduino'dan silinmelidir. Silme işlemi başarıyla tamamlanınca kırmızı LED 2 saniye boyunca yarım saniye aralıklarla yanıp sönmeli ve sonra eski haline geri dönmeli. Butona 1 kez daha basıldığında LED yeşile dönmeli bunun anlamı parmak izi sensörünün parmak tanımlama moduna geçtiğidir. Bu modda parmak izi sensörüne okutulan parmak eğer belleğe kayıtlı ise parmağı tanıyıp, servo motoru tam tersi yönüne çevirerek kilidi açmalıdır. Eğer okutulan parmak izi sisteme kayıtlı değil ise yeşil LED 2 saniye boyunca yarım saniye aralıklarla yanıp sönmeli ve tekrar eski haline döndüğünde parmak tanımlama modundan devam etmeli. Butona 1 kez daha basıldığında ise tekrardan başa yani parmak kaydetme moduna geçiş yapmalı. Yani butona her basıldığında modlar arası geçiş olmalı. Projenin bağlantılarını nasıl yapmalıyım bana onu söyle ve projede kullanmam gereken kodun tamamını bana ver.
ChatGPT'ye bunu yazdım ve bana bu bağlantıları ve kodları verdi;
Bağlantılar:
parmak izi sensörü:
Vcc -> 5V.
Gnd -> gnd.
Tx -> pin 3
RX -> pin 2
Servo motor:
Sarı tel -> 9. pin.
Kırmızı tel -> 5V.
Kahverengi tel -> gnd.
Ortak katot RGB LED:
Kırmızı pin -> pin 6
Yeşil pin -> pin 7
Mavi pin -> pin 8
Katot (uzun bacak) -> gnd
Kodlar:
Kodları yapıştırıp denediğimde her butona bastığımda LED'lerin renkleri değişiyor fakat parmak izi sensörüne parmak okuttuğumda hiçbir şey olmuyor. Arduino IDE programının Serial monitor kısmında parmak kaydetme ve silme modlarında error deleting fingerprint! Error converting image! hatalarını alıyorum yani modlar arası geçiyor ama sensör parmak okumuyor. Kodlama bilgim olmadığından bir türlü sorunu çözemedim sizce bunu nasıl düzeltirim?
Merhaba benim bir proje yapmam gerek. Projenin konusu parmak izi ile açılan bir kasa. Elimde bulunan malzemeler ise 1 adet Arduino Uno, 1 adet servo motor, 1 adet ortak katot RGB LED, 1 adet AS608 parmak izi sensörü, 1 adet de 2 pinli push buton. Proje şu şekilde olmalı; Arduino'ya güç verildiğinde parmak izi sensörü parmak kaydetme modunda olmalı, parmak izi sensörüne parmağımı okuttuğumda okutulan parmağın verisini Arduino'ya kaydetmeli ve parmak izi kaydetme modu aktifken LED mavi yanmalı parmak izi başarıyla kaydedildiği zaman mavi LED 2 saniye boyunca yarım saniye aralıklarla yanıp sönmeli ve sonra eski haline dönmeli. Daha sonra butona 1 kez basıldığında LED'in rengi kırmızıya dönmeli bunun anlamı parmak izi sensörünün parmak silme moduna geçtiğidir. Bu mod aktifken sensöre okutulan parmağın verisi Arduino'dan silinmelidir. Silme işlemi başarıyla tamamlanınca kırmızı LED 2 saniye boyunca yarım saniye aralıklarla yanıp sönmeli ve sonra eski haline geri dönmeli. Butona 1 kez daha basıldığında LED yeşile dönmeli bunun anlamı parmak izi sensörünün parmak tanımlama moduna geçtiğidir. Bu modda parmak izi sensörüne okutulan parmak eğer belleğe kayıtlı ise parmağı tanıyıp, servo motoru tam tersi yönüne çevirerek kilidi açmalıdır. Eğer okutulan parmak izi sisteme kayıtlı değil ise yeşil LED 2 saniye boyunca yarım saniye aralıklarla yanıp sönmeli ve tekrar eski haline döndüğünde parmak tanımlama modundan devam etmeli. Butona 1 kez daha basıldığında ise tekrardan başa yani parmak kaydetme moduna geçiş yapmalı. Yani butona her basıldığında modlar arası geçiş olmalı. Projenin bağlantılarını nasıl yapmalıyım bana onu söyle ve projede kullanmam gereken kodun tamamını bana ver.
ChatGPT'ye bunu yazdım ve bana bu bağlantıları ve kodları verdi;
Bağlantılar:
parmak izi sensörü:
Vcc -> 5V.
Gnd -> gnd.
Tx -> pin 3
RX -> pin 2
Servo motor:
Sarı tel -> 9. pin.
Kırmızı tel -> 5V.
Kahverengi tel -> gnd.
Ortak katot RGB LED:
Kırmızı pin -> pin 6
Yeşil pin -> pin 7
Mavi pin -> pin 8
Katot (uzun bacak) -> gnd
Kodlar:
Kod:
#include <Servo.h>
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#define SERVO_PIN 9
#define BUTTON_PIN 10.
#define LED_RED 6
#define LED_GREEN 7
#define LED_BLUE 8
#define LED_DELAY 500.
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
Servo myservo;
enum Mode {
ENROLL_MODE,
DELETE_MODE,
IDENTIFY_MODE.
};
Mode currentMode = ENROLL_MODE;
void setup() {
Serial.begin(9600);
while (!Serial);
finger.begin(57600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
myservo.attach(SERVO_PIN);
setColor(0, 0, 255); // Blue LED on startup.
}
void loop() {
if (digitalRead(BUTTON_PIN) == LOW) {
switchMode();
delay(500); // Debounce delay.
}
switch (currentMode) {
case ENROLL_MODE:
enrollMode();
break;
case DELETE_MODE:
deleteMode();
break;
case IDENTIFY_MODE:
identifyMode();
break;
}
}
void switchMode() {
currentMode = static_cast<Mode>((currentMode + 1) % 3);
switch (currentMode) {
case ENROLL_MODE:
setColor(0, 0, 255); // Blue LED.
break;
case DELETE_MODE:
setColor(255, 0, 0); // Red LED.
break;
case IDENTIFY_MODE:
setColor(0, 255, 0); // Green LED.
break;
}
}
void setColor(int red, int green, int blue) {
analogWrite(LED_RED, red);
analogWrite(LED_GREEN, green);
analogWrite(LED_BLUE, blue);
}
void enrollMode() {
uint8_t id;
if (finger.getImage()) {
if (finger.image2Tz(1) == FINGERPRINT_OK) {
if (finger.createModel() == FINGERPRINT_OK) {
if (finger.storeModel(id) == FINGERPRINT_OK) {
Serial.println("Fingerprint enrolled successfully!");
for (int i = 0; i < 4; i++) {
setColor(0, 0, 255); // Blue LED blink.
delay(LED_DELAY);
setColor(0, 0, 0);
delay(LED_DELAY);
}
} else {
Serial.println("Error storing fingerprint!");
}
} else {
Serial.println("Error creating model!");
}
} else {
Serial.println("Error converting image!");
}
}
}
void deleteMode() {
if (finger.deleteModel(1) == FINGERPRINT_OK) {
Serial.println("Fingerprint deleted successfully!");
for (int i = 0; i < 4; i++) {
setColor(255, 0, 0); // Red LED blink.
delay(LED_DELAY);
setColor(0, 0, 0);
delay(LED_DELAY);
}
} else {
Serial.println("Error deleting fingerprint!");
}
}
void identifyMode() {
if (finger.getImage()) {
if (finger.image2Tz(1) == FINGERPRINT_OK) {
if (finger.fingerFastSearch() == FINGERPRINT_OK) {
Serial.println("Found fingerprint match!");
myservo.write(0); // Unlock.
delay(2000); // Wait for 2 seconds.
myservo.write(90); // Lock.
} else {
Serial.println("Fingerprint not found!");
for (int i = 0; i < 4; i++) {
setColor(0, 255, 0); // Green LED blink.
delay(LED_DELAY);
setColor(0, 0, 0);
delay(LED_DELAY);
}
}
}
}
}
Kodları yapıştırıp denediğimde her butona bastığımda LED'lerin renkleri değişiyor fakat parmak izi sensörüne parmak okuttuğumda hiçbir şey olmuyor. Arduino IDE programının Serial monitor kısmında parmak kaydetme ve silme modlarında error deleting fingerprint! Error converting image! hatalarını alıyorum yani modlar arası geçiyor ama sensör parmak okumuyor. Kodlama bilgim olmadığından bir türlü sorunu çözemedim sizce bunu nasıl düzeltirim?