arduino与Processing通信问题

我在网上查到好多资料都是讲的是传输一个数据的问题,没有讲到传输多个数据的问题,我通过一天的摸索,终于找到用arduino给processing传输多个数据的解决方法。下面是讲传输三个数据的代码。
1、先看我的arduino代码我把关键地方写出来,供参考

light = BH1750();
  Serial.print(light);
  Serial.print(',');

 // smoke();
  wenshidu();
  if (humidity < 30) {
    jdq();
  }
  if (temperature > 40) {
    speak();
/*这块的延时也挺重要的,发送数据的速度不能太快,要不然processing接收有可能接收混乱,我这是三个数据,我延时了4秒,我发现可以读取到,而且不出错,我看有的人是发送2个数据是用了0.1秒作为延时,然后如果是其他更多的或者更少的数据,可以试着通过延时来解决,processing那边接收可能混乱的问题。*/
  delay(4000);


}void wenshidu() {
  DHT11.read(DHT11PIN);

  // Serial.print("temperature:");

  Serial.print((byte)DHT11.temperature);
  Serial.print(',');

  temperature = DHT11.temperature;

  //Serial.print("humidity:");

  Serial.print((byte)DHT11.humidity);
  Serial.println(',');

  humidity = (byte)DHT11.humidity;




  //delay(100);
}

这段代码是我的arduino程序主要是向串口发送三个数据,用逗号分隔开,最后以换行作为数据分隔单元的依据。
2、下面是processing的代码
还是将主要的列出来,供大家参考

import processing.serial.*;
Serial myPort;
byte[] inBuffer = new byte[100];
int Hum = 0;
int Tem = 0;
int light = 0;
void setup(){
  myPort=new Serial(this,"COM7",9600 );
  myPort.clear();
/*下面是读取数据的代码,也是最关键的地方,由这里可以读取到arduino传过来的数据也是它们两交互的关键,希望大家好好看看这段代码*/
  void readQ(){
  if(myPort.available()>0 )
  {   //receive=myPort.read()+"";        
    if(myPort.readBytesUntil(10,inBuffer)>0)
    //这里的10是代表换行的ASCLL码是10,所以说只要是你arduino程序是以换行为一组数据的结尾的话,这里的读取单元数据,第一个参数必须是10.
    {
      String inputString = new String(inBuffer);
      String[] inputStringArr = split(inputString,',');
      light = int(inputStringArr[0]);
      println(light);
      Tem = int(inputStringArr[1]);
      println(Tem);
      Hum = int(inputStringArr[2]); 
      println(Hum);
    }
       //light=myPort.read();
      // println(light);
      //Tem=myPort.read();
      //println(Tem);
      //Hum=myPort.read();
      //println(Hum);   
   } 
}
void draw(){
  readQ();
  /*后面的程序就是利用传输到的数据来进行画图,做各种交互效果了,由自己发挥了*/
  }

好这就是我这个问题的解决方案,如果哪里有问题,恳请指正。

### 回答1: ArduinoProcessing是两个开源软件项目,都是由意大利的开发者开发的。Arduino是一款基于开源硬件的微控制器,可以用来制作各种物联网设备和机器人等。而Processing则是一款基于Java的编程语言和集成开发环境,主要用于创意编程和可视化设计。两者可以通过串口通信进行交互,实现各种有趣的项目。 ### 回答2: ArduinoProcessing都是一种开源的工具,它们都是为了促进创意工作的开展而产生的。 Arduino是一种基于开源硬件和软件的微控制器平台,主要用于制作互动的物理装置。它的主要特点是简单易用、开放性强、价格低廉,并且有丰富的资源和社区支持。使用Arduino,我们可以制作从简单的LED灯闪烁到复杂的机器人控制系统等各种应用。在制作过程中,我们可以使用Arduino编程语言C/C++,或者使用其他编程语言通过Arduino IDE来进行开发。 Processing是一种开源的编程语言和开发环境,主要是为了帮助艺术家、设计师、教育工作者、研究者、初学者等人群开展创意编程和互动作品的开发。Processing最初是针对图形处理和动态效果开发的,但是后来它还可以用于音频、视频、数据处理等领域。Processing的主要特点是易学易用、跨平台、扩展性强、社区活跃。我们可以使用Processing来设计和开发交互式的图形界面、动态效果、虚拟现实应用等等。 ArduinoProcessing之间有很强的联系,因为它们都是由一群基于开源精神的开发者所建立的,并且都可以被用于制作互动艺术品和装置。在具体的开发过程中,我们可以使用Arduino来操控和控制各种外部的物理设备,如LED灯、电机、传感器等等,然后使用Processing来制作外观和交互效果,从而实现各种创意性的作品。此外,我们也可以使用Processing发送指令到Arduino中,以达到控制物理设备的效果。 总之,ArduinoProcessing都为我们提供了良好的开发工具和环境,让我们能够更加便捷和高效地开展创意编程和互动装置的制作。它们的不断推进和发展也将带动着更多人参与到这一领域,从而推动整个行业的进步和发展。 ### 回答3: ArduinoProcessing都是由艺术家、设计师和工程师等创造者共同开发的开源创作平台,用于构建各种交互式项目。Arduino是一种基于开源硬件和软件的平台,用于创建物理世界和数字世界之间的交互。它由一个单片机、电路板、开发环境和库组成,可用于制作各种物联网和物联网应用,如可穿戴设备、机器人和智能家居等。 而Processing则是一种开源的编程语言和集成开发环境,旨在将编程带入视觉艺术家和设计师等非专业人士的领域。 Processing具有简单易用、直观灵活、具有高度可视化性等特点,易于快速实现各种图形、动画、音频、视频等创意表现。处理器可被用来制作各种艺术作品、红外线监测、声音合成器和交互式音乐等。 ArduinoProcessing相互结合,能够创建出更多的创意项目。Arduino可以通过编程环境通过简单的结构进行编程,与Processing相结合可以使Arduino更容易地实现各种交互设计与可视化展示。同时,在Processing中可以使用Firmata库来通过串行通信控制Arduino, 进而实现各种与物理环境的交互,如控制LED灯、电子声音体验等。 Processing所提供的强大的图形用户界面(GUI)也使得Arduino的操作与相关传感器的实时读取、处理与可视化展示成为可能,从而更加进一步地将ArduinoProcessing紧密联系在一起。 总而言之,通过ArduinoProcessing的结合,我们能够创建出各种具有吸引力、实用性和创新性的数字和物理世界交互项目。这些项目不仅仅可以用于艺术创作,还有更广泛的应用,包括创客教育和科技创新等领域。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值