当回路未打开/关闭GPIO引脚时

2024-04-20 15:11:49 发布

您现在位置:Python中文网/ 问答频道 /正文

在循环中调用的GPIO引脚没有遵循其指定的配置。你知道吗

我在没有循环的情况下运行了脚本,它似乎可以工作。我相信这个问题是有可能的。我想可能需要一个GPIO.cleanup文件每次循环之后?你知道吗

import RPi.GPIO as GPIO
import time
import board
import busio
import digitalio
import adafruit_max31855

GPIO.setmode(GPIO.BCM)
GPIO.setup(0, GPIO.OUT)
GPIO.setup(2, GPIO.OUT)
GPIO.setup(3, GPIO.OUT)
GPIO.setup(4, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)

def heating():
    GPIO.output(0, False)
    GPIO.output(2, True)
    GPIO.output(3, False)
    GPIO.output(4, True)
    GPIO.output(22, False)
    GPIO.output(23, True)
    GPIO.output(24, False)
    GPIO.output(25, True)
    GPIO.output(27, True)


def cooling():
    GPIO.output(0, True)
    GPIO.output(2, False)
    GPIO.output(3, True)
    GPIO.output(4, False)
    GPIO.output(22, True)
    GPIO.output(23, False)
    GPIO.output(24, True)
    GPIO.output(25, False)
    GPIO.output(27, False)


# User Input
desired_temp = int(input("Enter your desired temperature: "))

spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
cs = digitalio.DigitalInOut(board.D5)

max31855=adafruit_max31855.MAX31855(spi, cs)

try:
    while True:
        tempC = max31855.temperature
        tempF = tempC * 9 / 5 + 32
        print('Temperature: {} C {} F '.format(tempC, tempF))
        time.sleep(0.05)
        if tempF <= desired_temp:
            heating()
            print("Now Heating...")
        else:
            cooling()
            print("Now Cooling...")
finally:
    GPIO.cleanup()

我想让MAX31855热电偶读取温度。我有我的GPIO引脚定义和功能标题加热和冷却定义以及。使用while回路,热电偶读取温度。用户输入一个阈值。当温度读数超过该阈值时,程序将切换到冷却。 运行脚本时,循环会根据温度变化打印“Now Heating…”和“Now Cooling…”,但GPIO引脚似乎没有遵循指定的真/假配置。当测量一个引脚上的电压时,输出为零。其目的是为珀耳帖模块提供电压,并根据用户输入温度产生温度维持效果。你知道吗


Tags: importboardfalsetrueoutputgpiosetupout