デジタルの世界では「0」は電圧が低い状態、「1」は電圧が高い状態のことを指すのが一般的です。GPIO.output(11, 0)の「0」は、11番ピンの出力を電圧が低い状態(0V)にするという意味で、GPIO.output(11, 1)の「1」は、11番ピンの出力を電圧が高い状態(3.3V)にするという意味になります。

 time.sleep(1)は「1秒間」スリープするという意味で、time.sleep(2)は「2秒間」スリープするという意味になります。スリープとは「眠る」という意味ですが、プログラムでは「何もしないでそのままの状態で待つ(眠った状態=何もしない)」という意味で使われます。従って、これらの行はプログラムの処理を先に進めず、一定時間何もせずにそのままの状態で待たせるという役割を果たします。

 ファイル名は「blink11.py」のままでも構いせんが、図31のようにシンプルな形に編集して別名で保存しても大丈夫です。その場合は、「ファイル」-「別名で保存」を選択し、新しいファイル名(例えば「myblink11.py」)を付けて保存してください。

図31●中身をシンプルにしてもOK

これでLEDが点滅すれば「Lチカ」成功です!

 それでは「blink11.py」(または「myblink11.py」)を実行してみましょう。まず、Scratchのプログラムが停止していることを確認してください。確認できたらLXTerminalを起動し、プロンプトに次のコマンドを打ち込んで実行します。

$ sudo python blink11.py 

 「blink11.py」はPythonのプログラムです。通常、Pythonのプログラムであれば「python blink11.py」とするだけでプログラムを実行できるのですが、今回は先頭に「sudo」というコマンドを付けて実行しています。これは、「blink11.py」が取り込んで利用している「RPi.GPIO」というプログラム(モジュール)が、ルート権限という特別な権限を持ったユーザーでなければ実行できないためです。「sudo」は「スーパーユーザー(ルート権限と呼ばれるシステム上で最も強い権限を持つユーザー)の権限でプログラムを実行する」ためのコマンドです。これを付けずにコマンドを実行すると、あなたにはこのプログラムを実行する権限がないという旨のメッセージが出て、その時点でプログラムが中断してしまうので注意してください。

 プログラムの実行を終わらせるには、「Control」と「C」の二つのキーを同時に押します。プログラムが中断されプロンプトが再び現れます。

 Pythonを使って「Lチカ」ができるようになれば、ソフトウエアでハードウエアを制御するという感覚がつかめます。この感覚をまずつかむことが、ラズパイでロボットを製作する大きな第一歩になります。

 次の第3回では、ロボットが独立行動できる環境を作り、ロボットをWebコントロールする原理を学びます。お楽しみに!


瀬谷 啓介(せや けいすけ)
Double Bind(ダブルバインド)代表取締役社長
「アジャイルソフトウェア開発の奥義」「まるごと学ぶiPhoneアプリ制作教室」 などソフトウェア・プログラミング関連の著書・訳書多数。オンラインIT動画学習サイト「zero2one」を運営。幅広くIT教育に関わる。日本TI半導体グループ技術主任、日本AMD次世代製品開発センター長、 フィルモアアドバイザリーCTO・執行役員などを歴任。小型飛行機免許所有、理論物理学学士、物性物理学修士。