Arduino Leonardo не печатает ничего на последовательный монитор с моим конкретным кодом
Я сделал проект с Arduino Leonardo и датчиком отпечатков пальцев (DY50).
Когда я загрузил пример регистрации из
библиотеки отпечатков пальцев Adafruit
и сохранил свой отпечаток, все сработало. Но когда я загружаю свой код, он ничего не печатает.
Мой код
#include <Keyboard.h>
#include <Adafruit_Fingerprint.h>
#define mySerial Serial1
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int fingerprintID = 0;
String inData;
bool isRight;
int pos;
//Количество сервисов для входа
#define servNum 5
//URL для входа в Google, Amazon, Stackoverflow, Arduino и Github
String LogInURL[] = {"https://accounts.google.com/signin", "https://www.amazon.de/ap/signin", "https://stackoverflow.com/users/login", "https://login.arduino.cc/", "https://github.com/login"};
String LogInUser[] = {"[email protected]", "[email protected]", "[email protected]", "username", "username"};
String LogInPwd[] = {"password", "password", "password", "password", "password"};
void donothing() {};
void StepsBefore(int serviceNum){
switch(serviceNum){
case 0: donothing(); break;
case 1: donothing(); break;
case 2: for(int k=0; k<18; k++) Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); break;
case 3: for(int k=0; k<2; k++) Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); break;
case 4: donothing(); break;
default: Serial.println("Error: Number not recognized."); break;
}
}
void StepsAfter(int serviceNum){
switch(serviceNum){
case 0: Keyboard.println(); break;
case 1: Keyboard.println(); break;
case 2: Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); break;
case 3: Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); break;
case 4: for(int k=0; k<2; k++) Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); break;
default: Serial.println("Error: Number not recognized."); break;
}
}
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;
Serial.print("Found ID #");
Serial.print(finger.fingerID);
Serial.print(" with confidence of ");
Serial.println(finger.confidence);
return finger.fingerID;
}
void askForFingerprint() {
fingerprintID = getFingerprintIDez();
delay(50);
if(fingerprintID == 1){
isRight = true;
}
}
void delAfterChar(String inString, String fromToKill){
pos = inString.indexOf(fromToKill);
inString.remove(pos, 1000);
inData = inString;
}
void setup() {
Serial.begin(115200);
Serial.println("Debug 1");
Keyboard.begin();
Serial.println("Debug 2");
finger.begin(57600);
Serial.println("Debug 3");
if(finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
}
else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
}
void loop() {
inData = Serial.read();
delAfterChar(inData, "?openid"); //Amazon
delAfterChar(inData, "/v2/"); //Google
delAfterChar(inData, "?ssrc"); //Stackoverflow
delAfterChar(inData, "login?state"); //Arduino
for (int i=0; i<servNum; i++){
if(inData == LogInURL[i]){
askForFingerprint();
if(isRight == true){
StepsBefore(i);
Keyboard.print(LogInUser[i]);
StepsAfter(i);
Keyboard.println(LogInPwd[i]);
}
else Serial.println("Finger not recognized");
}
}
}
То что я пробовал до сих пор
- Я изменил скорость
передачи данных с 9600
на15200
, не помогло - Добавлено несколько отладочных точек в
настройках
, чтобы проверить там ошибку, ничего не изменилось - Загрузил простой Hello World через Serial Monitor Sketch, отлично сработал
Вопрос
В чем может быть проблема? Он компилируется без сообщения об ошибке. Если вы увидите какие-либо ошибки в кодировании, обратная связь будет очень кстати.
ПРАВКА
Использование вместо этого SoftwareSerial тоже не помогло.
@Python Schlange, 👍1
Обсуждение1 ответ
Лучший ответ:
▲ 1
Как отметил @Juraj, я просто забыл использовать while (!Serial)
в настройке
, вероятно, потому, что я использую другие платы, которые не нуждаются в этом чаще.
,
@Python Schlange
Смотрите также:
- Может ли Arduino Leonardo одновременно использовать USB-порт и последовательные контакты RX TX?
- Mac не обнаруживает последовательный порт для Леонардо
- Проблема с загрузкой скетча в Леонардо
- Arduino Leonardo на Win 8.1 COM-порт пропал
- Последовательные порты на Arduino UNO/Leonardo инициализируются по-разному?
- Что происходит с последовательным выводом, когда никто не слушает?
- Как отлаживать ввод MIDI?
- Как определить, какая скорость передачи данных установлена для виртуального COM-порта?
@jsotola Я сделал это, как описано в третьем пункте того, что я уже пробовал. Извините, если это не понятно, я не говорю по-английски., @Python Schlange
добавить
while (!Serial);
после Serial.begin, @JurajСпасибо, @Juraj, совсем забыл об этом. Но почему печать
Hello World
работала без этого?, @Python Schlangeпечать Hello World была в петле? подключение не занимает много времени, но код работает быстро, @Juraj
@Juraj Да, это было., @Python Schlange