ARDUINO:Serial.print 一个多字符元素
ARDUINO: Serial.print a multiple character element
我需要打印 4 位长的数字,这些数字是从 0 到 16 的二进制数字(0000、0001、0010,...)。
问题:
考虑这段代码:
char array[] = {'0000', '0001', '0010', '0011'};
int i;
void setup() {
Serial.begin(9600);
}
void loop() {
while (i < 4){
Serial.println(array[i]);
i++;
}
}
串行监视器输出:
0
1
0
1
或者我的预期输出是:
0000
0001
0010
0011
好像只读取了数组每个元素的第一个“字符”。
问题:如何打印每个元素的完整性,就像我预期的输出一样?
经过一些研究,我发现了这个:
然后指的是使用 PROGMEM,但我不确定这是否是我需要的,或者是否有更简单的解决方案来解决我的问题。
谢谢
如评论中所述,不要使用多字符常量(您使用的那些,带单引号);他们可能会杀死小狗。单引号用于字符常量,例如 'a'
.
你可以使用字符串(带双引号),或者真正的二进制数;没有诡计,后者将在没有前导零的情况下打印。
此代码示例同时执行这两种操作,因此请选择您需要的内容:
const char* array1[] = {"0000", "0001", "0010", "0011"}; // strings
uint8_t array2[] = {0b000, 0b0001, 0b0010, 0b0011}; // binary numbers
int arraySize = sizeof(array1) / sizeof(array1[0]);
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("Print the strings:");
int i = 0;
while (i < arraySize){
Serial.println(array1[i]);
i++;
}
Serial.println("\nPrint the binary numbers (note: no leading zeroes):");
i = 0;
while (i < arraySize){
Serial.println(array2[i], BIN);
i++;
}
}
void loop() {
}
我需要打印 4 位长的数字,这些数字是从 0 到 16 的二进制数字(0000、0001、0010,...)。
问题:
考虑这段代码:
char array[] = {'0000', '0001', '0010', '0011'};
int i;
void setup() {
Serial.begin(9600);
}
void loop() {
while (i < 4){
Serial.println(array[i]);
i++;
}
}
串行监视器输出:
0
1
0
1
或者我的预期输出是:
0000
0001
0010
0011
好像只读取了数组每个元素的第一个“字符”。
问题:如何打印每个元素的完整性,就像我预期的输出一样?
经过一些研究,我发现了这个:
然后指的是使用 PROGMEM,但我不确定这是否是我需要的,或者是否有更简单的解决方案来解决我的问题。
谢谢
如评论中所述,不要使用多字符常量(您使用的那些,带单引号);他们可能会杀死小狗。单引号用于字符常量,例如 'a'
.
你可以使用字符串(带双引号),或者真正的二进制数;没有诡计,后者将在没有前导零的情况下打印。
此代码示例同时执行这两种操作,因此请选择您需要的内容:
const char* array1[] = {"0000", "0001", "0010", "0011"}; // strings
uint8_t array2[] = {0b000, 0b0001, 0b0010, 0b0011}; // binary numbers
int arraySize = sizeof(array1) / sizeof(array1[0]);
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("Print the strings:");
int i = 0;
while (i < arraySize){
Serial.println(array1[i]);
i++;
}
Serial.println("\nPrint the binary numbers (note: no leading zeroes):");
i = 0;
while (i < arraySize){
Serial.println(array2[i], BIN);
i++;
}
}
void loop() {
}