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)
哈哈,这个适合我等菜鸟学习,希望继续有教程。 本帖最后由 wali 于 2011-12-10 22:53 编辑
沙发变板凳了 试验下~~还没第二个软件呢···百度了下,这个可以下载http://baoku.yunduan.cn/...ls/item/21238#comts 本帖最后由 回复地方 于 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 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) 为虾米我在processing里和在arduino的com口监视器里读到的数据不一样? 遇到一个奇异的问题,arduino用print发送到串口的数据,在IDE和VB里读取都正常,在processing里数据就不对。如果改成Serial.print(val, BYTE); processing按int型就能正确读取了……好奇怪 黑马 发表于 2012-2-23 13:46 static/image/common/back.gif
遇到一个奇异的问题,arduino用print发送到串口的数据,在IDE和VB里读取都正常,在processing里数据就不对。 ...
:o还有这个问题。。。 为什么我的processing没有变化! 本帖最后由 爱笑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部分的改动如以上连接所示。
方便新手学习。 processing都能干什么用? 咱家宝的大胖熊 发表于 2012-4-4 14:22 static/image/common/back.gif
processing都能干什么用?
可以用很简单的程序语言,画出来很复杂的图形。。。比如你要让一个圆,圆形偏移多少,然后角度偏移多少不停复制,做出一个螺旋状的样子。其他很难画,但是processing几句话就搞定了。 processing在哪里可以下载? Serial.print(sensorValue/4, BYTE);
这句有很大的问题,新版的arduino1.01已经不支持了,传递数据还是使用
Serial.write(sensorValue/4);
比较可靠:lol