модуль RDM6300 + pro micro

Ivan458
Offline
Зарегистрирован: 25.02.2020

Добрый день, возможно ли подключить ардуино про микро к модулю rfid rdm6300?

если да подскажите схему пожалуйста. На uno читает и выдает в мониторе данные, на pro micro не хочет, пробовал подключить к rx и tx ножкам. задача чтение и ввод в поле полученного кода карты. 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

На микро есть Serial и Serial1 один из них для монитора, а второй для связи по Rx Tx ... 

Ivan458
Offline
Зарегистрирован: 25.02.2020

Исходя из распиновки я должен подклчить rx и tx считывателя к ножкам 0 и 1 ? правильно вас понимаю?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Да и это Serial1 !!!

Что бы передать данные на компьютер используйте Serial

#define SERIAL_PORT_MONITOR        Serial
#define SERIAL_PORT_USBVIRTUAL     Serial
#define SERIAL_PORT_HARDWARE       Serial1
#define SERIAL_PORT_HARDWARE_OPEN  Serial1

// Alias SerialUSB to Serial
#define SerialUSB SERIAL_PORT_USBVIRTUAL

 

Ivan458
Offline
Зарегистрирован: 25.02.2020
// (c) Michael Schoeffler 2018, http://www.mschoeffler.de
#include <SoftwareSerial.h>
#define SERIAL_PORT_MONITOR        Serial
#define SERIAL_PORT_USBVIRTUAL     Serial
#define SERIAL_PORT_HARDWARE       Serial1
#define SERIAL_PORT_HARDWARE_OPEN  Serial1
 
// Alias SerialUSB to Serial
#define SerialUSB SERIAL_PORT_USBVIRTUAL

const int BUFFER_SIZE = 14; // RFID DATA FRAME FORMAT: 1byte head (value: 2), 10byte data (2byte version + 8byte tag), 2byte checksum, 1byte tail (value: 3)
const int DATA_SIZE = 10; // 10byte data (2byte version + 8byte tag)
const int DATA_VERSION_SIZE = 2; // 2byte version (actual meaning of these two bytes may vary)
const int DATA_TAG_SIZE = 8; // 8byte tag
const int CHECKSUM_SIZE = 2; // 2byte checksum

SoftwareSerial ssrfid = SoftwareSerial(0,1); 

uint8_t buffer[BUFFER_SIZE]; // used to store an incoming data frame 
int buffer_index = 0;

void setup() {
 Serial.begin(9600); 
 
 ssrfid.begin(9600);
 ssrfid.listen(); 
 
 Serial.println("INIT DONE");
}

void loop() {
  if (ssrfid.available() > 0){
    bool call_extract_tag = false;
    
    int ssvalue = ssrfid.read(); // read 
    if (ssvalue == -1) { // no data was read
      return;
    }

    if (ssvalue == 2) { // RDM630/RDM6300 found a tag => tag incoming 
      buffer_index = 0;
    } else if (ssvalue == 3) { // tag has been fully transmitted       
      call_extract_tag = true; // extract tag at the end of the function call
    }

    if (buffer_index >= BUFFER_SIZE) { // checking for a buffer overflow (It's very unlikely that an buffer overflow comes up!)
      Serial.println("Error: Buffer overflow detected!");
      return;
    }
    
    buffer[buffer_index++] = ssvalue; // everything is alright => copy current value to buffer

    if (call_extract_tag == true) {
      if (buffer_index == BUFFER_SIZE) {
        unsigned tag = extract_tag();
      } else { // something is wrong... start again looking for preamble (value: 2)
        buffer_index = 0;
        return;
      }
    }    
  }    
}

unsigned extract_tag() {
    uint8_t msg_head = buffer[0];
    uint8_t *msg_data = buffer + 1; // 10 byte => data contains 2byte version + 8byte tag
    uint8_t *msg_data_version = msg_data;
    uint8_t *msg_data_tag = msg_data + 2;
    uint8_t *msg_checksum = buffer + 11; // 2 byte
    uint8_t msg_tail = buffer[13];

    // print message that was sent from RDM630/RDM6300
    Serial.println("--------");

    Serial.print("Message-Head: ");
    Serial.println(msg_head);

    Serial.println("Message-Data (HEX): ");
    for (int i = 0; i < DATA_VERSION_SIZE; ++i) {
      Serial.print(char(msg_data_version[i]));
    }
    Serial.println(" (version)");
    for (int i = 0; i < DATA_TAG_SIZE; ++i) {
      Serial.print(char(msg_data_tag[i]));
    }
    Serial.println(" (tag)");

    Serial.print("Message-Checksum (HEX): ");
    for (int i = 0; i < CHECKSUM_SIZE; ++i) {
      Serial.print(char(msg_checksum[i]));
    }
    Serial.println("");

    Serial.print("Message-Tail: ");
    Serial.println(msg_tail);

    Serial.println("--");

    long tag = hexstr_to_value(msg_data_tag, DATA_TAG_SIZE);
    Serial.print("Extracted Tag: ");
    Serial.println(tag);

    long checksum = 0;
    for (int i = 0; i < DATA_SIZE; i+= CHECKSUM_SIZE) {
      long val = hexstr_to_value(msg_data + i, CHECKSUM_SIZE);
      checksum ^= val;
    }
    Serial.print("Extracted Checksum (HEX): ");
    Serial.print(checksum, HEX);
    if (checksum == hexstr_to_value(msg_checksum, CHECKSUM_SIZE)) { // compare calculated checksum to retrieved checksum
      Serial.print(" (OK)"); // calculated checksum corresponds to transmitted checksum!
    } else {
      Serial.print(" (NOT OK)"); // checksums do not match
    }

    Serial.println("");
    Serial.println("--------");

    return tag;
}

long hexstr_to_value(char *str, unsigned int length) { // converts a hexadecimal value (encoded as ASCII string) to a numeric value
  char* copy = malloc((sizeof(char) * length) + 1); 
  memcpy(copy, str, sizeof(char) * length);
  copy[length] = '\0'; 
  // the variable "copy" is a copy of the parameter "str". "copy" has an additional '\0' element to make sure that "str" is null-terminated.
  long value = strtol(copy, NULL, 16);  // strtol converts a null-terminated string to a long value
  free(copy); // clean up 
  return value;
}

Правильно ли я сделал? 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Зачем вам софтваре сериал ?

Ivan458
Offline
Зарегистрирован: 25.02.2020

мне его убрать вовсе или заменить тем что вы выше отправили?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Все обращения к Serial измените на Serial1.

Вместо SoftwareSerial работайте просто с Serial. Подключайтесь к 0 и 1.

Первые 10 строк не нужны - они уже есть в IDE. Я их привел что бы вы увидели какой порт для чего.

Ivan458
Offline
Зарегистрирован: 25.02.2020
// (c) Michael Schoeffler 2018, http://www.mschoeffler.de
#include <SoftwareSerial.h>

const int BUFFER_SIZE = 14; // RFID DATA FRAME FORMAT: 1byte head (value: 2), 10byte data (2byte version + 8byte tag), 2byte checksum, 1byte tail (value: 3)
const int DATA_SIZE = 10; // 10byte data (2byte version + 8byte tag)
const int DATA_VERSION_SIZE = 2; // 2byte version (actual meaning of these two bytes may vary)
const int DATA_TAG_SIZE = 8; // 8byte tag
const int CHECKSUM_SIZE = 2; // 2byte checksum

Serial ssrfid = Serial(0,1); 

uint8_t buffer[BUFFER_SIZE]; // used to store an incoming data frame 
int buffer_index = 0;

void setup() {
 Serial1.begin(9600); 
 
 ssrfid.begin(9600);
 ssrfid.listen(); 
 
 Serial1.println("INIT DONE");
}

void loop() {
  if (ssrfid.available() > 0){
    bool call_extract_tag = false;
    
    int ssvalue = ssrfid.read(); // read 
    if (ssvalue == -1) { // no data was read
      return;
    }

    if (ssvalue == 2) { // RDM630/RDM6300 found a tag => tag incoming 
      buffer_index = 0;
    } else if (ssvalue == 3) { // tag has been fully transmitted       
      call_extract_tag = true; // extract tag at the end of the function call
    }

    if (buffer_index >= BUFFER_SIZE) { // checking for a buffer overflow (It's very unlikely that an buffer overflow comes up!)
      Serial1.println("Error: Buffer overflow detected!");
      return;
    }
    
    buffer[buffer_index++] = ssvalue; // everything is alright => copy current value to buffer

    if (call_extract_tag == true) {
      if (buffer_index == BUFFER_SIZE) {
        unsigned tag = extract_tag();
      } else { // something is wrong... start again looking for preamble (value: 2)
        buffer_index = 0;
        return;
      }
    }    
  }    
}

unsigned extract_tag() {
    uint8_t msg_head = buffer[0];
    uint8_t *msg_data = buffer + 1; // 10 byte => data contains 2byte version + 8byte tag
    uint8_t *msg_data_version = msg_data;
    uint8_t *msg_data_tag = msg_data + 2;
    uint8_t *msg_checksum = buffer + 11; // 2 byte
    uint8_t msg_tail = buffer[13];

    // print message that was sent from RDM630/RDM6300
    Serial1.println("--------");

    Serial1.print("Message-Head: ");
    Serial1.println(msg_head);

    Serial1.println("Message-Data (HEX): ");
    for (int i = 0; i < DATA_VERSION_SIZE; ++i) {
      Serial1.print(char(msg_data_version[i]));
    }
    Serial1.println(" (version)");
    for (int i = 0; i < DATA_TAG_SIZE; ++i) {
      Serial1.print(char(msg_data_tag[i]));
    }
    Serial1.println(" (tag)");

    Serial1.print("Message-Checksum (HEX): ");
    for (int i = 0; i < CHECKSUM_SIZE; ++i) {
      Serial1.print(char(msg_checksum[i]));
    }
    Serial1.println("");

    Serial1.print("Message-Tail: ");
    Serial1.println(msg_tail);

    Serial1.println("--");

    long tag = hexstr_to_value(msg_data_tag, DATA_TAG_SIZE);
    Serial1.print("Extracted Tag: ");
    Serial1.println(tag);

    long checksum = 0;
    for (int i = 0; i < DATA_SIZE; i+= CHECKSUM_SIZE) {
      long val = hexstr_to_value(msg_data + i, CHECKSUM_SIZE);
      checksum ^= val;
    }
    Serial1.print("Extracted Checksum (HEX): ");
    Serial1.print(checksum, HEX);
    if (checksum == hexstr_to_value(msg_checksum, CHECKSUM_SIZE)) { // compare calculated checksum to retrieved checksum
      Serial1.print(" (OK)"); // calculated checksum corresponds to transmitted checksum!
    } else {
      Serial1.print(" (NOT OK)"); // checksums do not match
    }

    Serial1.println("");
    Serial1.println("--------");

    return tag;
}

long hexstr_to_value(char *str, unsigned int length) { // converts a hexadecimal value (encoded as ASCII string) to a numeric value
  char* copy = malloc((sizeof(char) * length) + 1); 
  memcpy(copy, str, sizeof(char) * length);
  copy[length] = '\0'; 
  // the variable "copy" is a copy of the parameter "str". "copy" has an additional '\0' element to make sure that "str" is null-terminated.
  long value = strtol(copy, NULL, 16);  // strtol converts a null-terminated string to a long value
  free(copy); // clean up 
  return value;
}

А какую библиотеку мне объявить? и в стоке подключения к 0 и 1 ошибка "Serial' does not name a type"

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

2 и 19 удалить - не нужны совсем

10 исправить на #define ssrfid  Serial или просто заменить все ssrfid на Serial

Ivan458
Offline
Зарегистрирован: 25.02.2020
// (c) Michael Schoeffler 2018, http://www.mschoeffler.de
const int BUFFER_SIZE = 14; // RFID DATA FRAME FORMAT: 1byte head (value: 2), 10byte data (2byte version + 8byte tag), 2byte checksum, 1byte tail (value: 3)
const int DATA_SIZE = 10; // 10byte data (2byte version + 8byte tag)
const int DATA_VERSION_SIZE = 2; // 2byte version (actual meaning of these two bytes may vary)
const int DATA_TAG_SIZE = 8; // 8byte tag
const int CHECKSUM_SIZE = 2; // 2byte checksum
#define ssrfid  Serial
uint8_t buffer[BUFFER_SIZE]; // used to store an incoming data frame 
int buffer_index = 0;
void setup() {
 Serial1.begin(9600); 
 ssrfid.begin(9600);
 Serial1.println("INIT DONE");
}
void loop() {
  if (ssrfid.available() > 0){
    bool call_extract_tag = false;
    int ssvalue = ssrfid.read(); // read 
    if (ssvalue == -1) { // no data was read
      return;
    }
    if (ssvalue == 2) { // RDM630/RDM6300 found a tag => tag incoming 
      buffer_index = 0;
    } else if (ssvalue == 3) { // tag has been fully transmitted       
      call_extract_tag = true; // extract tag at the end of the function call
    }
    if (buffer_index >= BUFFER_SIZE) { // checking for a buffer overflow (It's very unlikely that an buffer overflow comes up!)
      Serial1.println("Error: Buffer overflow detected!");
      return;
    }
    buffer[buffer_index++] = ssvalue; // everything is alright => copy current value to buffer
    if (call_extract_tag == true) {
      if (buffer_index == BUFFER_SIZE) {
        unsigned tag = extract_tag();
      } else { // something is wrong... start again looking for preamble (value: 2)
        buffer_index = 0;
        return;
      }
    }    
  }    
}

unsigned extract_tag() {
    uint8_t msg_head = buffer[0];
    uint8_t *msg_data = buffer + 1; // 10 byte => data contains 2byte version + 8byte tag
    uint8_t *msg_data_version = msg_data;
    uint8_t *msg_data_tag = msg_data + 2;
    uint8_t *msg_checksum = buffer + 11; // 2 byte
    uint8_t msg_tail = buffer[13];
    // print message that was sent from RDM630/RDM6300
    Serial1.println("--------");
    Serial1.print("Message-Head: ");
    Serial1.println(msg_head);
    Serial1.println("Message-Data (HEX): ");
    for (int i = 0; i < DATA_VERSION_SIZE; ++i) {
      Serial1.print(char(msg_data_version[i]));
    }
    Serial1.println(" (version)");
    for (int i = 0; i < DATA_TAG_SIZE; ++i) {
      Serial1.print(char(msg_data_tag[i]));
    }
    Serial1.println(" (tag)");
    Serial1.print("Message-Checksum (HEX): ");
    for (int i = 0; i < CHECKSUM_SIZE; ++i) {
      Serial1.print(char(msg_checksum[i]));
    }
    Serial1.println("");
    Serial1.print("Message-Tail: ");
    Serial1.println(msg_tail);
    Serial1.println("--");
    long tag = hexstr_to_value(msg_data_tag, DATA_TAG_SIZE);
    Serial1.print("Extracted Tag: ");
    Serial1.println(tag);
    long checksum = 0;
    for (int i = 0; i < DATA_SIZE; i+= CHECKSUM_SIZE) {
      long val = hexstr_to_value(msg_data + i, CHECKSUM_SIZE);
      checksum ^= val;
    }
    Serial1.print("Extracted Checksum (HEX): ");
    Serial1.print(checksum, HEX);
    if (checksum == hexstr_to_value(msg_checksum, CHECKSUM_SIZE)) { // compare calculated checksum to retrieved checksum
      Serial1.print(" (OK)"); // calculated checksum corresponds to transmitted checksum!
    } else {
      Serial1.print(" (NOT OK)"); // checksums do not match
    }
    Serial1.println("");
    Serial1.println("--------");
    return tag;
}
long hexstr_to_value(char *str, unsigned int length) { // converts a hexadecimal value (encoded as ASCII string) to a numeric value
  char* copy = malloc((sizeof(char) * length) + 1); 
  memcpy(copy, str, sizeof(char) * length);
  copy[length] = '\0'; 
  // the variable "copy" is a copy of the parameter "str". "copy" has an additional '\0' element to make sure that "str" is null-terminated.
  long value = strtol(copy, NULL, 16);  // strtol converts a null-terminated string to a long value
  free(copy); // clean up 
  return value;
}

Получился следующий скетч, загрузил на ардуино, но ничего не происходит при поднесении карты(

 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Rx Tx может попутаны ?

b707
Offline
Зарегистрирован: 26.05.2017

вы бы где-нить после строчки 18 добавили вывод прочитанных данных в Монитор, лучше в HEX формате... а то сейчас непонятно - толи вы ничего не читаете. то ли читаете но не то, то ли неправильно декодируете

Ivan458
Offline
Зарегистрирован: 25.02.2020

менял их уже местами, может не ту плату выбираю? 

b707
Offline
Зарегистрирован: 26.05.2017

если бы не ту - оно бы не скомпилировалось

Ivan458
Offline
Зарегистрирован: 25.02.2020

сейчас у меня подключен модуль rfid tx и rx в про микро (0 и 1), а 5v к считывателю от юсб, правильно ли такое подключение?

Serial1.print(char(msg_data_version[i])); 

добавить после 18 строки?

b707
Offline
Зарегистрирован: 26.05.2017

Ivan458 пишет:

сейчас у меня подключен модуль rfid tx и rx в про микро (0 и 1), а 5v к считывателю от юсб, правильно ли такое подключение?

Serial1.print(char(msg_data_version[i])); 

добавить после 18 строки?

Иван, у вас в коде все перепутано.

В строке 7 вместо Serial должно быть Serial1

А во всех местах. где у вас Serial1 - нужно исправить на Сериал

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

pro micro ближе к leonardo

Ivan458
Offline
Зарегистрирован: 25.02.2020

заработало!!!!!!УРА

Ivan458
Offline
Зарегистрирован: 25.02.2020

изменил на лео

Ivan458
Offline
Зарегистрирован: 25.02.2020

Komandir, b707 мужики спасибо вам огромное)

пол дела сделали, сейчас буду изучать как полученное значения иммулировать в текстовый файл или поле программы, скажите пожалуйста это возможно ведь?)

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

без перевода на РУССКИЙ я вас не понимаю !

Возможно почти что всё.

Ivan458
Offline
Зарегистрирован: 25.02.2020

изначально задача такая: считать карту 125 кГц и передать ее в поле программы (эмуляция клавиатуры) 

на данный момент сделано чтение карт, иду дальше)

b707
Offline
Зарегистрирован: 26.05.2017

Ivan458 пишет:

изначально задача такая: считать карту 125 кГц и передать ее в поле программы (эмуляция клавиатуры)

возможно

Ivan458
Offline
Зарегистрирован: 25.02.2020

Товарищи, снова обращаюсь к вам за помощью, объявил библиотеку Keyboard.h, в методе setup добавил keyboard.begin(), в loop keyboard.print, но печать отказывается в текстовик, кто мне может подсказать что не дописал либо наоборот

// (c) Michael Schoeffler 2018, http://www.mschoeffler.de
const int BUFFER_SIZE = 14; // RFID DATA FRAME FORMAT: 1byte head (value: 2), 10byte data (2byte version + 8byte tag), 2byte checksum, 1byte tail (value: 3)
const int DATA_SIZE = 10; // 10byte data (2byte version + 8byte tag)
const int DATA_VERSION_SIZE = 2; // 2byte version (actual meaning of these two bytes may vary)
const int DATA_TAG_SIZE = 8; // 8byte tag
const int CHECKSUM_SIZE = 2; // 2byte checksum
#define ssrfid  Serial1
uint8_t buffer[BUFFER_SIZE]; // used to store an incoming data frame 
int buffer_index = 0;
#include <Keyboard.h>
void setup() {
 Serial.begin(9600); 
 ssrfid.begin(9600);
 Serial.println("INIT DONE");
 Keyboard.begin();
}
void loop() {
  if (ssrfid.available() > 0){
    bool call_extract_tag = false;
    int ssvalue = ssrfid.read(); // read 
    if (ssvalue == -1) { // no data was read
      return;
    }
    if (ssvalue == 2) { // RDM630/RDM6300 found a tag => tag incoming 
      buffer_index = 0;
    } else if (ssvalue == 3) { // tag has been fully transmitted       
      call_extract_tag = true; // extract tag at the end of the function call
    }
    if (buffer_index >= BUFFER_SIZE) { // checking for a buffer overflow (It's very unlikely that an buffer overflow comes up!)
      Serial.println("Error: Buffer overflow detected!");
      return;
    }
    buffer[buffer_index++] = ssvalue; // everything is alright => copy current value to buffer
    if (call_extract_tag == true) {
      if (buffer_index == BUFFER_SIZE) {
        unsigned tag = extract_tag();
      } else { // something is wrong... start again looking for preamble (value: 2)
        buffer_index = 0;
        return;
      }
    }    
  }    
}

unsigned extract_tag() {
    uint8_t msg_head = buffer[0];
    uint8_t *msg_data = buffer + 1; // 10 byte => data contains 2byte version + 8byte tag
    uint8_t *msg_data_version = msg_data;
    uint8_t *msg_data_tag = msg_data + 2;
    uint8_t *msg_checksum = buffer + 11; // 2 byte
    uint8_t msg_tail = buffer[13];
    // print message that was sent from RDM630/RDM6300
    Serial.println("--------");
    Serial.print("Message-Head: ");
    Serial.println(msg_head);
    Serial.println("Message-Data (HEX): ");
    for (int i = 0; i < DATA_VERSION_SIZE; ++i) {
      Serial.print(char(msg_data_version[i]));
    }
    Serial.println(" (version)");
    for (int i = 0; i < DATA_TAG_SIZE; ++i) {
      Serial.print(char(msg_data_tag[i]));
    }
    Serial.println(" (tag)");
    Serial.print("Message-Checksum (HEX): ");
    for (int i = 0; i < CHECKSUM_SIZE; ++i) {
      Serial.print(char(msg_checksum[i]));
    }
    Serial.println("");
    Serial.print("Message-Tail: ");
    Serial.println(msg_tail);
    Serial.println("--");
    long tag = hexstr_to_value(msg_data_tag, DATA_TAG_SIZE);
    Serial.print("Extracted Tag: ");
    Serial.println(tag);
    long checksum = 0;
    for (int i = 0; i < DATA_SIZE; i+= CHECKSUM_SIZE) {
      long val = hexstr_to_value(msg_data + i, CHECKSUM_SIZE);
      checksum ^= val;
    }
    Serial.print("Extracted Checksum (HEX): ");
    Serial.print(checksum, HEX);
    if (checksum == hexstr_to_value(msg_checksum, CHECKSUM_SIZE)) { // compare calculated checksum to retrieved checksum
      Serial.print(" (OK)"); // calculated checksum corresponds to transmitted checksum!
    } else {
      Serial.print(" (NOT OK)"); // checksums do not match
    }
    Serial.println("");
    Serial.println("--------");
    return tag;
    Keyboard.print("PASSWORD");
}
long hexstr_to_value(char *str, unsigned int length) { // converts a hexadecimal value (encoded as ASCII string) to a numeric value
  char* copy = malloc((sizeof(char) * length) + 1); 
  memcpy(copy, str, sizeof(char) * length);
  copy[length] = '\0'; 
  // the variable "copy" is a copy of the parameter "str". "copy" has an additional '\0' element to make sure that "str" is null-terminated.
  long value = strtol(copy, NULL, 16);  // strtol converts a null-terminated string to a long value
  free(copy); // clean up 
  return value;
}

 

Ivan458
Offline
Зарегистрирован: 25.02.2020

так выглядит инфа о карте в мониторе, мне же необходимо получать в блокнот только 00111А06 

Keyboard.print(char(msg_data_tag[i])); 

что то типа этого

b707
Offline
Зарегистрирован: 26.05.2017

Иван. а вы в коде ничего-ничего не соображаете. да? вы в курсе, что все, что после return - игнорируется?

Ivan458
Offline
Зарегистрирован: 25.02.2020

в коде да, начинающий, куда мне перекинуть тогда эту строку? в целом правильно сделал?

b707
Offline
Зарегистрирован: 26.05.2017

Ivan458 пишет:

куда мне перекинуть тогда эту строку?

хотя бы на одну строчку выше

Ivan458
Offline
Зарегистрирован: 25.02.2020

подскажите еще такой момент как мне добавить в печать переменную? а именно которая отвечает за 00111A06 (tag)

Сейчас печатает кириллицей почему то
b707
Offline
Зарегистрирован: 26.05.2017

Ivan458 пишет:

подскажите еще такой момент как мне добавить в печать переменную? а именно которая отвечает за 00111A06 (tag)

Сейчас печатает кириллицей почему то

покажите код, в коде выше вы вообще tag не печатаете, вместо этого печатаете слово "PASSWORD"

Ivan458
Offline
Зарегистрирован: 25.02.2020

Немного разобрался, сейчас печатает нужную мне переменную, но вот почему кириллицей? 

Ivan458
Offline
Зарегистрирован: 25.02.2020
Serial.println(" (version)");
    for (int i = 0; i < DATA_TAG_SIZE; ++i) {
      Serial.print(char(msg_data_tag[i]));
      Keyboard.print(char(msg_data_tag[i]));
    }

 

"00111Ф06" вот что получаю

b707
Offline
Зарегистрирован: 26.05.2017

Ivan458 пишет:

Немного разобрался, сейчас печатает нужную мне переменную, но вот почему кириллицей? 

так у вас наверно в винде по умолчанию русская раскладка - вот и печатает. Ищите как программно с ардуины сменить раскладку

Ivan458
Offline
Зарегистрирован: 25.02.2020

доделал как мне нужно, поигрался с задержками, в общем устраивает. Всем спасибо кто откликнулся)

b707
Offline
Зарегистрирован: 26.05.2017

Ivan458 пишет:

доделал как мне нужно, поигрался с задержками, в общем устраивает. Всем спасибо кто откликнулся)

как проблему с кириллицей решили, поделитесь

Ivan458
Offline
Зарегистрирован: 25.02.2020

пока что, установкой другого языка по умолчанию в ОС, в дальнейшем может средствами платы.