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() {
}