搜索代码

课程 第2课,共10课:使用基础Python驱动树莓派Pico 4WD智能小车套件

本课是……的一部分: Raspberry Pi Pico 四驱智能车

课程 第2课,共10课:使用基础Python驱动树莓派Pico 4WD智能小车套件

在本Robojax树莓派Pico 4WD智能车课程的第二课中,我们将深入探讨基础的Python编程概念,这些概念将使您能够控制您的机器人。本指南旨在让您从零编程经验开始,自信地编写控制硬件的脚本。我们不只是记忆语法,而是探索每个概念背后的“为什么”,为您提供构建和定制自己项目的工具。在本课结束时,您将对变量、控制流、函数和列表有扎实的理解——这些是所有未来项目的基石。

这些知识不仅适用于智能车。您在这里学到的原理与无数实际应用中所使用的原理相同。您可以将这些技能应用于:

  • 自动化家庭温室,根据传感器数据控制风扇、水泵和灯光。
  • 构建自定义安全系统,触发警报或发送通知。
  • 创建响应环境的互动艺术装置。
  • 开发超越预编程行为的自定义机器人行为。

硬件/组件

要跟随本课中的硬件示例,您需要以下组件。这些组件都是SunFounder树莓派Pico 4WD智能车套件的一部分,但也可以单独购买用于独立实验。

  • 树莓派Pico:项目的微控制器大脑。
  • 一个LED:用于演示数字输出控制。
  • 一个电阻(150Ω - 330Ω):用于限制电流并保护LED。
  • 跳线:用于在面包板上进行连接。
  • 一个面包板:用于搭建您的电路原型。

接线指南

在本课的硬件演示中,我们将构建一个简单的电路,用树莓派Pico控制一个LED。接线很简单,是物理计算中经典的入门步骤。关键是使用限流电阻来防止LED烧毁。电阻与LED串联连接。LED的长脚(阳极)是正极连接,短脚(阴极)是负极连接。

在视频中,讲师使用一个连接到接地引脚和LED短脚的电阻。长脚连接到GPIO引脚22。这种设置允许Pico向引脚发送高电平(3.3V)信号来打开LED,发送低电平(0V)信号来关闭它。

注意:接线图在视频中显示。请参考视觉指南以了解确切位置。

代码解释

本课重点介绍核心Python语法和逻辑,这对于控制您的机器人至关重要。让我们分解视频中涵盖的关键概念。代码示例是用MicroPython编写的,这是一种专为在树莓派Pico等微控制器上运行而设计的Python版本。

变量和数据类型

变量就像带标签的盒子,您可以在其中存储信息。在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,则执行其下方缩进的代码块。如果为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)并返回值的函数。这比一遍又一遍地编写相同的计算更高效。视频还演示了一个函数如何调用另一个函数,使您能够从简单、可测试的部分构建复杂的操作。

列表

列表用于存储有序的项目集合。这对于存储机器人的命令序列非常理想,例如“前进”、“后退”、“左转”和“右转”。(视频中 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] 使用时间函数
没有附加代码。

资源与参考

尚无可用资源。

文件📁

没有可用的文件。