Arduino整数错误

use*_*391 2 c++ arduino

我们正在尝试初始化一个字符数组但是我们得到一个错误,说我们不能,因为我们不能混合整数和字符,但我们没有初始化整数.

提前致谢

 void setup()
 {
     Serial.begin(9600); //Set the serial monitor.
     lcd.begin(16, 2); //Set the LCD
 }

 char line1 [5] = {0};
 char line2 [] = {0};

 void loop()
 {
     if (Serial.available() > 0) { //If the serial monitor is open it will read a value.
         line1 = Serial.read();
         delay(10);
         Serial.print(line1);
         lcd.print(line1);
     }
 }
Run Code Online (Sandbox Code Playgroud)

Bri*_*ach 5

不是一个arduino家伙,但昨晚我住在假日酒店,可以访问Google :)

http://arduino.cc/en/Serial/Read

Serial.read()返回一个字节(作为int).您正在尝试将其分配给char数组.

你不能这样做.您可以分配的东西给特定元素数组: line1[0] = 'c'; 例如,但不能分配给数组本身.

看起来就像你正在寻找Serial.readBytes()

http://arduino.cc/en/Serial/ReadBytes

看起来像这样:

Serial.readBytes(line1, 5);

在你的情况下,5你的缓冲区(数组)的长度.这将(最多)5个字节读入line1缓冲区.

编辑添加:话虽如此,看起来arduino的"C-Like"语言与C非常相似,因为它希望"Strings"(char数组)null在传递时终止Serial.print().上面的建议没有这样做,事实上会引起问题.

您需要做的是读取小于数组长度的一个字节,然后null使用实际读取的字节数终止"字符串",这bytesRead()将返回给您(数组为零索引):

int numBytesRead = 0;
...
numBytesRead = Serial.readBytes(line1, 4);
line1[numBytesRead] = '\0';  
Serial.print(line1);
Run Code Online (Sandbox Code Playgroud)

选项B是我最初提到的,但是line1使用索引从数组中一次循环并打印一个字节:

int numBytesRead = 0;
numBytesRead = Serial.readBytes(line1, 5);
int i;
for (i = 0; i < numBytesRead; i++) {
    Serial.print(line1[i]);
}
Run Code Online (Sandbox Code Playgroud)

根据文档Serial.print()自动知道发送单个字节/字符时,所有这些都传递给它.