提问者:小点点

如何在没有sudo权限的情况下在alexa应用程序中运行Neopixel


我正在创建一个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权限就无法使用


共1个答案

匿名用户

我能够控制它而不需要sudo。您应该从raspi配置中启用SPI接口。当然,首先将LED连接物理移动到GPIO10并更改代码中的引脚。我试过了,这对我有用。