对于学校项目我必须从Arduino(Sodaq Mbili)板上的2个传感器读取数据。我使用的传感器是TPHv2(温度,压力,湿度)和Grove光传感器。我想读一下温度,湿度和光照强度。我使用以下代码:
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])但是这没用。
有人有建议吗?提前谢谢!
答案 0 :(得分: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.