极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 98477|回复: 43

arduino学习笔记31 - processing显示arduino传感器动作实验

  [复制链接]
发表于 2011-12-10 20:48:02 | 显示全部楼层 |阅读模式
以前用过processing显示姿态识别,代码过度高深了。。。大家可能一下子接受不了。这里开始从简单到复杂,慢慢介绍processing怎样与arduino互动。

这次我们使用一个电位器+arduino控制板,通过电位器的转动,让processing输出一个可以移动的圆形。

先看硬件连接图




这个是本次试验的arduino代码
  1. int potPin = 0; // 电位器第二针脚接在模拟口0上

  2. void setup() {
  3.   // 启动串口,波特率为9600
  4.   Serial.begin(9600);
  5. }

  6. void loop() {
  7.   // 读取电位器电压
  8.   int sensorValue = analogRead(potPin);
  9.   
  10.   // 读取的数值以BYTE格式从串口输出
  11.   // 因为processing的serial.read()只支持0-255之间的数值,所以需要把0-1023数值除以4,缩放到0-255之间
  12.   Serial.print(sensorValue/4, BYTE);
  13.   
  14.   delay(100);
  15. }
复制代码
这个是本次试验的processing代码
  1. import processing.serial.*;

  2. Serial serial;  
  3. int sensorValue;

  4. void setup() {
  5.   // 设置画布大小为 305 x 200
  6.   size(305, 200);  //设置305的原因是arduino ADC口输入过来的数值是0-255,加上圆形半径50,刚好305.
  7.   
  8.   // 打开串口,设置波特率为9600
  9.   // 本次实验arduino控制板所连接为COM6口,此处请根据实际情况调整。
  10.   serial = new Serial(this, "COM6", 9600);
  11. }

  12. void draw() {
  13.   if ( serial.available() > 0) {
  14.     // 读取从串口产过来的Sensor数值。
  15.     sensorValue = serial.read()+25;  //+25的原因是后面设置圆形半径为50,为了让圆形起点与重点贴边,就需要+25半径。
  16.     println(sensorValue);
  17.    
  18.     // 在画布内画一个
  19.     background(255); // 背景为白色
  20.     fill(255,0,0);   // 圆形内填充为红色
  21.     ellipse(sensorValue, 100, 50, 50);
  22.   }  
  23. }
复制代码
我们熟悉一下processing的基本界面,arduino的界面和processing一样滴。。。因为arduino的图形界面,就是直接使用的processing的。所以大家可以很容易上手。



我们点击工具栏第一个编译的图标,就会跳出来下图的样子的窗口。



看一下实验效果



其他的命令比较简单,这里介绍一下绘图命令
ellipse:(圆形)

ellipse(x,y,width,height)
x,y是圆形坐标点,指的是圆心。
width是圆的水平直径
height是圆的垂直直径
比如120,60这样画出来的就是一个椭圆了。


rect:(矩形)
rect(x,y,width,height)
x,y指的是矩形坐标点,是左上角那个点。
width是矩形宽度
height是矩形高度
默认模式是CORNER。
画矩形有三种模式:
1、CORNER:rect(左上x,左上y,宽,高)
2、CENTER:rect(中心x,中心y,宽,高)
3、CORNERS:rect(左上x,左上y,右下x,右下y)

例子:
rectMode(CENTER);
rect(150,150,200,200)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2011-12-10 22:42:44 | 显示全部楼层
哈哈,这个适合我等菜鸟学习,希望继续有教程。
回复 支持 反对

使用道具 举报

发表于 2011-12-10 22:46:37 | 显示全部楼层
本帖最后由 wali 于 2011-12-10 22:53 编辑

沙发变板凳了
回复 支持 反对

使用道具 举报

发表于 2011-12-11 17:27:32 | 显示全部楼层
试验下~~还没第二个软件呢···百度了下,这个可以下载http://baoku.yunduan.cn/...ls/item/21238#comts
回复 支持 反对

使用道具 举报

发表于 2011-12-11 21:28:47 | 显示全部楼层
本帖最后由 回复地方 于 2011-12-11 21:36 编辑

看帖总结{:soso_e130:}:下载好processing1.5.1.分别编译进去两个文件,发现没有出现预料的“日本旗”,弹窗是灰色的。因为端口设置错误导致的。当processing接收不到端口数据时就是灰色的框。更改第二个程序中的serial = new Serial(this, "COM6", 9600);端口即可(我的端口是com3,就把这句改成serial = new Serial(this, "COM3", 9600);)。
如果依旧是灰色的,重新打开两个软件试试,先开arduino,再开processing,点击编译~

有错误的话,大家指正哈~

ps:刚才好不容易回复了一大段,最后加了个表情,,,,悲剧了,,,,帖子内容没了···又打一遍···
回复 支持 反对

使用道具 举报

发表于 2012-2-8 22:59:58 | 显示全部楼层
本帖最后由 沧海笑1122 于 2012-2-8 23:06 编辑

加了一个矩形。
  1. //画一个矩形
  2.     fill(255-sensorValue,sensorValue+100,sensorValue);   // 矩形内填充可以随sensorValue值变色,橙到绿
  3.     rectMode(CENTER);
  4.     rect(250-sensorValue, 160,sensorValue,sensorValue  //矩形大小、位置可以随sensorValue值变化
复制代码
嘿嘿,一个红圆点,一个可以变色、变位置的矩形,反向移动,呵呵。谢谢弘毅

(图1.。sensorValue=25)

(图2.。sensorValue=70)

(图3.。sensorValue=175)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2012-2-23 10:48:52 | 显示全部楼层
为虾米我在processing里和在arduino的com口监视器里读到的数据不一样?
回复 支持 反对

使用道具 举报

发表于 2012-2-23 13:46:43 | 显示全部楼层
遇到一个奇异的问题,arduino用print发送到串口的数据,在IDE和VB里读取都正常,在processing里数据就不对。如果改成Serial.print(val, BYTE); processing按int型就能正确读取了……好奇怪
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-23 14:29:43 | 显示全部楼层
黑马 发表于 2012-2-23 13:46
遇到一个奇异的问题,arduino用print发送到串口的数据,在IDE和VB里读取都正常,在processing里数据就不对。 ...

还有这个问题。。。
回复 支持 反对

使用道具 举报

发表于 2012-3-5 20:16:39 | 显示全部楼层
为什么我的processing没有变化!
回复 支持 反对

使用道具 举报

发表于 2012-3-19 09:01:11 | 显示全部楼层
本帖最后由 爱笑de猫 于 2012-3-19 09:03 编辑

@弘毅 感谢教程!

Arduino 1.0 is Out: Here's What You Need To Know:

http://blog.makezine.com/2011/12 ... t-you-need-to-know/

因Arduino的更新coding部分的改动如以上连接所示。

方便新手学习。
回复 支持 反对

使用道具 举报

发表于 2012-4-4 14:22:02 | 显示全部楼层
processing都能干什么用?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-4-5 08:52:17 | 显示全部楼层
咱家宝的大胖熊 发表于 2012-4-4 14:22
processing都能干什么用?

可以用很简单的程序语言,画出来很复杂的图形。。。比如你要让一个圆,圆形偏移多少,然后角度偏移多少不停复制,做出一个螺旋状的样子。其他很难画,但是processing几句话就搞定了。
回复 支持 反对

使用道具 举报

发表于 2012-4-16 16:07:50 | 显示全部楼层
processing在哪里可以下载?
回复 支持 反对

使用道具 举报

发表于 2012-10-5 10:57:23 | 显示全部楼层
Serial.print(sensorValue/4, BYTE);
这句有很大的问题,新版的arduino1.01已经不支持了,传递数据还是使用
Serial.write(sensorValue/4);
比较可靠
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 19:56 , Processed in 0.052422 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表