シリアルコンソールを使う

AdafruitのLearning Guideの非公式日本語訳です。
英語独特の言い回しを可能な限り日本語的な表現に直していますが、不自然に感じる部分も残っていますことを何卒ご容赦ください。

無事にシリアルコンソールに接続できたら、早速使い始めましょう。

先ほど書いたコードには、シリアルコンソールへの出力がありません。そこで、それを編集して出力を作成してみましょう。

code.pyファイルをエディタで開き、print文を入れてください。何でも好きなように出力できます。括弧内の引用符の間にあなたのフレーズを入れてください。例えば、以下のようになります。

import board
import digitalio
import time
 
led = digitalio.DigitalInOut(board.D13) # CLUEの場合はboard.D17に修正
led.direction = digitalio.Direction.OUTPUT
 
while True:
    print("Hello, CircuitPython!")
    led.value = True
    time.sleep(1)
    led.value = False
    time.sleep(1)

ファイルを保存します。

それでは、シリアルコンソールに接続しているウィンドウを見てみましょう。


素晴らしい! print文がコンソールに表示されています! printされるテキストを他のものに変更してみてください。

シリアルコンソールウィンドウを見れる場所に置いておきましょう。ファイルを保存してください。ボードが再起動したときのシリアルコンソールの表示を見ることができます。そして、新しい変更点を確認してください。

Traceback (most recent call last): は、ファイルを保存する前にボードが最後に行っていたことを伝えています。これは通常の動作で、ボードがリセットされるたびに発生します。
これはトラブルシューティングにとても便利です。どのように使われているのかわかるように、エラーを紹介してみましょう。

led.value = True の行から True の最後の e を削除して、 led.value = Tru となるようにします。

ファイルを保存してください。あなたの赤いLEDの点滅が止まり、色付きのステータスLEDが点滅していることに気づくでしょう。これは、コードが正しくなくなり、正常に実行できなくなったためです。それを修正する必要があります!

通常、エラーに遭遇した場合、わざとエラーのあるコードを書き加えたからではありません。200行のコードがあるかもしれませんが、大体の場合、どこにエラーが隠れているのか見当がつかないのです。
そんな時に役立つのがシリアルコンソールです。

Traceback (most recent call last):は、最後に実行できたのはコードの10行目であることを伝えています。次の行はあなたのエラーです。NameError: 名前 ‘Tru’ が定義されていません。
このエラー自体はあまり意味がわからないものかもしれませんが、問題が10行目にあることを知ることで、何から始めればいいのかがわかります。

コードに戻って、10 行目を見てください。今回はすでにあなたは問題が何であるかを知っていますね。
しかし、もしそうでなければ、10行目を見て、コードが理解でるものかを確認してみてください。それでもわからない場合は、グーグルでエラーを検索して助けを得てみてください。
今回は、何を探せばいいかわかります。True のスペルが間違っています。タイプミスを修正してファイルを保存してください。

エラーを修正してくれてありがとうございます。
シリアルコンソールはHello back to you!が表示され、赤いLEDが再び点滅しています。

シリアルコンソールは、コードによって生成された出力を表示します。湿度センサーやサーミスタなどの一部のセンサーはデータを受信するので、print文を使用してその情報を表示することができます。また、トラブルシューティングのためにprint文を使用することもできます。コードが動作しておらず、どこで失敗しているのかを知りたい場合は、print文を様々な場所に配置して、どこでprintが止まっているのかを確認することができます。

シリアルコンソールには多くの用途があり、学習やプログラミングのための総合的に素晴らしいツールです!

原文: https://learn.adafruit.com/adafruit-clue/interacting-with-the-serial-console

Follow me on Twitter