Python初心者の方がラズパイPicoを使ってLED制御のプログラムを書いている際、インデントエラー(IndentationError)に遭遇することがあります。特に、複数の関数やループを使用している場合、このエラーがよく発生します。ここでは、その原因と解決策を解説し、さらにタクトスイッチを使ったLED制御を実現する方法を紹介します。
IndentationErrorの原因と対処法
インデントエラーは、Pythonで非常に一般的な問題です。Pythonでは、コードブロック(関数やループなど)の範囲をインデントで区切るため、インデントが一致しないとエラーが発生します。
まず、コードのインデントがタブとスペースの混在によって発生していることが多いので、すべてをスペースで統一することを確認してください。一般的には、Pythonでは1インデントあたりスペース4つを使います。
問題のコード例と修正方法
質問者のコードにあるインデントエラーを修正するために、以下のようにコードを見直してみましょう。
from machine import Pin
import time
OUTPUT = 10
LED_PIN = [ 1,2,3,4,5,6,7,8,9,10 ]
led = []
def all_led_on():
for x in range(len(LED_PIN)):
led.append(Pin(LED_PIN[x], Pin.OUT))
led[x].value(1)
p0 = Pin(0, Pin.IN, Pin.PULL_DOWN)
while True:
if p0.value() == 1:
time.sleep(0.5)
print('start')
all_led_on()
break
x = 0
while ( x < len( LED_PIN ) ):
led.append( Pin( LED_PIN[ x ], Pin.OUT ))
led[ x ].value( 1 )
print( x )
x = x + 1
print( 'ok' )
x = 9
while x > -1:
time.sleep(2)
led[ x ].value( 0 )
print( x )
x = x - 1
print( 'ok2' )
上記のように、インデントの整合性を確認することが重要です。すべてのインデントがスペース4つで統一されているかチェックし、エラーを解消しましょう。
タクトスイッチを使用したLED制御
タクトスイッチを使ってLEDの制御を行うには、スイッチが押されたタイミングでLEDを全灯にするという処理を加える必要があります。上記のコードでは、タクトスイッチの状態をチェックし、その状態に基づいてLEDの動作を制御しています。
タクトスイッチを使うためには、まずGPIOピンに接続したスイッチの状態を読み取るためにPinオブジェクトを設定します。そして、その状態を監視して、押されたらLEDをすべて点灯させるという動作を行います。これを`if`文で制御しています。
まとめ:Pythonプログラミングのポイント
Pythonを使ったラズパイPicoでのLED制御は、初心者にとって非常に良い学習素材となります。インデントエラーはよく起こる問題ですが、スペースとタブの混在を避け、インデントを統一することで解決できます。また、タクトスイッチを利用したインタラクションを組み合わせることで、実用的なプログラムを作成できます。
Pythonの学習においては、基本的な文法やライブラリの使い方をしっかり押さえ、少しずつ複雑なプログラムに挑戦していくことが大切です。今回紹介したコードやエラー解決方法を参考に、Pythonプログラムをより深く理解していきましょう。


コメント