Reputation: 13
I am trying to implement a light sensors input so it outputs a value in the larger python script.
Specifically print the LED_BRIGHTNESS = 75 or LED_BRIGHTNESS = 255
Basically I when this script runs I want the sensor to dictate the LED brightness for the string of LED's
I started out trying to do the following...
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
That would output the result into the terminal, but I need it to output into the larger script.
So then I tired the following...
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
This returns the following error.
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
I am so new at this I don't even know what the correct terminology to use when trying to google the problem. I tried looking at how to print if statement output into string, or how to output if statement into string and I keep finding things that talk about completely predefined values not something coming from a sensors if statement.
If someone could point me in the right direction I'd appreciate it.
Upvotes: 1
Views: 363
Reputation: 77337
It looks like you want to set a variable dynamically. In this case, since there are only two possible values, an inline if will do:
LED_BRIGHTNESS = 75 if GPIO.input(4) == 1 else 255
Or you could expand the if:
if GPIO.input(4) == 1:
LED_BRIGHTNESS = 75
else:
LED_BRIGHTNESS = 255
Upvotes: 1