Помогите, пожалуйста! Нужно подключить сканер отпечатков пальцев. вот код, который позволяет обмениваться данными сканеру с программой SFGDemo Код (C++): void setup() { Serial1.begin(57600); Serial.begin(57600); } void loop(){ while (Serial.available()) Serial1.write(Serial.read()); while (Serial1.available()) Serial.write(Serial1.read()); } Для работы ардуинки Леонарды со сканером необходим следующий код Код (C++): SoftwareSerial mySerial(8, 9); //( RX, TX ); Adafruit_Fingerprint finger(&mySerial); Как только создаю объект SoftwareSerial отрубается Serial1 Есть ли возможность сохранить и обмен с программой для загрузки изображений по USB через программу SFGDemo и обрабатывать распознавание отпечатка через объект SoftwareSerial? Попытался сотворить обмен через 8 и 9 пин, используя объект SoftwareSerial вместо Serial1 Код (C++): void setup() { Serial1.begin(57600); Serial.begin(57600); } void loop(){ while (Serial.available()) mySerial.write(Serial.read()); while (mySerial.available()) Serial.write(mySerial.read()); } Но ардуинка не приняла мою логику. У кого есть знания или идеи подскажите.
Этот код без изменений будет работать на Леонардо, softwareserial не нужен. Сканер подключать к пинам 0 и 1
Прошу прощения за то что не умею формулировать вопросы! Код (C++): #include <Adafruit_Fingerprint.h> #include <SoftwareSerial.h> void setup() { while(!Serial); // Ожидание инициализации аппаратного UART delay(500); // Ожидание инициализации модуля отпечатков пальцев Serial.begin(9600); // Инициализация аппаратного UART на скорости 9600 Serial1.begin(57600); Serial.begin(57600); pinMode(A0, INPUT); // Регистрация нажатия на сенсор pinMode(10, OUTPUT); // Управление питанием сканера pinMode(4, INPUT); // Кнопка переключения режимов записи и чтения if(digitalRead(4)){ digitalWrite(10, HIGH); while(1){ while (Serial.available()) Serial1.write(Serial.read()); while (Serial1.available()) Serial.write(Serial1.read()); } } else{ readMyFinger(); } } void loop(){} void readMyFinger(){ ///работает SoftwareSerial mySerial(8, 9); //ИМЯ_ОБЪЕКТА( RX, TX ); Adafruit_Fingerprint finger(&mySerial); finger.begin(57600); while(1){ if(analogRead(A0)<300){ digitalWrite(10, HIGH); delay(500); if(finger.getImage() == FINGERPRINT_OK){ // Захватываем изображение, если результат выполнения равен константе FINGERPRINT_OK (корректная загрузка изображения), то проходим дальше Serial.println("Image7"); if(finger.image2Tz() == FINGERPRINT_OK){ // Конвертируем полученное изображение, если результат выполнения равен константе FINGERPRINT_OK (изображение сконвертировано), то проходим дальше if(finger.fingerFastSearch() == FINGERPRINT_OK){ // Находим соответствие в базе данных отпечатков пальцев, если результат выполнения равен константе FINGERPRINT_OK (найдено соответствие), то проходим дальше Serial.print("Found ID="); Serial.print(finger.fingerID); Serial.print(", with confidence of "); Serial.println(finger.confidence); } } } delay(500); } digitalWrite(10, LOW); delay(500); } } Две части кода, одна работает для связи с SFGDemo, через нее реально нагляднее загружать изображения, а вторая часть кода обрабатывает переданное на сканер изображение после прикладывания пальца. Переключение режимов по нажатию кнопки. Вопрос если я втыкаю одновременно в TX сканера в D0 и D8, а его RX в D1 и D9 не работает ничего, по всей видимости Serial1 и не дает работать mySerial. Можно ли поправить? И стоит ли?
Ну там не все в setup() Логика такая, что при подаче питания на ардуинку, она выбирает в каком режиме работать. В setup() лишь выбирается какой из циклов запустится, цикл опроса Serial1 или mySerial. Не могу придумать как объединить эти два объекта, я втыкаю одновременно в TX сканера в D0 и D8, а его RX в D1 и D9, тут видимо конфликт возникает когда передача приходит на D0 она автоматом отрубает D8 (((, та же хрень с приемом. Мысль приходит только одна переключать пины физически, релешкой например, но это какое-то не эстетическое решение. Моих знаний не хватает, очень прошу помощи
Не надо никакого одновременного втыкания в D0 и D8 и softserial тоже В функции readmyfinger инициализируйте с serial1 и все
ANV, правильно ли я понял что необходима следующая запись Adafruit_Fingerprint finger(&Serial1); вместо Adafruit_Fingerprint finger(&mySerial); ????