Запись кода из EEPROM в массив char - PullRequest
1 голос
/ 15 октября 2019

В EEPROM пин-код 1234 записывается в байтах. Теперь я хочу прочитать пин-код и записать его в массив типа char и распечатать на последовательном мониторе, но я получаю только эти прямоугольники, как на картинке. Но если я распечатаю его прямо на последовательный монитор с помощью «Serial.print (EEPROM.read (i))»;Я получаю «1234». последовательный монитор

const byte PINLENGTH = 4;
char pinCode[PINLENGTH+1];

void setup() {
Serial.begin(9600);
Serial.print(pinCode[0]);

for ( int i = 0; i < PINLENGTH; ++i ){
  pinCode[i] = (char) EEPROM.read(i);
  Serial.print(pinCode[i]);
}}


void loop() {

}

Ответы [ 2 ]

0 голосов
/ 15 октября 2019
byte b1=1;
char c1 = 49;
char c2 = '2';
Serial.print(b1); 
Serial.print(c1); 
Serial. println(c2); 

выводит "112", потому что при разных типах данных печать ведет себя по-разному.

0 голосов
/ 15 октября 2019

Попробуйте это:

const byte PINLENGTH = 4;
char pinCode[PINLENGTH+1];

void setup() {
Serial.begin(9600);

for ( int i = 0; i < PINLENGTH; ++i ){
  pinCode[i] = (char) EEPROM.read(i) + '0';    // <- Note +'0'
  Serial.print(pinCode[i]);
}}

Дело в том, что значения, считанные из EEPROM, вероятно, являются двоичными, и добавление '0' преобразует их в ASCII.

...