【发布时间】:2020-12-06 01:35:45
【问题描述】:
好的,我试图通过串口将我的数据从 arduino 分离到 python GUI tkinter
示例:我有一个湿度和温度传感器,还有一个灯。我希望 Python GUI 读取串行通信并将数据存储在单独的字符串中(温度、湿度、光)
Python 代码
import tkinter as tk
import serial #Serial imported for Serial communication
import time #Required to use delay functions
# Create the master object
root = tk.Tk()
ArduinoSerial = serial.Serial('com5',9600) #Create Serial port object called arduinoSerialData
time.sleep(2)
humidity = tk.Label(root, text=ArduinoSerial.readline())
humidity.grid(row=0, column=0)
templabel = tk.Label(root, text="Temperature :" )
tempEntry = tk.Label(root, text=ArduinoSerial.readline() )
templabel.grid(row=1, column=0)
tempEntry.grid(row=1, column=2)
root.mainloop()
Arduino 代码
#include <DHT.h>
#include <Wire.h>
#include <SPI.h>
int relayPin = 5;
int relayPinW = 6;
int sOn = 3;
char serialData;
DHT my_sensor (3, DHT22);
float temperature, humidity;
void setup(){
Serial.begin(9600);
my_sensor.begin();
pinMode (relayPin, OUTPUT);
pinMode (relayPinW, OUTPUT);
}
void loop() {
//digitalWrite(relayPin, HIGH);
//Serial.print("Nano - Relay Open \n");
//delay(8000);
//if(sOn > 0){
//digitalWrite(relayPin, LOW);
//Serial.print("Nano - Relay CLOSED \n");
//delay(8000);
//}
digitalWrite(relayPinW, HIGH);
Serial.print("Nano - Water Pump is now active \n");
delay(8000);
digitalWrite(relayPinW, LOW);
Serial.print("Nano - Water Pump OFF \n");
delay(8000);
if(humidity > 1)
{
digitalWrite(6, HIGH);
Serial.print("Humidifer Is Now ** ON ** PIN5 \n");
} else {
Serial.print("ERROR with Digital Write PIN");
}
if(Serial.available() > 0)
serialData = Serial.read();
Serial.print(serialData);
humidity = my_sensor.readHumidity();
temperature = my_sensor.readTemperature();
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print("C / Humidity: ");
Serial.print(humidity);
Serial.println("%");
}
这可行,但我希望将数据分成自己的变量,我必须解码或编码吗?我很迷茫...谢谢!
【问题讨论】:
标签: python tkinter arduino pyserial