如何从处理到arduino的串行通信中发送100位数字

时间:2019-06-26 05:14:25

标签: arduino processing serial-communication

我正在将像素数组转换为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个字符后的字符串

1 个答案:

答案 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]