Arduino
这Arduino是一台小型计算机。和便宜的。无论下一个假期来临,你附近的孩子都应该拥有一个,但你应该先把它从盒子里拿出来玩。 网上有很多支持用于硬件和开发系统。
该项目将 Arduino 连接到 JMP 并进行一些实时数据记录。你将需要Arduino IDE 下载;这是保存程序的 IDE 的图片。

这个小程序做了两件事:在电源打开时初始化串行通信,然后在其剩余的生命周期中读取模拟信号并将值打印到串行端口。
电路
该项目的传感器是硫化镉光敏电阻。这是面包板电路的图片。

光敏电阻(带有波浪线的圆形,中心后部)和旁边的 43K 欧姆电阻(黄-橙-橙-金)在黑线(地)和红线(5 伏)电源之间形成分压器。分压器中心抽头上的白线连接到蓝色 Arduino UNO 板上的 A0。A0 是上面的程序正在读取的模拟输入。当光敏电阻变暗时,其电阻非常高(与43K欧姆电阻相比,白线的电压将接近地(0伏)。当光线明亮时,光敏电阻的电阻非常低,白线将接近5伏。
您使用 USB 电缆作为串行端口将程序加载到 Arduino 中。它可能是 com3 或 com4 或其他选择。JMP 将监听同一个 USB 串行连接。这是一条很酷的蓝色 USB 电缆,可能随 Arduino 一起提供,具体取决于供应商。

JSL
制作一个包含两列的数据表;时间列将填写自捕获开始以来的秒数。sense 列将填充来自 Arduino 的数据。
dt = New Table( "capture",
Add Rows( 0 ),
New Column( "time", Numeric, Continuous, Format( ":day:hr:m:s", 21, 3 ) ),
New Column( "sense", Numeric( 2 ) ) // the analog sensor is 0..1023
);
记住开始时间
start = Tick Seconds();
打开 JMP 的数据源,设置参数,并提供脚本来处理来自 Arduino 的每行数据。 COM3 可能不是您的 Arduino 连接的端口。
feed = Open Datafeed(
Connect( Port( "com3" ), Baud rate( 9600 ), Parity( even ), DataBits( 7 ) ),
Set Script(
x = feed << getLine;
dt << addrows( 1 );
dt:time = Tick Seconds() - start;
dt:sense = Num( x );
)
);
运行控制图(或图形生成器脚本)以查看正在运行的数据收集。
dt << Control Chart( Sample Size( 1 ), KSigma( 3 ), Chart Col( :sense, Run Chart() ) );
行动
在这个 5 分钟的剪辑中,您将看到控制图随着数据到达而更新;数据值根据到达传感器的光线而变化。您还会看到轴滚动以显示更多数据,并注意到 JMP 赶上数据时响应时间存在滞后。没有握手;数据很有可能丢失。Arduino 代码中的 200 毫秒暂停(如上所示)旨在为 JMP 提供时间来处理数据并更新显示。
Arduino - YouTube

谢谢克雷格。 在 JMP 15 中我收到错误。 “无法设置‘时间’列的值,因为行号 (0) 无效。”传感器可在 Arduino IDE 中运行,将值发送到 Com7。
谢谢。传感器的可能性有很多; Arduino 数字输入也可以与物理开关一起使用。我也喜欢 PI; JMP(Windows 或 Mac)可以使用带有 PI 的套接字,这可能使远程连接比 Arduino 更容易。
我正在做一些非常类似于测量距离的事情。 我正在使用连接到 Arduino Uno 的超声波 ping 传感器。 效果很好,只是需要一台装有 JMP 的计算机。 对于其他项目,我将数据写入 SD 卡屏蔽上的文件,但实时查看数据还是很不错的。
如果有一种方法可以在树莓派上运行 JMP 并将 arduino 连接到树莓派,那将会很有用。 使用树莓派,您可以直接连接到树莓派的 GPIO,不需要 arduino。