python - 如何将 if 语句输出结果放入 python 脚本中

标签 python if-statement input sensors

我正在尝试实现光传感器输入,以便它在更大的 python 脚本中输出一个值。

具体打印LED_BRIGHTNESS = 75或LED_BRIGHTNESS = 255

基本上,当这个脚本运行时,我希望传感器决定 LED 串的 LED 亮度

我开始尝试执行以下操作...

import urllib2
import xml.etree.ElementTree as ET
import time
from neopixel import *
import sys
import os    
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.IN)

if GPIO.input(4) == 1:
        print "LED_BRIGHTNESS = 75"
else:
        print "LED_BRIGHTNESS = 255"
# LED strip configuration:
LED_COUNT      = 95      # Number of LED pixels.
LED_PIN        = 18      # GPIO pin connected to the pixels (18 uses PWM!).
#LED_PIN        = 10      # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).
LED_FREQ_HZ    = 800000  # LED signal frequency in hertz (usually 800khz)
LED_DMA        = 5       # DMA channel to use for generating signal (try 5)
#LED_BRIGHTNESS = 255     # Set to 0 for darkest and 255 for brightest
LED_INVERT     = False   # True to invert the signal (when using NPN transistor level shift)
LED_CHANNEL    = 0       # set to '1' for GPIOs 13, 19, 41, 45 or 53
LED_STRIP      = ws.WS2811_STRIP_GRB   # Strip type and colour ordering

这会将结果输出到终端,但我需要它输出到更大的脚本中。

所以我厌倦了以下...

import urllib2
import xml.etree.ElementTree as ET
import time
from neopixel import *
import sys
import os
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.IN)


if GPIO.input(4) == 1: "LED_BRIGHTNESS = 75"
if GPIO.input(4) == 0: "LED_BRIGHTNESS = 255"


# LED strip configuration:
LED_COUNT      = 95      # Number of LED pixels.
LED_PIN        = 18      # GPIO pin connected to the pixels (18 uses PWM!).
#LED_PIN        = 10      # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).
LED_FREQ_HZ    = 800000  # LED signal frequency in hertz (usually 800khz)
LED_DMA        = 5       # DMA channel to use for generating signal (try 5)
#LED_BRIGHTNESS = 255     # Set to 0 for darkest and 255 for brightest
LED_INVERT     = False   # True to invert the signal (when using NPN transistor level shift)
LED_CHANNEL    = 0       # set to '1' for GPIOs 13, 19, 41, 45 or 53
LED_STRIP      = ws.WS2811_STRIP_GRB   # Strip type and colour ordering

这将返回以下错误。

Traceback (most recent call last):
  File "metar.py", line 30, in <module>
    strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL, LED_STRIP)
NameError: name 'LED_BRIGHTNESS' is not defined

我对此很陌生,我什至不知道在尝试用谷歌搜索问题时应该使用什么正确的术语。我尝试研究如何将 if 语句输出打印到字符串中,或​​者如何将 if 语句输出到字符串中,并且我不断发现谈论完全预定义值的内容,而不是来自传感器 if 语句的内容。

如果有人能指出我正确的方向,我将不胜感激。

最佳答案

看起来您想动态设置一个变量。在这种情况下,由于只有两个可能的值,因此内联 if 即可:

LED_BRIGHTNESS = 75 if GPIO.input(4) == 1 else 255

或者您可以扩展 if:

if GPIO.input(4) == 1:
    LED_BRIGHTNESS = 75
else:
    LED_BRIGHTNESS = 255

关于python - 如何将 if 语句输出结果放入 python 脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49724109/

相关文章:

带有 Makefile 的 `extra` 包的 Python setuptools/distutils 自定义构建

azure - 如何在Azure Logic App中实现这种情况?

bash - 在这种情况下,如何在 shell/bash 中自动化 if/else/then 任务?

java - 计算文本文件中的空格数以查找其字数

javascript - 使用 JavaScript 将输入发送到 url 并控制 iframe 直到提交?

c++ - 如何制作一个大小为变量的数组?

python - 如何用 sphinx 生成函数签名?

python - 使用行列表,无论我有 1 行还是 N 行

python - 属性错误: 'Series' object has no attribute 'columns' in Dask

validation - SSIS 2005 如何以编程方式解决错误 "input column has lineage id that was not previously used in the data flow task"