Hello,
I’ve come across an unexpected issue that may be hard to diagnose due to required hardware, but here goes.
I have a Raspberry Pi connected to an LCD display that I’m testing turning the screen on and off (not worrying about displaying text, I’ve previously written a program that uses a DHT22 sensor to display the temperature & humidity and external weather conditions using the Pirate Weather API).
While trying to write a simple program just to turn the display on or off, I run into an issue.
Here’s the code:
import board
import datetime
# I2C driver from:
# https://gist.github.com/vay3t/8b0577acfdb27a78101ed16dd78ecba1
import I2C_LCD_driver
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("state", help="'on' to turn on the screen, 'off' to turn off",type=str)
args = parser.parse_args()
mylcd = I2C_LCD_driver.lcd()
match args.state:
case "on":
power = 1
case "off":
power = 0
case _:
print("Please enter 'on' or 'off'")
power = None
if power != None:
print(power) # this is just to test
mylcd.backlight(power)
What’s happening that I don’t understand is if power == None, the if statement will not trigger but the display will turn on.
The only way I’ve been able to keep the display off is if I add an else statement:
else:
pass
This is using Python 3.10. My understanding is the else should not be needed at all. Any suggestions as to why the display might be turning on, or a better suggestion on how to handle the match statement?
–EDIT–
So it turns out initializing the display is turning it on at the same time. For a community that had no activity for ~2 years before this post, I’m pleasantly surprised with the amount of responses I’ve gotten - you all are awesome!
Yes, just got to testing again and that was it. The
mylcd = I2C_LCD_driver.lcd()
line is turning it on, then I need to action after it. I had tried using ‘is not’ before posting with no effect, and now I know why.