我有一个 arduino 机器人收集5种不同的传感器数据(火焰,气体,距离,温度和金属传感器)。现在,我在 arduino IDE 的串行监视器中显示这些内容时没有任何问题。但是当我将 arduino 连接到 RPi 并尝试通过 TKinter GUI单独显示它时,我遇到了麻烦,它们全部显示在一起,我找不到分离数据的方法,并将它们插入到显示屏上的单独日志中。
到目前为止,我已尝试过:
arduino方面:
#define trigPin 12
#define echoPin 13
#include<dht.h>
dht DHT;
#define DHT11_PIN 3
void setup() {
Serial.begin (9600);
Serial1.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
int chk = DHT.read11(DHT11_PIN);
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
Serial.print(distance);
Serial.println(" ");
Serial.print (DHT.temperature, 1);
Serial.println(" ");
delay(5000);
}
事物的python方面:
from tkinter import *
import serial
import time
ardSerialData = serial.Serial("COM5", 9600)
root = Tk()
root.wm_title("sensor data")
root.config(bg = "#828481")
rightFrame = Frame(root, width=200, height = 600, highlightthickness=2, highlightbackground="#111")
rightFrame.grid(row=0, column=1, padx=100, pady=2, sticky=N+S)
UltraLog = Text(rightFrame, width = 20, height = 10, takefocus=0, highlightthickness=1, highlightbackground="#333")
UltraLog.grid(row=0, column=0, padx=10, pady=2)
TempLog = Text(rightFrame, width = 20, height = 15, takefocus=0, highlightthickness=1, highlightbackground="#333")
TempLog.grid(row=0, column=1, padx=10, pady=2)
def getRaw():
if (ardSerialData.inWaiting() > 0):
raw = ardSerialData.readline()
sensor = raw.split()
return sensor
def ultDisp():
ultData = sensor[0]
if (ardSerialData.inWaiting() > 0):
UltraLog.insert(0.0,ultData)
root.after(1000, ultDisp)
else:
UltraLog.insert (0.0, "no Ultra")
root.after(2000, ultDisp)
def tempDisp():
tempData = sensor[1]
if (ardSerialData.inWaiting() > 0):
TempLog.insert(0.0,tempData)
root.after(1000, tempDisp)
else:
TempLog.insert (0.0, "no temp ")
root.after(2000, tempDisp)
root.after(6000, ultDisp)
root.after(6000, tempDisp)
root.mainloop()
在我放弃并来到这里之前,这些是我的代码的最后一次尝试。 我需要帮助从 arduino 串行分割我的数据并在各自的日志中显示传感器数据。在打印出来自 arduino 的数据之前,我尝试使用空间,#甚至关键字进行拆分在超声波传感器数据之前&#34; u&#34; 以及在温度传感器数据之前&#34;#34; 。
此外,如果有一个不同的,更容易的方法,请建议。