当前位置: 首页 > 知识库问答 >
问题:

如何从processing向arduino发送100位串行通信

苏涛
2023-03-14

我将像素数组转换为字符串,并将此字符串发送到arduino.但是我认为此字符串没有正确转换,因为Serial.write发送(8位或8字符)我不知道.并且还想发送100个字符的字符串到串行.请发送您的建议,并获得帮助我解决这个问题。对于任何错误,请提前道歉。

  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);
 }
}           

并告诉我如何停止字符串后100个字符不使用(\n或\r)

共有1个答案

邴子实
2023-03-14

您似乎正在寻找以下代码:

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的大小为单位对输出进行聚类。宽度您可以这样做:

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。打印输出字符。

Serial.println输出字符并将换行符追加到输出。


我对这个计算有严重的怀疑inti=xy*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]

 类似资料:
  • 我一直在试图找到一种方法,从我的PC(Windows 7)向Arduino Uno R3发送串行命令。我一直在做这个简单的程序,你应该通过USB电缆发送一个简单的“1”,以便打开车载LED。我的Arduino代码应该可以工作(我知道的,但我会确保上传它)。我一直在尝试使用Python和pySerial发送此命令,但我似乎无法让pySerial正常工作。我也尝试过使用CMD,但当我输入命令(ECHO

  • 我有个小问题。 我不明白为什么。问题是不是我的协议(如果我可以这么叫的话),我是如何解包字符串的?或者其他问题。 我很困惑。 在本教程中,我只需要两个值就可以使它工作

  • 我正试图使用串口从C#向Arduino发送一个数组。在C#中,首先是输入字符串 然后,我将其转换为int数组 然后,我将其转换为字节数组,通过串行端口发送 最后,我把它寄出去了 那么,应该由我的Arduino接收 所以recdata应该是一个int数组 但事实并非如此。当我将其打印到另一个串行端口进行检查时。。 我得到3个输出,而不是1个,就好像serialport先发送一个int,然后发送第二个

  • 我试图让Arduino在串口读取字符“s”时触发一个中继。该字符“s”由python根据从屏幕读取的图像发送。 我的问题是arduino似乎无法从串行端口读取数据,因为它从不执行if条件。我的猜测是这两者之间存在某种死锁(这就是为什么我将ardu.close()放在函数foo中) 这是我的arduino代码: 这是我的python代码:

  • 我对通过python发送串行数据有问题。让我这样解释。我在arduino上有一个马达代码,它从串口接收数据,并在接收到的数据中移动。然而,在本例中,每当我发送8个列表中的数据时,它都不会读取第8个列表。通过玩弄时间。在python代码中睡眠我可以看到一些差异(我可以看到发送了4个列表,然后我将time.sleep增加到8,现在它发送了7个列表)我知道玩弄时间。但睡眠并不是解决办法。我还尝试清空输入

  • 我在一个项目中,我想通过串行通信发送传感器数据从Arduino到PHP。 不幸的是,我无法读取PHP中的串行端口。然而,另一个方向(PHP到Arduino)工作得很好。我使用的是php_系列。班来自Rémy Sanchez的php,由Rizwan Kassim修改。我依赖于readPort()函数。 我在Mac OS X上使用Arduino UNO和Apache WAMP-Server。我应该实现