极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19587|回复: 8

急!新手求助:arduino发送与processing接收不一致?

[复制链接]
发表于 2014-5-4 18:29:55 来自手机 | 显示全部楼层 |阅读模式
int potPin=0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(potPin);
Serial.println(sensorValue/4);
delay(500);
}

import processing.serial.*;
Serial serial;
int sensorValue;
void setup() {
serial = new Serial(this, "COM6", 9600);
}
void draw() {
if ( serial.available() > 0) {
  sensorValue = serial.read()
  println(sensorValue);
}
程序很简单,arduino能发送,但是processing接收到的不是发的数据,是一个个有规律循环出现的数,改变旋转编码器的值,processing还是不变,但是如果processing用string读取的话就可以了,可是我想实现的是通过读取旋转编码器变化的值反映为processing上一个图形角度的变化,但string字符串型是无法用来计算角度的,怎么办?哪位好心人可以帮助一下,如果谁做过类似的实验,能不能分享一下你的成果。万分感谢!!!
回复

使用道具 举报

发表于 2014-5-4 21:24:02 | 显示全部楼层
我沒用過 processing, 不過, 從你的 source:

Arduino:
Serial.println(sensorValue/4);

Processing:
sensorValue = serial.read()

arduino 以字符輸出, processing 以 數值的方式讀取 (我想 serial.read 應該是 數值的直接讀取吧), 兩者不配合.
先想好通訊協定, 再跟據協定作出輸出及輸入的程序吧.
回复 支持 反对

使用道具 举报

发表于 2014-5-5 21:04:08 | 显示全部楼层
本帖最后由 洛克王国专用号 于 2014-5-5 21:25 编辑

试试下面代码能否行?
import processing.serial.*;
Serial serial;
int sensorValue;

void setup() {
  size(400,400);
  background(255);
  stroke(255,2,0);
  serial = new Serial(this, "COM6", 9600);
}
void draw() {
  
}

void serialEvent(Serial p){
String   message = serial.readStringUntil('\n');   
   if(message !=null){
     println(message);
    //  int  x = Integer.parseInt(message);
   float rad = map(float(message),0,255,0,TWO_PI);
     pushMatrix();
     translate(width/2,height/2);
     point(cos(float(message))*50,sin(float(message))*50);
       popMatrix();
       message = "";
   }
}

字符型数据转角度用这句看是否可行?float rad = map(float(message),0,255,0,TWO_PI);

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-5 23:11:52 来自手机 | 显示全部楼层
洛克王国专用号 发表于 2014-5-5 21:04
试试下面代码能否行?
import processing.serial.*;
Serial serial;

感谢帮助,我试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-5 23:14:17 来自手机 | 显示全部楼层
Super169 发表于 2014-5-4 21:24
我沒用過 processing, 不過, 從你的 source:

Arduino:

好像用serial.write()可以,不过还是谢谢啦!
回复 支持 反对

使用道具 举报

发表于 2014-5-5 23:23:46 | 显示全部楼层
♂幻聽伱の過去 发表于 2014-5-5 23:14
好像用serial.write()可以,不过还是谢谢啦!

對了, 以數值的傳輸, read 的對頭就是 write 了.
我之前發了一個帖, 說明 數值 與 字符 在串口通訊時的分別....可惜大家都沒興趣.
回复 支持 反对

使用道具 举报

发表于 2014-6-8 23:53:11 | 显示全部楼层
本帖最后由 SafetySuit 于 2014-6-8 23:54 编辑
Super169 发表于 2014-5-5 23:23
對了, 以數值的傳輸, read 的對頭就是 write 了.
我之前發了一個帖, 說明 數值 與 字符 在串口通訊時的 ...


好像这两者一个是传输的数字信号一个是模拟信号。看了你的那个帖子,但是没有相关基础知识看不太懂,有没有方法能把这二者进行转换呢?就是把write改成read就能解决吗?
回复 支持 反对

使用道具 举报

发表于 2014-6-9 09:20:47 | 显示全部楼层
SafetySuit 发表于 2014-6-8 23:53
好像这两者一个是传输的数字信号一个是模拟信号。看了你的那个帖子,但是没有相关基础知识看不太懂,有 ...

這跟  digital 及 analog 的訊號沒有關係, 不要攪錯吧.
簡單的說, 只是數值及字串上的分別, 你知道 123 跟 "123" 兩者的意義嗎?

把 write 改成 read, 除非是之前把讀取/寫入攪錯了, 否則不可能解決問題.
回复 支持 反对

使用道具 举报

发表于 2015-10-14 23:42:44 | 显示全部楼层
Super169 发表于 2014-6-9 09:20
這跟  digital 及 analog 的訊號沒有關係, 不要攪錯吧.
簡單的說, 只是數值及字串上的分別, 你知道 123  ...

请问可以同时两个传感器同时发送给processing进行数据采集吗?需要如何写代码呢,比如简单的两个电位器,一个控制processing程序里的Y,一个控制X。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 21:21 , Processed in 0.036740 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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