这是我的第一篇文章。就像标题所说的那样,如何将模拟信号(如脉冲速率传感器)转换为数字信号,以便我可以使用类似Java的方式读取脉冲率?
这基本上是它的要点,在任何人问之前,我已经找到了这样的问题,但我仍然没有真正理解。
非常感谢您的帮助。
答案 0 :(得分:1)
如果通过"脉搏率传感器",你的意思是测量你的心率,那么我假设你正在处理输出模拟信号
通过模拟,我的意思是信号是随时间变化的电压。
在Arduino中,有一个名为analogRead(some pin # here)
的内置命令,用于测量该瞬间的电压并返回一个10位数字(即0-1023)。此过程称为ADC(模数转换)。有关ADC的更多信息,请尝试使用Sparkfun Electronics的tutorial/article。
在您的问题中,您提到您希望将数据读入Java应用程序(据我所知)。那么这样的事情怎么样:
关于你的arduino:
// ...
void loop() {
// read voltage from 0-5V on pin A0 and store it in our sample buffer
int sample = analogRead(A0);
Serial.println(sample);
delay(10);
}
这将通过串行连续发送转换后的数字信号,以便您可以通过USB将arduino连接到运行Java应用程序的计算机。
有许多方法可以用Java读取USB串口,但我推荐的库是jssc,因为它与Arduino的串口库相似。
Here是一些JSSC示例
您关注的主要问题是如何阅读串口:
import jssc.SerialPort; import jssc.SerialPortException;
public class Main {
public static void main(String[] args) {
SerialPort serialPort = new SerialPort("COM1");
try {
serialPort.openPort();//Open serial port
serialPort.setParams(9600, 8, 1, 0);//Set params.
byte[] buffer = serialPort.readBytes(10);//Read 10 bytes from serial port
serialPort.closePort();//Close serial port
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
}
在你的情况下,你应该:
serialPort = ...
,serialPort.openPort()
和serialPort.setParams(...)
serialPort.readBytes(...)
将数据存储在缓冲区中我会告诉您如何显示数据。快乐的编码:)