我正在将像素数组转换为String并将此String发送给arduino。但我认为此字符串转换不正确,因为我不知道Serial.write发送(8位或8个字符)。并且还希望将100个字符的字符串发送到Serial中。 请发送您的建议,并解决这个问题。 如有任何错误,抱歉。
for(int x =0 ; x < img.height; x++)
{
for(int y=0; y <img.width; y++)
{
int i = x+y*width;
if(img.pixels[i] == color(0,0,0))
{
i=1;
}
else
{
i=0;
}
String s = str(i);
print(s);
Serial.write(s);
delay(2);
}
}
并且还告诉我如何不使用(“ \ n”或“ \ r”)来停止100个字符后的字符串
答案 0 :(得分:2)
您似乎正在寻找以下代码:
for (int x = 0; x < img.height; x++) { // iterate over height
for (int y = 0; y < img.width; y++) { // iterate over width
int i = x + y * width;
if (img.pixels[i] == color(0, 0, 0)) { // determine if zero
Serial.write('1'); // send non zero char
} else {
Serial.write('0'); // send zero char
}
}
Serial.write("\n\r");
}
如果要以img.width
大小为单位对输出进行聚类,则可以执行以下操作:
for (int x = 0; x < img.height; x++) { // iterate over height
String s;
for (int y = 0; y < img.width; y++) { // iterate over width
int i = x + y * width;
if (img.pixels[i] == color(0, 0, 0)) { // determine if zero
s += '1'; // append a non zero char to string s
} else {
s += '0'; // append a zero char to string s
}
}
Serial.println(s);
}
请记住:
Serial.write
输出原始二进制值。
Serial.print
输出字符。
Serial.println
输出字符,并且将换行符附加到输出中。
我对此计算int i = x+y*width;
表示严重怀疑,因为您的数据的结构可能如下:
vertical data: 0 1 2
horizontal data: [row 0][row 1][row 2]
代替:
horizontal data: 0 1 2
vertical data: [column 0][column 1][column 2]