这是我的第一篇文章。就像标题所说的那样,如何将模拟信号(如脉冲速率传感器)转换为数字信号,以便我可以使用类似Java的方式读取脉冲频率?如何在Arduino中将模拟信号(即来自脉冲速率传感器)转换为数字信号?
这基本上就是它的要义,在任何人问起之前,我发现了这样的问题,但我还是不太明白。
非常感谢您的帮助。
这是我的第一篇文章。就像标题所说的那样,如何将模拟信号(如脉冲速率传感器)转换为数字信号,以便我可以使用类似Java的方式读取脉冲频率?如何在Arduino中将模拟信号(即来自脉冲速率传感器)转换为数字信号?
这基本上就是它的要义,在任何人问起之前,我发现了这样的问题,但我还是不太明白。
非常感谢您的帮助。
如果“脉冲率传感器”,你的意思是,测量的心脏速率,那么我想你正在处理的运算放大器(运算放大器)电路,输出模拟信号
通过模拟,我的意思是信号是随时间变化的电压。
在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(...)
在try ... catch块将数据存储在您的缓冲区我会向您保证您希望如何显示您的数据。快乐编码:)
我只会补充一点:Arduino不适合用作DAC。如果你想要的话,你可以使用NI MyDAC,它不易出错,并且会给你更准确的结果,而且你可以使用labview以及更适合硬件项目的 –
1)Arduino不是Java,它是C++。 2)简单的谷歌搜索会给你答案:https://www.google.de/search?site=&source=hp&q=analogread+arduino&oq=analog+read+arduiono&gs_l=psy-ab.3.0.0i13k1l4.741.3276 .0.4180.20.14.0.0.0.0.335.2276.0j6j4j1.11.0 .... 0 ... 1.1.64.psy-ab..9.11.2275 ... 0j0i10k1.HSHNMHrAG-A – Professor901
不,我知道这两个那些。我的意思是将电子/模拟信号转换成我可以在屏幕上看到的数据。 –