0

对于一个学校项目,我必须从 Arduino(Sodaq Mbili)板上的 2 个传感器读取数据。我使用的传感器是 TPHv2(温度、压力、湿度)和 Grove Light Sensor。我想读取温度、湿度和光照强度。我为此使用以下代码:

void setup() {
  Serial.begin(9600);
}

void loop() {
    Serial.println(bme.readTemperature());

    Serial.println(bme.readHumidity());

    int sensorValue = analogRead(SENSOR_PIN); 
    Serial.println(sensorValue);

    delay(3000);
}

这每 3 秒给我以下输出:

21.23
25.65
256

然后我通过 USB 将 Arduino 连接到我的 Raspberry Pi 2。我想获取变量中的数据,以便可以将其放入 Json 格式并将其发送到 Azure 事件中心。我现在在覆盆子上用 Python 编写了这段代码(我在网上找到了这个):

import serial

ser = serial.Serial('/dev/ttyUSB0',9600)
s = [0]

while True:
   s[0] = ser.readline()
   print s

然后我的输出每 3 秒给出一次:

['22.46\r\n']
['37.93\r\n']
['643\r\n']

我现在的问题是,如何在 3 个不同的变量中获得这 3 个值?我试图将它们放在同一个数组中(我想要这样的东西: [22.46,37.93,643] )但这没有用。

有人有建议吗?提前致谢!

4

1 回答 1

1

好吧,如果你不想像 jabujavi 所说的那样在 arduino 中格式化代码,你可以这样做:

import serial

ser = serial.Serial('/dev/ttyUSB0',9600)
s = []

while True:
    data = ser.readline()   #read data from serial
    if data:                #if there is data, append it to s
        s.append(data)
    if len(s) == 3:         #when s is 3 elements long, (all data has been retrieved)
        print s             #print out s
        s = []              #and then reset s to start over.
于 2017-01-19T04:48:46.017 回答