我正在创建一个Alexa应用程序,它将允许用户使用一个简单的语音命令打开一组NeoPixels (WS2812) 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发光二极管?
编辑:为了澄清我对GPIO引脚没有任何问题,没有sudo权限就不能使用的是NeoPixel库。
发布于 2022-05-20 19:52:49
我不需要苏多就能控制它。您应该从raspi启用SPI接口。当然,首先物理移动LED连接到GPIO10和更改引脚的代码。我试过了,这个对我有用。
https://stackoverflow.com/questions/59638319
复制相似问题