您现在的位置: 晨光科技 >> 文章 >> 技术 >> 单片机 >> 正文  
  零成本学Arduino单片机之Processing互动媒体           
零成本学Arduino单片机之Processing互动媒体
[ 作者:佚名    转贴自:http://www.eefocus.com/zhang700309/blog/12-11/289203_1e7ce.html    点击数:37    更新时间:2018/5/10    文章录入:LA ]
[注:本站登载的某些文章并不代表本站支持或反对其观点或肯定其真实性]

 

    Processing是一种开源的编程语言和环境,它服务于有创意的设计师和艺术家,这些人希望利用某种程序,来创意静态图像和动态影像,并使创作的作品能与人产生良好的互动。这个软件最初的开发目的是作为一种学习编程软件,能够可视化的方法,教学习者计算机编程基础,现在它已经演化为完成专业工作的工具。

    有成千上万的学生,艺术家,设计师,研究人员,和爱好者,用Processing来学习、创意和制作产品。

 

     如果想让在电脑中设计的艺术作品与外部物理世界进行互动,让作品能与人和物产生“对话”,就需要传感器把外部环境的信息,采集到电脑中处理,做到这一点,目前通常的方法是通过Arduino控制器把传感器数据,通过串口通信,读到上位机软件Processing里,然后通过处理,让Processing数位作品的某些特征与传感器数据产生关联,于是物理世界的环境数据发生变化时,也会使虚拟数字世界的作品随之互动,不断幻化出动态语义的奇妙画面。

    上一篇文章《零成本学Arduino单片机之串行通讯》,讲述了采用Proteus仿真方法,来实现Arduino控制器与上位机软件之间的通信,这种方法同样适合Arduino与Processing的互动。如果学会了这样的方法,在零硬件成本情况下,也可以玩一玩互动媒体艺术了。

     Proteus界面中的下位机Arduino单片机与上位机软件Processing进行串行通讯,并没有硬件连接,需要通过某种软件虚拟出两个相互连接的串口,一个串口分配给Arduino单片机,另一个串口分配给上位机软件,在虚拟环境下,让两者能够完成串行通讯。这种软件就是VSPD虚拟串口驱动软件。

   VSPD虚拟串口驱动软件请下载:http://115.com/file/eizd0usu

    我通过VSPD软件,配对了两个虚拟串口COM7和COM8,COM7分配给了Proteus仿真图中的Arduino硬件电路中的串口连接器COMPIM,COM8分配给了Processing,通过Processing程序的“ duankou = new Serial(this,"COM8",9600);”指令,把COM8指定给了Processing。

Proteus仿真图:

 

Proteus仿真图,供下载:Proteus.zip

     通过两个虚拟串口,进行串行通信的方法见文章:《零成本学Arduino单片机之串行通讯》,网址: http://www.eefocus.com/zhang700309/blog/12-11/288957_ad4bb.html 。

     本篇文章仿真项目的任务是:在仿真图中,用鼠标调节电位计滑动抽头与地之间的电压,Arduino控制器采集这个电压值,正比转换后,通过串口通信,发送到上位机软件Processing处理。Processing中有两个在X,Y轴方向上都相差半个点距的矩形彩盘阵列。当电位计滑动抽头移动时,Arduino控制器采集的电压值会随之增加,同时,Processing的两个矩形阵列中各个彩盘的直径也相应增大。由于彩盘直径增大,使它们相互产生融和,不断幻化出奇妙的图案。如下面图片和视频所示。(双击所有图片,都可以放大观看!

仿真实验视频:

 

双击网址,全屏看仿真实验现象,

http://www.tudou.com/v/dUFtwvQrnTE/&rpid=91074573&resourceId=91074573_04_05_99/v.swf

    仿真图中的Arduino单片机与上位机软件Processing相互通信,除了看懂专题文章《零成本学Arduino单片机之串行通讯》,还要关注Arduino程序和Processing程序中有关串口通信的指令,这些指令我用红色字体在程序中标注出来,仔细研究下。

Arduino程序:

/*任务:调节电位计滑动抽头与地之间的电压,并把

电压值采集到Arduino控制器,经正比转换后,以单字节数据

的形式,通过串口通信,发送到上位机软件处理。*/
int potpin = 0; //把电位计连在Arduino模拟端口0
//初始化 
void setup() 
{
  Serial.begin(9600);//启动串行通讯,波特率为9600b/s
}

void loop() 
{
  //读取电位计电压量的采样值,采样值范围为0~1023
  int sensorValue = analogRead(potpin);  
  //把范围为0~1023的采样值正比转换为范围0~255单字节数据
  int data= sensorValue/4;
  //把包含电压值信息的单字节数据通过串口发送到上位机    
  Serial.print(data,BYTE); 
  delay(20);  //延时20ms
}
 
Processing程序:
 
/*任务:在画布中,创建两个在X、Y轴相差半个点距的两个矩形彩盘矩阵,
接受下位机Arduino控制器发送的单字节数据,并把该数据与彩盘直径关联起来。*/
import processing.serial.*;//导入serial通信库
Serial duankou;//创建对象duankou
float data;//变量存储Arduino传来数据
float d;//彩盘直径
void setup()
{
  //设定通讯端口为COM8,波特率为9600
  duankou = new Serial(this,"COM8",9600);
  size(600,600);//画布尺寸
  background(0);//背景为黑色
  stroke(128);//彩盘线条为灰色
  smooth();
  }
//主程序
void draw()
{
     background(0);
  //当串口缓冲区接受到字符时 
   if(duankou.available()>0)
  {
    //把Arduino传来的字节存入变量data
    data=duankou.read();
   //把Arduino上传的字节0~255正比转换为彩盘直径
    d=map(data,0,255,5,140);
    println(int(d));
   }    
    //生成彩盘阵列
    for(float x1=0;x1<=600;x1 =100)
      {        
        for(float y1=0;y1<=600;y1 =100)
        {
          fill(242,204,47,160);
          ellipse(x1,y1,d,d);
        }
      }
   //生成另一个彩盘阵列
   for(float x1=50;x1<=550;x1 =100)
      {
        
        for(float y1=50;y1<=600;y1 =100)
        {
          fill(116, 193, 206, 160);         
          ellipse(x1,y1,d,d);
        }
      }     
}

结束语

       像Arduino一样,作为数位艺术软件Processing,也慢慢被国人认识和接受,不断有人加入到互动媒体的创意队伍中来,目前,当当网上已经有了两本Processing的入门书,都还不错。一本是译著,书名《爱上Processing》,另一本是广州美院的谭亮老师写的,书名为《Processing互动编程技术》。两年后,如果您再查阅当当网书籍目录,应该会有更多的Arduino和Processing书籍出现。
      单从计算机语言学习的角度出发,Processing就是一个很好的平台。原先学生们编了半天程序,程序结果只是屏幕上的一些字符。而如果用Processing来学计算机语言,编程的结果能表现为更加直观、友好的数位图片,或者是动态影像,这样会激发学生们敲程序的冲动,让编程变成有趣的创作经历。  
    如果您开始对Processing感兴趣了,可以看看我以前写的Processing与Arduino互动文章专辑,网址为:http://www.eefocus.com/zhang700309/blog/cate_10278_0.html 。 
  • 上一篇文章: 零成本学Arduino单片机之LabVIEW虚拟仪器

  • 下一篇文章: 零成本学Arduino单片机之串行通讯
  •    
    [注:标题搜索比内容搜索快]
    发表评论】【告诉好友】【打印此文】【关闭窗口
     最新5篇热点文章
  • 轨道钢承重计算公式及应用[109]

  • 【选型】如何为变频器选取阻值…[86]

  • AIS2023参展厂商名录[345]

  • AGV综合选型[170]

  • APIE 2023第4届亚太国际智能装…[138]

  •  
     最新5篇推荐文章
  • 外媒:正在唤醒中国的习近平[305]

  • 中国反伪科学运动背后的CIA黑手…[494]

  • [转载]袁隆平真言:中国最大的…[668]

  • 台专家:当年我们造IDF时 大陆…[572]

  • 旅日华人:中国严重误判日本民…[577]

  •  
     相 关 文 章
  • Arduino和STM32性能对比究竟谁…[26]

  • Labview及Proteus软件环境下单…[38]

  • 基于labview串口通讯的虚拟数字…[41]

  • AVR编程语言Arduino也可以用Pr…[47]

  • Arduino编程 PWM方法调节LED光…[37]


  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论
    设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | 
    版权所有 Copyright© 2003 晨光科技        站长:璀璨星辰        页面执行时间:357.42毫秒
    Powered by:MyPower Ver3.5