搜尋程式碼

課程 第2課,共10課:用基礎Python驅動樹莓派Pico 4WD智能車套件

呢一課係……嘅一部分: Raspberry Pi Pico 四驱智能车

課程 第2課,共10課:用基礎Python驅動樹莓派Pico 4WD智能車套件

喺呢個Robojax Raspberry Pi Pico 4WD智能車課程嘅第二課入面,我哋會深入探討基本嘅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語法同邏輯,呢啲對控制你嘅機械人係必不可少。等我哋拆解影片入面涵蓋嘅關鍵概念。程式碼例子係用MicroPython寫嘅,呢個係Python嘅一個版本,專為喺好似Raspberry Pi Pico咁嘅微控制器上運行而設計。

變數同數據類型

變數就好似有標籤嘅盒,你用嚟儲存資訊。喺Python入面,你唔需要宣告變數嘅類型;佢會由你賦予嘅值推斷出嚟。(喺影片03:33)


age = 23  # 呢個係整數
name = "Ahmad"  # 呢個係字串(文字)
pi = 3.14  # 呢個係浮點數(小數)

你可以喺計算入面用呢啲變數,同埋打印佢哋嘅值。例如,要計算一個特定年齡嘅日數,你可以用days = age * 365print()函數用嚟將輸出顯示喺控制台。

條件陳述(If/Else)

條件陳述容許你嘅程式碼做決定。呢個對機械人嚟講好重要,等佢可以對環境作出反應,例如偵測到障礙物就停低。(喺影片07:39)


age = 16
if age >= 17:
    print("你可以揸車")
else:
    print("太後生,唔可以揸車")

if陳述會檢查一個條件。如果條件係True,下面縮排嘅程式碼區塊就會執行。如果係Falseelse陳述下面嘅程式碼就會運行。縮排(行首嘅空格)喺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)同埋回傳一個值。咁樣比起重複寫同樣嘅計算更加有效率。條片仲示範咗一個函數點樣可以呼叫另一個函數,令你可以由簡單、可測試嘅部分砌出複雜嘅操作。

列表(Lists)

列表用嚟儲存一個有順序嘅項目集合。呢個好啱用嚟儲存你機械人嘅一連串指令,好似「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"  # 將第三個項目改做 "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。佢寫咗一個簡單嘅 MicroPython 腳本,用一秒延遲將盞 LED 開同關,直接展示用程式碼控制實體輸出嘅結果。呢個動手例子鞏固咗程式邏輯同現實世界動作之間嘅連繫。課程最後示範點樣用 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] 處理時間函數
请提供需要翻译的文本。

資源與參考資料

暫時冇資源。

文件📁

冇文件可用。