简体   繁体   English

带有Arduino和多个ds18b20的Pyserial

[英]Pyserial with Arduino and multiple ds18b20

I am building a thermostat GUI using Arduino and Python 3 Tkinter . 我正在使用Arduino和Python 3 Tkinter构建恒温器GUI。 I have multiple ds18b20 sensors hooked to an Arduino card. 我将多个ds18b20传感器连接到Arduino卡。 I can get all the sensors to read in one tkinter label, however, I need to just read one sensor and place it in a label, then read the second and place it in a different label etc. I can't figure out how to read each sensor separately. 我可以让所有传感器读取一个tkinter标签,但是,我只需要读取一个传感器并将其放置在标签中,然后读取第二个传感器并将其放置在其他标签中,等等。我不知道如何分别读取每个传感器。 Any help is greatly appreciated. 任何帮助是极大的赞赏。

You need to do a back-and-forth serial conversation where the python code sends "I want sensor {1}". 您需要进行往返串行对话,其中python代码发送“我想要传感器{1}”。 The Arduino code must act on this input by first determining which sensor reading is required, reading the relevant sensor, converting signal to degF or degC or whatever, then sending the result back through serial. Arduino代码必须首先确定需要读取的传感器,读取相关的传感器,将信号转换为degF或degC或其他任何值,然后将结果通过串行发送回去,然后对该输入进行操作。

This function can then be called from within GUI code. 然后可以从GUI代码中调用此函数。

Python pseudocode: Python伪代码:

set up serial connection

def get_val(sensor):
    serial send sensor
    serial get value
    return value

sensors = [1,2,3]

for each in sensors:
    temp = get_val(each)

Arduino pseudocode: Arduino伪代码:

SENSOR1_PIN = A4;
SENSOR2_PIN = A3;

setup {
    serial
    pins
}

main {
    get serial char
    if (char==1) {
        value = analog read SENSOR1_PIN
        - do some maths -
        serial send temp
    }
    if (char==2) { ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM