将代码从 EEPROM 写入 char 数组
Writing a code from EEPROM to an array of char
在 EEPROM 上,密码 1234 以字节形式写入。现在我想读出 pincode 并将其写入一个 char 类型的数组并在串行监视器上打印它,但我只得到如图所示的矩形。但是,如果我使用 "Serial.print(EEPROM.read(i));" 将它直接打印到串行监视器,我会得到“1234”。
serial monitor
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() {
}
试试这个:
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。
byte b1=1;
char c1 = 49;
char c2 = '2';
Serial.print(b1);
Serial.print(c1);
Serial. println(c2);
产生输出“112”,因为打印在不同数据类型上的表现不同。
在 EEPROM 上,密码 1234 以字节形式写入。现在我想读出 pincode 并将其写入一个 char 类型的数组并在串行监视器上打印它,但我只得到如图所示的矩形。但是,如果我使用 "Serial.print(EEPROM.read(i));" 将它直接打印到串行监视器,我会得到“1234”。 serial monitor
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() {
}
试试这个:
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。
byte b1=1;
char c1 = 49;
char c2 = '2';
Serial.print(b1);
Serial.print(c1);
Serial. println(c2);
产生输出“112”,因为打印在不同数据类型上的表现不同。