2017-08-09 38 views
-2

这是我的第一篇文章。就像标题所说的那样,如何将模拟信号(如脉冲速率传感器)转换为数字信号,以便我可以使用类似Java的方式读取脉冲频率?如何在Arduino中将模拟信号(即来自脉冲速率传感器)转换为数字信号?

这基本上就是它的要义,在任何人问起之前,我发现了这样的问题,但我还是不太明白。

非常感谢您的帮助。

+0

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 ... 0j​​0i10k1.HSHNMHrAG-A – Professor901

+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); 
    } 
} 

} 

在你的情况,你应该:

  1. 声明样品的全球缓冲液
  2. 运行serialPort = ...serialPort.openPort()serialPort.setParams(...)在一个循环
  3. ,使用serialPort.readBytes(...)在try ... catch块将数据存储在您的缓冲区
  4. 一旦你有足够的数据,从环打破分析它(用于心跳,等...)

我会向您保证您希望如何显示您的数据。快乐编码:)

+0

我只会补充一点:Arduino不适合用作DAC。如果你想要的话,你可以使用NI MyDAC,它不易出错,并且会给你更准确的结果,而且你可以使用labview以及更适合硬件项目的 –