Невозможно напечатать элемент в определенной позиции в списке 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, чтобы я мог позже напечатать имя, присвоенное этой той же позиции. Спасибо

, 👍0

Обсуждение

Что такое «н»? Пожалуйста, предоставьте полный и минималистичный пример, который мы можем отладить., @Filip Franik

Как выглядит ваш фактический результат? Как вы хотите, чтобы это выглядело вместо этого?, @JRobert

Прямо сейчас я не могу загрузить его, потому что «n» не было объявлено в этой области. В прошлый раз, когда я пытался, он не смог распознать имя, связанное с каждым значением отпечатка пальца, поэтому имена не были напечатаны., @rag1618


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]);
,