ผมเขียนโค้ดตามนี้
#include
void setup() {
EEPROM.write(900,48);
EEPROM.write(901,48);
EEPROM.write(902,48);
EEPROM.write(903,48);
EEPROM.write(904,48);
EEPROM.write(905,48);
EEPROM.write(906,48);
EEPROM.write(907,48);
EEPROM.write(908,48);
EEPROM.write(909,48);
}
void loop() {
}
แล้วทำการอ่านค่าจาก EEPROM และแสดงออกทาง LCD ดังโค้ดด้านล่าง
#include
#include
LiquidCrystal_I2C lcd(0x3F,16,2);
#include
char num[10];
void setup() {
lcd.begin();
num[0] = EEPROM.read(900);
num[1] = EEPROM.read(901);
num[2] = EEPROM.read(902);
num[3] = EEPROM.read(903);
num[4] = EEPROM.read(904);
num[5] = EEPROM.read(905);
num[6] = EEPROM.read(906);
num[7] = EEPROM.read(907);
num[8] = EEPROM.read(908);
num[9] = EEPROM.read(909);
lcd.setCursor(0,0);
lcd.print(num);
}
void loop() {
}
ผลที่ควจจะได้คือเลข 0000000000 แต่ว่ามันกลับได้ดังรูป ผมไม่รู้มันเกิดจากอะไรทำไมถึงมีไอสัญลักษณ์แบบนั้นติดมา
ในภาษา C ตัวแปร string จะปิดท้ายข้อความด้วย \0 โดยที่เราไม่ต้องเขียน
เช่น ข้อความ abcd ตามจริงแล้วคือ abcd\0
char ch[]={'a','b','g','e','d','\0'};
ตรงนี้น่าจะเป็นที่มาของสัญลักษณ์ที่เพิ่มขึ้น
ลองแปลง array ของ char ให้เป็น String ก่อน ตามตัวอย่างนี้ครับ
char[] chArray = "some characters"; String str(chArray);