弘毅 发表于 2011-12-10 20:48:02

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

以前用过processing显示姿态识别,代码过度高深了。。。大家可能一下子接受不了。这里开始从简单到复杂,慢慢介绍processing怎样与arduino互动。

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

先看硬件连接图



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

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

void loop() {
// 读取电位器电压
int sensorValue = analogRead(potPin);

// 读取的数值以BYTE格式从串口输出
// 因为processing的serial.read()只支持0-255之间的数值,所以需要把0-1023数值除以4,缩放到0-255之间
Serial.print(sensorValue/4, BYTE);

delay(100);
}
这个是本次试验的processing代码import processing.serial.*;

Serial serial;
int sensorValue;

void setup() {
// 设置画布大小为 305 x 200
size(305, 200);//设置305的原因是arduino ADC口输入过来的数值是0-255,加上圆形半径50,刚好305.

// 打开串口,设置波特率为9600
// 本次实验arduino控制板所连接为COM6口,此处请根据实际情况调整。
serial = new Serial(this, "COM6", 9600);
}

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



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



看一下实验效果

http://player.youku.com/player.php/sid/XMzMxMTE2ODgw/v.swf

其他的命令比较简单,这里介绍一下绘图命令
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)

悠然小调 发表于 2011-12-10 22:42:44

哈哈,这个适合我等菜鸟学习,希望继续有教程。

wali 发表于 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:刚才好不容易回复了一大段,最后加了个表情,,,,悲剧了,,,,帖子内容没了···又打一遍···

沧海笑1122 发表于 2012-2-8 22:59:58

本帖最后由 沧海笑1122 于 2012-2-8 23:06 编辑

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

(图1.。sensorValue=25)

(图2.。sensorValue=70)

(图3.。sensorValue=175)

黑马 发表于 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 static/image/common/back.gif
遇到一个奇异的问题,arduino用print发送到串口的数据,在IDE和VB里读取都正常,在processing里数据就不对。 ...

:o还有这个问题。。。

Cheese 发表于 2012-3-5 20:16:39

为什么我的processing没有变化!

爱笑de猫 发表于 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/01/arduino-1-0-is-out-heres-what-you-need-to-know/

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

方便新手学习。

咱家宝的大胖熊 发表于 2012-4-4 14:22:02

processing都能干什么用?

弘毅 发表于 2012-4-5 08:52:17

咱家宝的大胖熊 发表于 2012-4-4 14:22 static/image/common/back.gif
processing都能干什么用?

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

河山 发表于 2012-4-16 16:07:50

processing在哪里可以下载?

ttyp 发表于 2012-10-5 10:57:23

Serial.print(sensorValue/4, BYTE);
这句有很大的问题,新版的arduino1.01已经不支持了,传递数据还是使用
Serial.write(sensorValue/4);
比较可靠:lol
页: [1] 2 3
查看完整版本: arduino学习笔记31 - processing显示arduino传感器动作实验