IndexError:列表索引超出范围showPicture(sys.argv [1],strip)

时间:2017-04-24 15:04:49

标签: python led

我遇到了python脚本的问题。 我们想做轻画,除了脚本之外它都有效。 总是有这个错误。这是代码中的最后一行。没有那条线就什么都没发生这是错误:

File "showImage.py", line 49, in <module> showPicture(sys.argv[1], strip) IndexError: list index out of range

以下是代码:

import time
from neopixel import *
from PIL import Image
import sys

# see also https://learn.adafruit.com/neopixels-on-raspberry-pi/overview

# LED strip configuration:
LED_COUNT   = 50      # Number of LED pix.
LED_PIN     = 18      # GPIO pin connected to the pix (must support PWM!).
LED_FREQ_HZ = 800000  # LED signal frequency in hertz (usually 800khz)
LED_DMA     = 5       # DMA channel to use for generating signal (try 5)
LED_INVERT  = False   # True to invert the signal (when using NPN transistor 
level shift)

# method to blank all LEDs
def blankLine():
for x in range(LED_COUNT):
strip.setPixelColorRGB(x, 0,0,0)
strip.show()

# method to resize picture and show in column per column on the led strip
def showPicture(filename, strip):
blankLine()
# open file
img = Image.open(filename).convert("RGB")

# resize file
newWidth = float(img.size[0])/float(img.size[1])*LED_COUNT
img = img.resize( (int(newWidth), LED_COUNT))

width = img.size[0]
height = img.size[1]

pix = img.load()

for x in range(width):
for y in range(height):
    strip.setPixelColorRGB(y, pix[x,y][0], pix[x,y][1], pix[x,y][2])
strip.show()
time.sleep(0.3)

blankLine()

# main function - start of the program - you have to provide an image name 
as an argument
# Create NeoPixel object with appropriate configuration.
strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, 
LED_INVERT)
# Intialize the library (must be called once before other functions).
strip.begin()
showPicture(sys.argv[1], strip)

我不知道出了什么问题?解决

新问题:LED显示错误的颜色。但奇怪的是,这只是在这个剧本中。如果使用其他脚本,则显示正确的颜色。例如,当它显示紫色时,它是蓝色的。

1 个答案:

答案 0 :(得分:1)

我现在仍然无法发表评论,我正在撰写这个答案:

sys.argv [1]是指您在调用脚本时提供脚本的文件名。 你如何运行你的脚本?

通过运行它: python my_script.py my_file_name 你不应该再犯这个错误了

正如我在您的代码中看到的那样,指定您应该将文件名作为参数,以便您可能已经这样做了。?