Противоугонное устройство на основе дактилоскопического датчика

Тема в разделе "Arduino & Shields", создана пользователем kasumali, 12 ноя 2015.

  1. kasumali

    kasumali Нуб

    Помогите пожалуйста запрограммировать реле через 13 пин. Я его подключил, но нужно написать код, чтобы он начал работать. Вот схема устройства



    [​IMG]

    Есть код для работы датчика отпечатков пальцев(дактилоскопического датчика), и он работает, но нужно добавить код и для реле, чтобы после того как датчик отсканировал правильный отпечаток пальца на реле подавался сигнал и далее он включается лампочка (лампа вместо моторчика).

    Вот код для сенсора отпечатков пальцев
    Код (C++):
    #include <Adafruit_Fingerprint.h>
    #include <SoftwareSerial.h>

    int getFingerprintIDez();

    // pin #2 is IN from sensor (GREEN wire)
    // pin #3 is OUT from arduino  (WHITE wire)
    SoftwareSerial mySerial(2, 3);


    Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

    void setup()
    {
      Serial.begin(9600);
      Serial.println("fingertest");

      // set the data rate for the sensor serial port
      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()                     // run over and over again
    {
      getFingerprintIDez();
      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 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.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;
      }

      // found a match!
      Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);
    }

    // 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;
    }
     
    Последнее редактирование: 12 ноя 2015
  2. ИгорьК

    ИгорьК Гуру

    Найдите все строки (их есть два раза):
    Код (C++):
     Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);
    И сделайте их такими:
    Код (C++):
    Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);
      digitalWrite(13,1);
      delay(1000); // Одна секунда или сколько вам там надо
      digitalWrite(13,0);
    В функцию void setup() добавьте строку:
    Код (C++):
    pinMode(13, OUTPUT);
     
    Sparkfire нравится это.
  3. kasumali

    kasumali Нуб

    сделал как вы сказали и сработало реле, это уже хорошо, но вот лампа 2 раз мигнет и все, больше не включается. как решить проблемку?
     
  4. ИгорьК

    ИгорьК Гуру

    Дык... Вам то что нужно?

    Код (C++):
    digitalWrite(13,1); //Зажечь диод/включить реле
    delay(1000); // Подождать одну секунду
    digitalWrite(13,0); //Выключить диод/выключить реле
     
    Последнее редактирование: 14 ноя 2015
  5. kasumali

    kasumali Нуб

    нужно чтобы после сканирования отпечатка реле включалось и включалась лампочка, а выключалось после отключения питания.
     
  6. a_komolow

    a_komolow Нуб

    Убери последние 2 строчки
     
  7. Анвар

    Анвар Нуб

    хотелось бы собрать точно такой же проект, я новичок тут, есть кто сможет помочь?
     
  8. alp69

    alp69 Форумчанин

    В чем должна заключаться помощь?