中创联盟-奥松机器人创客空间-Arduino中文社区

标题: 关于“Arduino与Processing互动之电位器测试”的问题 [打印本页]

作者: Sast顺子    时间: 2015-10-20 17:29
标题: 关于“Arduino与Processing互动之电位器测试”的问题
Arduino提高版 爱上Processing 互动入门套件 2015 UNO R3 最新版
https://item.taobao.com/item.htm ... 5726&_u=gjq91nb1aa4
本人前一段时间购买了此套件,在做“Arduino与Processing互动之电位器测试”实验的时候,发生了如下的情况:
Arduino程序如下:
电位捕捉Arduino程序.png
Processing程序如下:
电位捕捉processing程序.png

运行processing程序时,发生如下情况:
电位捕捉1.PNG

这个是电位器旋转一周后发生的情况,理应出现的图应该如下
电位捕捉效果图.png (此图是视频教程截图)

麻烦技术人员帮我看一下这是什么情况,谢谢

作者: 奥松-Neil    时间: 2015-10-21 09:56
您电位计引脚接的是否是 A0 端口?电位计在旋转的时候不要转的过快
作者: Sast顺子    时间: 2015-10-21 10:58
奥松-Neil 发表于 2015-10-21 09:56
您电位计引脚接的是否是 A0 端口?电位计在旋转的时候不要转的过快


QQ截图20151021104601.png
是接在模拟量0口上面的,刚刚试了一下旋转速度,出来的结果还是一样的

作者: 奥松-Neil    时间: 2015-10-21 13:07
Sast顺子 发表于 2015-10-21 10:58
是接在模拟量0口上面的,刚刚试了一下旋转速度,出来的结果还是一样的
...

您看一下这个S V G对应传感器的S V G 对应的是否正确,因为正常黄色对应的是S(信号),但是看您图片上黄色接的是GND
作者: Sast顺子    时间: 2015-10-21 14:57
svg线都是一一对应的,你看程序里有啥问题吗?
作者: 奥松-Neil    时间: 2015-10-21 15:43
Sast顺子 发表于 2015-10-21 14:57
svg线都是一一对应的,你看程序里有啥问题吗?

看程序没有什么问题,这个就是实验的例程吧?您没有做过修改?
作者: 奥松-Neil    时间: 2015-10-22 09:06
Sast顺子 发表于 2015-10-21 14:57
svg线都是一一对应的,你看程序里有啥问题吗?

您好,怎么样?实验可以正常进行了吗?
作者: Sast顺子    时间: 2015-10-22 11:00
你好,我只修改了一下“Serial.print((byte)outputValue);//以字节形式发送”,因为是版本的问题,其他都没有改过,还是不正常的
作者: 奥松-Neil    时间: 2015-10-22 11:08
Sast顺子 发表于 2015-10-22 11:00
你好,我只修改了一下“Serial.print((byte)outputValue);//以字节形式发送”,因为是版本的问题,其他都 ...

您好,看您程序的话没有问题,您所说的这个位置是0022版本和1.0以上版本的区别,所以正常就是修改的,但是看您的图片,比较像是A0接口没有读到固定的模拟量的值,而输出的这个随机量,您可以先不同processing联合使用,而是只用Arduino的串口看一下电位计读出的模拟量值是否准确。
就是使用Serial.print()将接在A0口的电位计模拟量读出来
作者: Sast顺子    时间: 2015-10-22 15:06
奥松-Neil 发表于 2015-10-22 11:08
您好,看您程序的话没有问题,您所说的这个位置是0022版本和1.0以上版本的区别,所以正常就是修改的,但 ...


电位捕捉Arduino串口图.PNG
顺时针旋转,读出来的电位值都是非常稳定的
我估计是processing软件里哪里出了错

作者: 奥松-Neil    时间: 2015-10-22 15:32
Sast顺子 发表于 2015-10-22 15:06
顺时针旋转,读出来的电位值都是非常稳定的
我估计是processing软件里哪里出了错
...

您好,我刚刚做了这个实验,是可以正常显示的,下面是Processing中的代码
import processing.serial.*;//调入串口库
Serial myPort;  // 创建一个串口变量
float val;      //串口接收变量
void setup()
{
  size(700, 700);//画布大小
  myPort = new Serial(this,"COM6",9600);//串口初始化
}
void draw()
{
  if ( myPort.available() > 0) {  // 判断串口是否有数据
    val = myPort.read();         // 把读回来的数据存入val

    val =val*1.406;//返回数据只有0-255 转化成0-360
  }
    if (val != 0)
    {
      if(val > 357){
       background(255);//读取到最大时显示背景
      }else{
    textSize(25);//设置字体大小
    fill(val * 3 % 255, val * 5 % 255,val * 7 % 255); //填充颜色
    pushMatrix();//至popMatrix前为一个整体
    translate(350, 350);//设置旋转中心
    rotate(radians(val));//旋转角度随读取值大小改变
    text(val,200,20);//字体表示当前角度值
    triangle(0, 0, 200, 20,200,0);//画三角形
    popMatrix();
    }
    }else{
      background(255);//如果没有读取到数值显示背景
    }
}


Arduino中的代码:
const int analogInPin = 0;  // 电位器输入引脚
int sensorValue;        // 电位器电压值
int outputValue;        // 输出数值
void setup() {
  Serial.begin(9600);
}
void loop() {
  sensorValue = analogRead(analogInPin);            
  outputValue = map(sensorValue, 0, 1023, 0, 255); //转换到发送范围  
  Serial.write((byte)outputValue);//以字节形式发送
  delay(100);  //小延时 数据越小发送越快                  
}

注意com口需要改成您的com口号码
作者: Sast顺子    时间: 2015-10-23 09:45
奥松-Neil 发表于 2015-10-22 15:32
您好,我刚刚做了这个实验,是可以正常显示的,下面是Processing中的代码
import processing.serial.*;// ...

亲,你们给的光盘里的程序是Serial.print((byte)outputValue);不是Serial.write((byte)outputValue);,现在程序运行是正常的,好的,谢啦

作者: 奥松-Neil    时间: 2015-10-23 09:48
Sast顺子 发表于 2015-10-23 09:45
亲,你们给的光盘里的程序是Serial.print((byte)outputValue);不是Serial.write((byte)outputValue);,现 ...

不好意思,这应该是Arduino版本的问题,这个我们会及时更新的,将更新的程序发给您,问题解决就好了~
作者: Sast顺子    时间: 2015-10-23 11:15
奥松-Neil 发表于 2015-10-23 09:48
不好意思,这应该是Arduino版本的问题,这个我们会及时更新的,将更新的程序发给您,问题解决就好了~ ...

谢谢




欢迎光临 中创联盟-奥松机器人创客空间-Arduino中文社区 (http://www.makerspace.cn/) Powered by Discuz! X3.2