検索コード

コース レッスン2/10: Raspberry Pi Pico 4WDスマートカーキットを動かすためのPython基礎

このレッスンはの一部です: Raspberry Pi Pico 4WDスマートカー

コース レッスン2/10: Raspberry Pi Pico 4WDスマートカーキットを動かすためのPython基礎

このRobojax Raspberry Pi Pico 4WDスマートカーコースの第2レッスンでは、ロボットを制御するための基礎となるPythonプログラミングの概念について深く掘り下げます。このガイドは、コーディング経験がゼロの状態から、ハードウェアを制御するスクリプトを自信を持って書けるようになることを目的としています。単に構文を暗記するのではなく、各概念の背後にある「理由」を探求し、独自のプロジェクトを構築・カスタマイズするためのツールを提供します。このレッスンの終わりまでに、変数、制御フロー、関数、リストについてしっかりと理解できるでしょう。これらは、今後のすべてのプロジェクトの基礎となるものです。

この知識はスマートカーだけのものではありません。ここで学ぶ原則は、数え切れないほどの実世界のアプリケーションで使用されているものと同じです。これらのスキルは次のようなことに応用できます:

  • センサーデータに基づいてファン、ポンプ、照明を制御する家庭用温室の自動化。
  • アラームを発動させたり通知を送信したりするカスタムセキュリティシステムの構築。
  • 環境に反応するインタラクティブなアートインスタレーションの作成。
  • プリプログラムされたもの以外の独自のカスタムロボット動作の開発。

ハードウェア/部品

このレッスンのハードウェア例に沿って進めるには、以下の部品が必要です。これらはすべてSunFounder Raspberry Pi Pico 4WDスマートカーキットに含まれていますが、単体実験用に個別に購入することもできます。

  • Raspberry Pi Pico:プロジェクトのマイクロコントローラー脳。
  • LED:デジタル出力制御のデモンストレーションに使用。
  • 抵抗器(150Ω〜330Ω):電流を制限し、LEDを保護するため。
  • ジャンパーワイヤー:ブレッドボード上で接続を行うため。
  • ブレッドボード:回路のプロトタイピング用。

配線ガイド

このレッスンのハードウェアデモンストレーションでは、Raspberry Pi PicoでLEDを制御する簡単な回路を構築します。配線は簡単で、フィジカルコンピューティングの古典的な最初のステップです。重要なのは、電流制限抵抗を使用してLEDが焼けないようにすることです。抵抗はLEDと直列に接続されます。LEDの長い脚(アノード)が正の接続で、短い脚(カソード)が負の接続です。

ビデオでは、インストラクターがグランドピンとLEDの短い脚に接続された抵抗を使用しています。長い脚はGPIOピン22に接続されています。この設定により、Picoはピンにハイ(3.3V)信号を送ってLEDをオンにし、ロー(0V)信号を送ってオフにすることができます。

注:配線図はビデオに示されています。正確な配置については視覚的なガイドを参照してください。

コードの説明

このレッスンでは、ロボットを制御するために不可欠な中核的なPython構文とロジックに焦点を当てます。ビデオで取り上げられている主要な概念を詳しく見ていきましょう。コード例は、Raspberry Pi Picoのようなマイクロコントローラーで実行するために設計されたPythonのバージョンであるMicroPythonで書かれています。

変数とデータ型

変数は、情報を保存するラベルの付いた箱のようなものです。Pythonでは、変数の型を宣言する必要はありません。割り当てる値から推測されます。(ビデオの03:33で説明)


age = 23  # これは整数です
name = "Ahmad"  # これは文字列(テキスト)です
pi = 3.14  # これは浮動小数点数(小数)です

これらの変数を計算に使用したり、その値を印刷したりできます。例えば、特定の年齢の日数を計算するには、days = age * 365を使用できます。print()関数は、コンソールに出力を表示するために使用されます。

条件文(If/Else)

条件文を使用すると、コードが決定を下すことができます。これは、障害物を検出したときに停止するなど、ロボットが環境に反応するために重要です。(ビデオの07:39で説明)


age = 16
if age >= 17:
    print("運転できます")
else:
    print("運転するには若すぎます")

if文は条件をチェックします。条件がTrueの場合、その下のインデントされたコードブロックが実行されます。Falseの場合、else文の下のコードが実行されます。インデント(行頭のスペース)はPythonで重要です。どのコードがどのブロックに属するかを定義します。

ループ(ForとWhile)

ループは、コードのブロックを繰り返すために使用されます。これは、センサー値をスキャンしたり、一連のステップでモーターを動かしたりするタスクに理想的です。(ビデオの09:04で説明)

Forループ:このループは、特定の回数だけ繰り返します。


for x in range(5):  # xは0、1、2、3、4になります
    print(x)

Whileループ:このループは、条件が真である限り続きます。これは、特定のイベントが発生するまで永久に実行されるメインプログラムループを作成するのに役立ちます。(ビデオの12:13で説明)


x = 9
while x > 5:
    print("xの値は:", x)
    x = x - 1  # xを減らす
print("ループ終了")

while True:ループには注意してください。break文を使用してループを終了するか、プログラムを停止しない限り、永久に実行されます。

関数

関数は、特定のタスクを実行する再利用可能なコードブロックです。コードを整理し、繰り返しを防ぐのに役立ちます。(ビデオの14:52で説明)


def calculate_days(years):
    days = years * 365
    return days

# これでこの関数を複数回使用できます
days_in_10_years = calculate_days(10)
print("10年間の日数:", days_in_10_years)

ここで、calculate_daysは引数(years)を受け取り、値を返す関数です。同じ計算を何度も書くよりも効率的です。ビデオでは、ある関数が別の関数を呼び出す方法も示されており、単純でテスト可能な部品から複雑な操作を構築できます。

リスト

リストは、アイテムの順序付きコレクションを格納するために使用されます。これは、ロボットの一連のコマンド(「forward」、「back」、「left」、「right」など)を格納するのに最適です。(ビデオの19:15)


move = ["forward", "back", "left", "right", "stop"]
print(len(move))  # リスト内のアイテム数を出力(5)
print(move[0]) # 最初のアイテム「forward」を出力

# アイテムを追加できます
move.append("cliff")
# アイテムを削除できます
move.pop()  # 「cliff」を削除
# アイテムを変更できます
move[2] = "fly"  # 3番目のアイテムを「fly」に変更

リストはゼロインデックスであり、最初のアイテムはインデックス0です。len()関数はリストの長さを返し、forループを使用してすべてのアイテムを反復処理できます。enumerate()関数も紹介されており、ループ中にインデックスと値の両方を提供するため、複数のピンやセンサーを扱う際に便利です。

ピンと時間の操作

ここで、Pythonのロジックを物理的な世界に接続します。machineライブラリを使用してPicoのGPIOピンを制御します。(ビデオの25:16)


from machine import Pin
import time

# ピン22を出力として設定
led = Pin(22, Pin.OUT)

# LEDをオン/オフ
led.on()
time.sleep(1)
led.off()
time.sleep(1)

Pin(2, Pin.IN)でピンを入力として設定することで、ピンから読み取ることもできます。timeライブラリは、遅延(time.sleep())を追加したり、time.ticks_ms()を使用して経過時間を測定したり、time.localtime()time.mktime()で時間形式を変換したりするために不可欠です。これは、モーター速度を制御するパルス幅変調(PWM)信号の作成など、時間ベースのロジックにとって重要です。

ライブプロジェクト/デモンストレーション

ビデオでは、インストラクターがこれらの概念のライブデモンストレーションを提供しています。まず、Pythonインタープリターで単純なprint()ステートメントと変数代入を示します。次に、より複雑な例に移り、ifステートメントが変数の値に基づいてプログラムの流れをどのように変えるかを視覚的に示します。

その後、インストラクターはLEDをRaspberry Pi Picoに接続して、実用的なハードウェアの例を示します。1秒の遅延でLEDをオン/オフする簡単なMicroPythonスクリプトを書き、コードで物理的な出力を制御する直接的な結果を示します。この実践的な例は、プログラミングロジックと実際の動作との関連を強化します。レッスンは、enumerateを使用して複数のピンを管理する方法と、timeモジュールを使用してより高度なタイミングとスケジューリング操作を行う方法を示して締めくくられます。

チャプター

  • [00:00] Raspberry Pi Picoスマートカーコースの紹介
  • [01:31] コース概要とキットの機能
  • [03:33] Pythonの変数とデータ型
  • [07:39] 条件文(If/Else)
  • [09:04] Forループの理解
  • [12:13] Whileループの探索
  • [14:52] 関数の定義と使用
  • [19:15] リストとデータ構造の操作
  • [25:16] MicroPythonでのGPIOピン制御
  • [29:54] 実践例:LEDの点滅
  • [31:15] Enumerateを使用した高度なピン制御
  • [31:24] 時間関数の操作
コードは添付されていません。

リソースと参考文献

まだリソースはありません。

ファイル📁

ファイルは利用できません。