Страница 1 из 1
Сканер отпечатков пальцев
Добавлено: 01 сен 2018, 19:00
Ivan_Kornege
Модули отпечатков пальцев ZFM-20 и ZFM-60 достались на распродаже.
Пытаюсь применить в электронном замке на входную дверь.
Блоков я так понял никто не делал для ФлПрога.
Материалы для создания блока использую отсюда :
Сканер отпечатков пальцев
и
Контроль доступа по отпечатку пальца
Подходить решил поэтапно - сначала подключить сканер и выводить информацию на дисплей о его нахождении или отсутствии при обрыве контакта(или неисправности сканера).
Протестировал такой скетч, работает:
Код: Выделить всё
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <Adafruit_Fingerprint.h>
LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
bool ScanS;
String ScanS_txt;
bool FoundS;
String FoundS_txt;
String PleaseFinger;
bool NotfoundS;
String NotfoundS_txt;
byte N_ID;
//SoftwareSerial mySerial(2, 3); // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
SoftwareSerial mySerial( 2, 3); // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
Adafruit_Fingerprint finger= Adafruit_Fingerprint(&mySerial); // объявляем объект finger для работы с библиотекой Adafruit_Fingerprint ИМЯ_ОБЪЕКТА = Adafruit_Fingerprint(ПАРАМЕТР);
// ПАРАМЕТР - ссылка на объект для работы с UART к которому подключен модуль, например: &Serial1
int _disp1oldLength = 0;
int _disp3oldLength = 0;
void setup()
{
pinMode(13, OUTPUT);
_lcd1.begin(16, 2);
_lcd1.clear(); // стираем информацию с дисплея
_lcd1.setCursor(0, 0); _lcd1.print("iArduino.ru"); // выводим текст "iArduino.ru"
delay(500); // обязательная задержка перед инициализацией модуля отпечатков пальцев
finger.begin(57600); // инициируем модуль отпечатков пальцев, с подключением через программный UART на скорости 57600 (скорость модуля по умолчанию)
_lcd1.clear(); // стираем информацию с дисплея
_lcd1.setCursor(0, 0); _lcd1.print(F("Scan sensor...")); // выводим текст "Scan sensor..."
_lcd1.setCursor(0, 1); // устанавливаем курсор в позицию: 0 столбец, 1 строка
if(finger.verifyPassword()){_lcd1.print("Found sensor");} // если модуль отпечатков обнаружен, выводим сообщение "сенсор обнаружен"
else {_lcd1.print("Sensor not found"); while(1);} // если модуль отпечатков не обнаружен, выводим сообщение "сенсор не обнаружен" и входим в бесконечный цикл: while(1);
delay(1000); // необязательная задержка, чтоб можно было прочитать сообщение об обнаружении модуля
}
void loop() {
// put your main code here, to run repeatedly:
}
Попробовал из него сделать пользовательский блок.
Хотел получать текстовые сообщения с выхода ПБ "ScanS" уровни 0 или 1, а с другого выхода "ScanS_txt" текстовое сообщение.
Fingerprint_scan_true.JPG
Что то не получается.
Если в коде закомментировать " while(1);" тогда при отключенном сканере выводится "ScanS" уровнь 1, а с выхода "Scan_txt" текстовое сообщение.
Если раскомментировать " while(1);" перестает выводить .
Гуру подскажите или поправьте блок плиз.
Скачать проект с блоком
отсюда
Сканер отпечатков пальцев
Добавлено: 01 сен 2018, 19:17
kalobyte
у тебя часть кода не в том месте находится
while(1); это бесконечный цикл в секции, где должен быть одноразовый код
он у тебя выполнился один раз и потом контроллер просто тупо зациклился, не выполняя больше никакого кода
if(finger.verifyPassword()){_lcd1.print("Found sensor");} // если модуль отпечатков обнаружен, выводим сообщение "сенсор обнаружен"
else {_lcd1.print("Sensor not found");
этот кусок должен постоянно выполняться в секции луп
ну и у тебя нет куска кода, который отвечает за запись отпечатка
или он там заливается в сам сканер каким-то софтом заранее?
Сканер отпечатков пальцев
Добавлено: 01 сен 2018, 19:51
Ivan_Kornege
kalobyte писал(а): 01 сен 2018, 19:17у тебя часть кода не в том месте находится
while(1); это бесконечный цикл в секции, где должен быть одноразовый код
он у тебя выполнился один раз и потом контроллер просто тупо зациклился, не выполняя больше никакого кода
Это я знаю.
В
скетче отсюда while(1); расположен в void setup(). Поэтому я его туда и затолкнул в блоке.
kalobyte писал(а): 01 сен 2018, 19:17if(finger.verifyPassword()){_lcd1.print("Found sensor");} // если модуль отпечатков обнаружен, выводим сообщение "сенсор обнаружен"
else {_lcd1.print("Sensor not found");
этот кусок должен постоянно выполняться в секции луп
Сейчас попробую переделать.
kalobyte писал(а): 01 сен 2018, 19:17ну и у тебя нет куска кода, который отвечает за запись отпечатка
или он там заливается в сам сканер каким-то софтом заранее?
Это следующий этап. Пытаюсь сначала запустить определение сканера.
Потом буду доплнять функционал.
Отправлено спустя 15 минут 19 секунд:
while(1); вообще убрать?
Сканер отпечатков пальцев
Добавлено: 01 сен 2018, 20:08
kalobyte
естественно, дальшей этой строки у тебя просто код не будет выполняться никогда
скетч отсюда
https://wiki.iarduino.ru/page/skaner-ot ... ov-palcev/
его писал какой-то поехавший
Сканер отпечатков пальцев
Добавлено: 01 сен 2018, 20:21
Ivan_Kornege
kalobyte писал(а): 01 сен 2018, 20:08естественно, дальшей этой строки у тебя просто код не будет выполняться никогда
если смотреть на пример от
производителя то там также в void setup() присутствует while (1).
Вот кусок кода:
Код: Выделить всё
void setup()
{
Serial.begin(9600);
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);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
finger.getTemplateCount();
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
Serial.println("Waiting for valid finger...");
}
Сканер отпечатков пальцев
Добавлено: 01 сен 2018, 20:41
Anydy
Не изучал, но насколько я понимаю в сетапе пока функция finger.verifyPassword() не вернула 1, то все ...программа стопориться
Сканер отпечатков пальцев
Добавлено: 01 сен 2018, 21:13
Ivan_Kornege
[ref=#aa0000]Anydy[/ref],
Вот этот код работает:
Код: Выделить всё
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <Adafruit_Fingerprint.h>
LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
bool ScanS;
String ScanS_txt;
bool FoundS;
String FoundS_txt;
String PleaseFinger;
bool NotfoundS;
String NotfoundS_txt;
byte N_ID;
//SoftwareSerial mySerial(2, 3); // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
SoftwareSerial mySerial( 2, 3); // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
Adafruit_Fingerprint finger= Adafruit_Fingerprint(&mySerial); // объявляем объект finger для работы с библиотекой Adafruit_Fingerprint ИМЯ_ОБЪЕКТА = Adafruit_Fingerprint(ПАРАМЕТР);
// ПАРАМЕТР - ссылка на объект для работы с UART к которому подключен модуль, например: &Serial1
int _disp1oldLength = 0;
int _disp3oldLength = 0;
void setup()
{
pinMode(13, OUTPUT);
_lcd1.begin(16, 2);
_lcd1.clear(); // стираем информацию с дисплея
_lcd1.setCursor(0, 0); _lcd1.print("iArduino.ru"); // выводим текст "iArduino.ru"
delay(500); // обязательная задержка перед инициализацией модуля отпечатков пальцев
finger.begin(57600); // инициируем модуль отпечатков пальцев, с подключением через программный UART на скорости 57600 (скорость модуля по умолчанию)
_lcd1.clear(); // стираем информацию с дисплея
_lcd1.setCursor(0, 0); _lcd1.print(F("Scan sensor...")); // выводим текст "Scan sensor..."
_lcd1.setCursor(0, 1); // устанавливаем курсор в позицию: 0 столбец, 1 строка
if(finger.verifyPassword()){_lcd1.print("Found sensor");} // если модуль отпечатков обнаружен, выводим сообщение "сенсор обнаружен"
else {_lcd1.print("Sensor not found"); while(1);} // если модуль отпечатков не обнаружен, выводим сообщение "сенсор не обнаружен" и входим в бесконечный цикл: while(1);
delay(1000); // необязательная задержка, чтоб можно было прочитать сообщение об обнаружении модуля
}
void loop() {
// put your main code here, to run repeatedly:
}
А когда я делаю блок и в флпрог получется такой код, то перестает работать:
Код: Выделить всё
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <Adafruit_Fingerprint.h>
LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
bool ScanS;
String ScanS_txt;
bool FoundS;
String FoundS_txt;
bool NotfoundS;
String NotfoundS_txt;
String PleaseFinger;
byte N_ID;
//SoftwareSerial mySerial(2, 3); // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
SoftwareSerial mySerial( 2, 3); // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
Adafruit_Fingerprint finger= Adafruit_Fingerprint(&mySerial); // объявляем объект finger для работы с библиотекой Adafruit_Fingerprint ИМЯ_ОБЪЕКТА = Adafruit_Fingerprint(ПАРАМЕТР);
// ПАРАМЕТР - ссылка на объект для работы с UART к которому подключен модуль, например: &Serial1
int _disp1oldLength = 0;
int _disp2oldLength = 0;
int _disp3oldLength = 0;
void setup()
{
pinMode(13, OUTPUT);
_lcd1.begin(16, 2);
delay(500); // обязательная задержка 0,5 сек перед инициализацией модуля отпечатков пальцев
finger.begin(57600); // инициируем модуль отпечатков пальцев, с подключением через программный UART на скорости 57600 (скорость модуля по умолчанию)
ScanS = true; // пока идет поиск сенсора присутствует true
ScanS_txt = ("Scan sensor...") ; // Вывод сообщения "Поиск сенсора" в виде String
if(finger.verifyPassword())
{
FoundS = true; // Если модуль отпечатков обнаружен появится уровень true
FoundS_txt = (String("Found sensor!")) ; // Если модуль отпечатков обнаружен, выводим сообщение "сенсор обнаружен" ввиде String
}
else
{
FoundS = false; // Если модуль отпечатков не обнаружен на выходе FoundS появится уровень false
NotfoundS = true; // Если модуль отпечатков не обнаружен появится уровень true
NotfoundS_txt = ("Sensor not found"); // если модуль отпечатков не обнаружен, выводим сообщение "сенсор не обнаружен"
while(1); // если модуль отпечатков не обнаружен, выводим сообщение "сенсор не обнаружен" и входим в бесконечный цикл: while(1);
}
delay(1000); // необязательная задержка, чтоб можно было прочитать сообщение об обнаружении модуля
}
void loop()
{if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}
//Плата:1
if (NotfoundS) {
_dispTempLength1 = ((NotfoundS_txt)).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print((NotfoundS_txt));
} else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (FoundS) {
_dispTempLength1 = ((FoundS_txt)).length();
if (_disp2oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print((FoundS_txt));
} else {
if (_disp2oldLength > 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
digitalWrite(13, ScanS);
if (ScanS) {
_dispTempLength1 = ((ScanS_txt)).length();
if (_disp3oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp3oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print((ScanS_txt));
} else {
if (_disp3oldLength > 0) {_isNeedClearDisp1 = 1; _disp3oldLength = 0;}
}
}
Отправлено спустя 5 минут 2 секунды:
Fingerprint_scan_true_V0.JPG
Сканер отпечатков пальцев
Добавлено: 01 сен 2018, 21:22
kalobyte
Ivan_Kornege писал(а): 01 сен 2018, 21:08while(1); // если модуль отпечатков не обнаружен, выводим сообщение "сенсор не обнаружен" и входим в бесконечный цикл: while(1)
все же написано
Отправлено спустя 3 минуты 46 секунд:
[ref]Ivan_Kornege[/ref],
зря делаеш в модуле строки, это лишняя работа и усложнение модуля
делай какой выход булевый и его вешай на индикатор, в индикаторе не забудь указать строку и столбец для надписей, чтобы они друг друга не перекрывали
Сканер отпечатков пальцев
Добавлено: 01 сен 2018, 21:42
Ivan_Kornege
[ref]kalobyte[/ref], именно так и работает скейтч. Но код который делается в ФЛПРОГ не работает.
Отправлено спустя 18 минут 3 секунды:
kalobyte писал(а): 01 сен 2018, 21:22зря делаеш в модуле строки, это лишняя работа и усложнение модуля
делай какой выход булевый
Fingerprint_scan_true_V_0.JPG
именно так и будет блок в конечном варианте, сейчас строки вывожу что бы визуально отобразить на дисплее в период отстройки
Сканер отпечатков пальцев
Добавлено: 01 сен 2018, 22:43
kalobyte
Ivan_Kornege писал(а): 01 сен 2018, 21:42сейчас строки вывожу что бы визуально отобразить на дисплее в период отстройки
неправильно делаеш
отстраивают сначала в коде, там можно добавлять вывод в консоль
как заработает в коде, то можно переносить в блок 100% работающий код
ну и я бы не использовал софтовый юарт, есть же железный
Сканер отпечатков пальцев
Добавлено: 02 сен 2018, 10:24
AVGN
Ivan_Kornege писал(а): 01 сен 2018, 21:13Вот этот код работает:
Код: Выделить всё
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <Adafruit_Fingerprint.h>
LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
bool ScanS;
String ScanS_txt;
bool FoundS;
String FoundS_txt;
String PleaseFinger;
bool NotfoundS;
String NotfoundS_txt;
byte N_ID;
//SoftwareSerial mySerial(2, 3); // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
SoftwareSerial mySerial( 2, 3); // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
Adafruit_Fingerprint finger= Adafruit_Fingerprint(&mySerial); // объявляем объект finger для работы с библиотекой Adafruit_Fingerprint ИМЯ_ОБЪЕКТА = Adafruit_Fingerprint(ПАРАМЕТР);
// ПАРАМЕТР - ссылка на объект для работы с UART к которому подключен модуль, например: &Serial1
int _disp1oldLength = 0;
int _disp3oldLength = 0;
void setup()
{
pinMode(13, OUTPUT);
_lcd1.begin(16, 2);
_lcd1.clear(); // стираем информацию с дисплея
_lcd1.setCursor(0, 0); _lcd1.print("iArduino.ru"); // выводим текст "iArduino.ru"
delay(500); // обязательная задержка перед инициализацией модуля отпечатков пальцев
finger.begin(57600); // инициируем модуль отпечатков пальцев, с подключением через программный UART на скорости 57600 (скорость модуля по умолчанию)
_lcd1.clear(); // стираем информацию с дисплея
_lcd1.setCursor(0, 0); _lcd1.print(F("Scan sensor...")); // выводим текст "Scan sensor..."
_lcd1.setCursor(0, 1); // устанавливаем курсор в позицию: 0 столбец, 1 строка
if(finger.verifyPassword()){_lcd1.print("Found sensor");} // если модуль отпечатков обнаружен, выводим сообщение "сенсор обнаружен"
else {_lcd1.print("Sensor not found"); while(1);} // если модуль отпечатков не обнаружен, выводим сообщение "сенсор не обнаружен" и входим в бесконечный цикл: while(1);
delay(1000); // необязательная задержка, чтоб можно было прочитать сообщение об обнаружении модуля
}
void loop() {
// put your main code here, to run repeatedly:
}
В этом коде while(1); тоже while(true). Т.е. своего рода так делается loop до тех пор пока ,как Andy написал:
" пока функция finger.verifyPassword() не вернула 1".
В данном случае LCD находится в функции void setup() до while(1) и поэтому выводится информация на LCD.
А функция void loop() не начнет выполнятся, пока
" пока функция finger.verifyPassword() не вернула 1".
Ivan_Kornege писал(а): 01 сен 2018, 21:13А когда я делаю блок и в флпрог получется такой код, то перестает работать:
Код: Выделить всё
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <Adafruit_Fingerprint.h>
LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
bool ScanS;
String ScanS_txt;
bool FoundS;
String FoundS_txt;
bool NotfoundS;
String NotfoundS_txt;
String PleaseFinger;
byte N_ID;
//SoftwareSerial mySerial(2, 3); // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
SoftwareSerial mySerial( 2, 3); // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
Adafruit_Fingerprint finger= Adafruit_Fingerprint(&mySerial); // объявляем объект finger для работы с библиотекой Adafruit_Fingerprint ИМЯ_ОБЪЕКТА = Adafruit_Fingerprint(ПАРАМЕТР);
// ПАРАМЕТР - ссылка на объект для работы с UART к которому подключен модуль, например: &Serial1
int _disp1oldLength = 0;
int _disp2oldLength = 0;
int _disp3oldLength = 0;
void setup()
{
pinMode(13, OUTPUT);
_lcd1.begin(16, 2);
delay(500); // обязательная задержка 0,5 сек перед инициализацией модуля отпечатков пальцев
finger.begin(57600); // инициируем модуль отпечатков пальцев, с подключением через программный UART на скорости 57600 (скорость модуля по умолчанию)
ScanS = true; // пока идет поиск сенсора присутствует true
ScanS_txt = ("Scan sensor...") ; // Вывод сообщения "Поиск сенсора" в виде String
if(finger.verifyPassword())
{
FoundS = true; // Если модуль отпечатков обнаружен появится уровень true
FoundS_txt = (String("Found sensor!")) ; // Если модуль отпечатков обнаружен, выводим сообщение "сенсор обнаружен" ввиде String
}
else
{
FoundS = false; // Если модуль отпечатков не обнаружен на выходе FoundS появится уровень false
NotfoundS = true; // Если модуль отпечатков не обнаружен появится уровень true
NotfoundS_txt = ("Sensor not found"); // если модуль отпечатков не обнаружен, выводим сообщение "сенсор не обнаружен"
while(1); // если модуль отпечатков не обнаружен, выводим сообщение "сенсор не обнаружен" и входим в бесконечный цикл: while(1);
}
delay(1000); // необязательная задержка, чтоб можно было прочитать сообщение об обнаружении модуля
}
void loop()
{if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}
//Плата:1
if (NotfoundS) {
_dispTempLength1 = ((NotfoundS_txt)).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print((NotfoundS_txt));
} else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (FoundS) {
_dispTempLength1 = ((FoundS_txt)).length();
if (_disp2oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print((FoundS_txt));
} else {
if (_disp2oldLength > 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
digitalWrite(13, ScanS);
if (ScanS) {
_dispTempLength1 = ((ScanS_txt)).length();
if (_disp3oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp3oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print((ScanS_txt));
} else {
if (_disp3oldLength > 0) {_isNeedClearDisp1 = 1; _disp3oldLength = 0;}
}
}
FlProg не ставит код штатных блоков LCD в функцию void setup(). А заталкивает в void loop().
И соответственно если дактилоскоп не подключен (не найден) , то крутится все что до while(1) , а функция void loop() не исполняется.
Начнет исполнятся void loop() когда дактилоскоп будет определен, тогда и LCD запустится -он же в void loop() находится.
Вот теперь задача - можно ли затолкнуть штатный дисплей в void setup() ?
Я раньше такой возможности не нашел как это можно сделать в FlProg.
Можно конечно сделать блок дисплея код которого, при конвертации, FlProg вставляла в функцию void setup().
Ну как то так теоретически.
Отправлено спустя 7 минут 45 секунд:
kalobyte писал(а): 01 сен 2018, 22:43неправильно делаеш
отстраивают сначала в коде, там можно добавлять вывод в консоль
как заработает в коде, то можно переносить в блок 100% работающий код
да нечего там отстраивать - производитель дактилоскопа сделал библиотеку и примеры -они рабочие.
Теперь из этого надо перелепить в блок FlProg.
Программа не совсем все делает так как если ручками писать код.
Все правильно Ваня делает -железячники тестируют все в железе.
Отправлено спустя 8 минут 2 секунды:
kalobyte писал(а): 01 сен 2018, 22:43ну и я бы не использовал софтовый юарт, есть же железный
Просто идет по пути наименьшего сопротивления. Он же делает блок из работающего кода.
Сканер отпечатков пальцев
Добавлено: 02 сен 2018, 11:33
kalobyte
AVGN писал(а): 02 сен 2018, 10:24Он же делает блок из работающего кода.
так у него походу датчик нерабочий

Сканер отпечатков пальцев
Добавлено: 02 сен 2018, 21:26
Ivan_Kornege
kalobyte писал(а): 02 сен 2018, 11:33так у него походу датчик нерабочий

сканеры рабочие -загружал все примеры и записал отпечатки и считал все отлично, я в первом посте писал:
Ivan_Kornege писал(а): 01 сен 2018, 19:00Протестировал такой скетч, работает:
Отправлено спустя 1 час 10 минут 54 секунды:
[ref]AVGN[/ref], походу надо делать блок со встроенным дисплеем.
Сканер отпечатков пальцев
Добавлено: 06 сен 2018, 17:56
AVGN
[ref]Ivan_Kornege[/ref], загрузил
сюда