Противоугонное устройство на основе дактилоскопического датчика
- Войдите на сайт для отправки комментариев
Чт, 12/11/2015 - 07:15
Помогите пожалуйста запрограммировать реле через 13 пин. Я его подключил, но нужно нарисать код, чтобы он начал работать. Вот схема устройства

Есть код для работы датчика отпечатков пальцев(дактилоскопического датчика), и он работает, но нужно добавить код и для реле, чтобы после того как датчик отсканировал правильный отпечаток пальца на реле подавался сигнал и далее он включается лампочка (лампа вместо моторчика).
Вот код для сенсора отпечатков пальцев
#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; }Все мои релюшки работают в инветированном режиме. В анчале скетча подаю на них digitalWrite(13,HIGH); размыкает цепь.
Где надо включить - пишу digitalWrite(13, LOW), и цепь замыкается..
а куда именно это можно написать в моем коде?
Но у Вас же не релюшка подключена к ардуинке, а npn транзистор. Поэтому в Вашем случае надо вначале ничего не делать, а там где находит верный отпечаток написать:
Serial.println("Found a print match!");digitalWrite(13,HIGH);Но как оно будет работать в полевых условиях - увы не знаю :) Вы ж будете выключать периодически мотор или ставить на сигнализацию. Как будет отключаться ардуинка, чтоб сбрасывать это значение в ноль непонятно..
Чета я сомневаюсь, что программный UART на 57600 стабильно заработает. Лучше отладку в него на 9600 пиши, а читалку на аппаратный подвесь.
Извините, можно как-нибудь объяснить а то я новичек в ардуино. почему лучше вместо 57600 9600 написать и что за читалка?
а кроме этого что-нибудь еще может нужно написать? и еще я хотел галетный 3-х позиционный переключатель поставить для образца вместо замка зажигания. В 0 позиции выключен, в 1 позиции подается только питание на ардуино и сканер отпечатков, чтобы сканировать палец, а уже после идентификации включается 3 позиция и заводим мотор (а у меня загорится лампочка на 12 В). Если не трудно ответьте пожалуйста как это реализовать? Имею ввиду код как доработать для этого.
Я к тому, что на больших скоростях лучше использовать аппаратный UART (пины 0 и 1).
а на это влияет то, что 2 и 3 тоже подключены??
на работу схемы не повлияет :)
на работу схемы не повлияет :)
заработало реле, но вот лампа мигнет 2 раз и вырубается, а должно гореть пока я не выключу. Что делать-то?
Посоветуйте.