Невозможно напечатать элемент в определенной позиции в списке Arduino.
Я пытался напечатать элемент списка с той же позицией, что и число, которому он соответствует, но, похоже, это не работает, и я не могу понять, допустил ли я какую-то ошибку, может кто-нибудь проверить это? Был бы очень признателен
Вот объявления списка:
int names[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
char *users[10] = {"Josh", "John", "Frederic", "Mikael", "Anthony", "Charles", "Tom", "Chris", "Steve", "Mike" };
И вот что я использую, чтобы напечатать нужное мне имя:
if (attempt != FINGERPRINT_OK) return -1;
Serial.println ("Belongs to: ");
if(data.fingerID == names[n]) {
Serial.print(users[n]);
}
Полный код:
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
pinMode (12, OUTPUT);
pinMode (13, OUTPUT);
Adafruit_Fingerprint data = Adafruit_Fingerprint(&mySerial);
int names[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
char *users[10] = {"Josh", "John", "Frederic", "Mikael", "Anthony",
"Charles", "Tom", "Chris", "Steve", "Mike" };
void setup() {
Serial.begin(9600);
while (!Serial);
data.begin(57600);
if (data.verifyPassword()) {
Serial.println("Verified connection");
}
else {
Serial.println("Unnable to verify connection, try again");
while (1) { delay(2500); }
}
data.getTemplateCount();
Serial.print("Waiting for one of the:"); Serial.print(data.templateCount);
Serial.println("valid fingerprint");
int getFingerprintIDez();
uint8_t getFingerprintID();
void loop() {
for ( int i = 0; i <= 10; i++) {
uint8_t attempt = data.getImage();
switch (attempt) {
case FINGERPRINT_OK:
break;
delay (2500);
}
attempt = data.image2Tz();
switch (attempt) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return attempt;
}
attempt = data.fingerFastSearch();
if (attempt == FINGERPRINT_OK) {
Serial.println("Found a print match!");
digitalWrite (13, HIGH);
delay(1250 );
digitalWrite (13, LOW);
}
else if (attempt == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
digitalWrite (12, HIGH);
delay(1250 );
digitalWrite (12, LOW);
return attempt;
}
Serial.print("Found ID #"); Serial.print(data.fingerID);
Serial.print(" with confidence of "); Serial.println(data.confidence);
return data.fingerID;
uint8_t attempt2 = data.getImage();
if (attempt2 != FINGERPRINT_OK) return -1;
attempt2 = data.image2Tz();
if (attempt2 != FINGERPRINT_OK) return -1;
attempt2 = data.fingerFastSearch();
if (attempt2 != FINGERPRINT_OK) return -1;
Serial.println ("Presents: ");
if(data.fingerID == names[n]) {
Serial.print(users[n]);
}
}
}
Я пытаюсь, чтобы при проверке отпечатка пальца позиция, которая соответствует ему из всех сохраненных отпечатков пальцев, сохранялась как n, чтобы я мог позже напечатать имя, присвоенное этой той же позиции. Спасибо
@rag1618, 👍0
Обсуждение1 ответ
▲ 1
Как насчет полного удаления
int names[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
и вместо этого сделайте:
if (attempt != FINGERPRINT_OK)
return -1;
Serial.println ("Belongs to: ");
Serial.print(users[data.fingerID - 1]);
,
@Filip Franik
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Что такое «н»? Пожалуйста, предоставьте полный и минималистичный пример, который мы можем отладить., @Filip Franik
Как выглядит ваш фактический результат? Как вы хотите, чтобы это выглядело вместо этого?, @JRobert
Прямо сейчас я не могу загрузить его, потому что «n» не было объявлено в этой области. В прошлый раз, когда я пытался, он не смог распознать имя, связанное с каждым значением отпечатка пальца, поэтому имена не были напечатаны., @rag1618