2017-04-24 19 views
1

pythonスクリプトで問題が発生しました。 私たちは光の絵を描こうとしていました。 常にそのエラーがあります。これはコードの最後の行です。その行がなければ何も起こりません。ここではエラーがあります:IndexError:リストのインデックスが範囲外です。showPicture(sys.argv [1]、strip)

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の色が間違っています。しかし、奇妙なことは、これはこのスクリプトだけにあるということです。別のスクリプトを使用している場合、正しい色が表示されます。たとえば、紫色になると青色になります。私はまだ今のところコメントすることはできませんのよう

+0

適切にインデントされたPythonコードを表示してください。左揃えのすべてが読めません。 – lit

+0

新しい問題=新しい質問... – Trolldejo

答えて

1

、私はこの答え足すよ:

sys.argvのを[1]それを呼び出すときに、あなたのスクリプトを与えているファイル名を指します。 スクリプトをどのように実行しますか?それが好きで実行することにより

は: python my_script.py my_file_name あなたはこのエラーを取得するべきではありませんこれ以上

私はあなたのコードであなたがすでにそうかもしれないので、あなたは、引数としてファイル名を与えるべきであると指定されて見るように。 ?

+0

あなたが尋ねた質問に私が答えたので、私はあなたが私の答えを受け入れたとマークすることを期待します。 新しい質問をするには、新しいスレッドを開くことになっています。 – Trolldejo

関連する問題