极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12131|回复: 6

高手救命,关于ARDUINO和processing连接的问题,以及关于PROCESSING模糊。

[复制链接]
发表于 2013-11-18 01:55:24 | 显示全部楼层 |阅读模式
我想实现的功能是当转动连在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.write(sensorValue/4);  
  delay(100);}


这里的Serial.write(sensorValue/4);  ,一开始用的是Serial.println(sensorValue/4);  ,后来看论坛里有人说要干成WRITE。
运行了一下

Processing 代码如下:

import processing.serial.*;
Serial serial;
int sensorValue;
int last;
PImage photo;

void setup() {
  size(400, 400);
   println(Serial.list());
   serial = new Serial(this, "COM4", 9600);
  photo = loadImage("flower.jpg");
}

void draw() {
if ( serial.available() > 0) {   
  // 读取从串口产过来的Sensor数值。   
sensorValue = serial.read();
println(sensorValue);  
  image(photo, 0, 0);
  filter(BLUR, sensorValue/4);
}}

这个代码是根据http://www.geek-workshop.com/thread-301-1-1.html 的这个教程改的,
这个教程里的那个圆的功能我尝试配合ARDUINO的代码运行过,是可以实现的。

PROCSSING读出的数值非常的奇怪,求高手解答!!!

PS,同时想问一下PROCESSING有没有调节透明度的函数啊?
回复

使用道具 举报

 楼主| 发表于 2013-11-18 11:50:17 | 显示全部楼层
高手们赐教一个吧 T^T
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-20 14:30:12 | 显示全部楼层
自顶一个 求解答!
回复 支持 反对

使用道具 举报

发表于 2013-11-20 14:42:08 | 显示全部楼层
Serial.write输出的是byte数值,Serial.print或者Serial.println输出的是字符串,但是如果浮点数,那么只会截取到小数点后两位。在Processing端读取数值的时候,最好强制一下转换类型,确保数值准确。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-20 15:25:56 | 显示全部楼层
Simon 发表于 2013-11-20 14:42
Serial.write输出的是byte数值,Serial.print或者Serial.println输出的是字符串,但是如果浮点数,那么只会 ...

请问怎么弄这个强制转换呢。。能说具体一些吗~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-20 15:27:24 | 显示全部楼层
Simon 发表于 2013-11-20 14:42
Serial.write输出的是byte数值,Serial.print或者Serial.println输出的是字符串,但是如果浮点数,那么只会 ...

Serial.print(sensorValue/4, BYTE);

我当时输上面那个代码的时候它说BYTE用不了呀。。该怎么办啊。。
回复 支持 反对

使用道具 举报

发表于 2013-11-20 18:05:06 | 显示全部楼层
呼啦啦啦圈 发表于 2013-11-20 15:27
Serial.print(sensorValue/4, BYTE);

我当时输上面那个代码的时候它说BYTE用不了呀。。该怎么办啊。。 ...

http://www.geek-workshop.com/thread-7881-1-1.html
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-6 01:15 , Processed in 0.034603 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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