我正在创建一个Alexa应用程序,允许用户使用简单的语音命令打开一组neo pixels(ws 2812)led。该应用程序托管在raspberry pi 4上,目前用于打开GPIO引脚。我遇到的问题是,打开NeoPixels的代码需要sudo权限,所以当使用alexa应用程序时,它只会出错,而不是打开灯。
由于需要sudo,我运行脚本的唯一方法是
sudo python3 LEDTest2.py
工作正常
这是Alexa应用程序的实现,打开GPIO引脚并调用python程序
@ask.intent('GpioIntent', mapping = {'status':'status'})
def Gpio_Intent(status,room):
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT)
if status in STATUSON:
GPIO.output(17,GPIO.HIGH)
LEDTest2.func() ###Problem Point###
return statement('turning {} lights'.format(status))
这适用于打开GPIO引脚
下面是LEDTest2.func()
import board
import neopixel
import time
pixels = neopixel.NeoPixel(board.D18,60)
def func():
print("func() in LEDtest2.py")
pixels.fill((255, 197, 143))
time.sleep(5)
pixels.fill((0,0,0))
if __name__ == "__main__": #same as file one
print("LEDtest2.py is being run directly")
for x in range(2):
pixels.fill((0, 255, 0))
time.sleep(.1)
pixels.fill((0, 0, 0))
time.sleep(.1)
else:
print("LEDtest2.py is being imported into another module")
如何在不需要 sudo 权限的情况下运行此代码?有没有另一种方法可以使用 Python 控制 WS2812 LED?
编辑:只是为了澄清我对GPIO引脚没有任何问题,它是NeoPixel库,没有sudo权限就无法使用
我能够控制它而不需要sudo。您应该从raspi配置中启用SPI接口。当然,首先将LED连接物理移动到GPIO10并更改代码中的引脚。我试过了,这对我有用。