深色模式
第 7 章:machine 库速览——硬件代码字典
本章能看懂什么
Pin:控制引脚通断电 / 读取引脚状态PWM:控制亮度、速度ADC:读取传感器数值time.sleep():让程序等待
machine 是 MicroPython 控制硬件的核心库。Mind+ 生成的硬件代码,几乎都来自这一章的四个工具。 不用背,遇到看不懂的代码回来查就行。
Pin:数字输出(控制通断电)
积木"LED 输出 高电平"对应的代码:
python
from machine import Pin # 从 machine 工具箱里拿出 Pin 工具
import time # 拿出 time(时间)工具
led = Pin(0, Pin.OUT) # 告诉 Pico:我要用 GP0 引脚,它是"输出"模式
# (注意:0 是 GP 编号,不是物理针脚号)
led.value(1) # 输出高电平 → 通电 → LED 亮
time.sleep(1) # 等 1 秒
led.value(0) # 输出低电平 → 断电 → LED 灭
led.toggle() # 反转:亮变灭、灭变亮在 Mind+ 实际生成的代码里,引脚变量名常写成
pin_25这种样式,数值还可能是HIGH/LOW——意思和1/0完全一样。
Pin:数字输入(读取传感器)
读取一个引脚有没有电(比如循迹探头):
python
from machine import Pin
sensor = Pin(10, Pin.IN) # GP10 设为"输入"模式(只听不说)
state = sensor.value() # 读到 1(有电)或 0(没电)
print(state) # 把读数显示出来PWM:控制亮度和速度
第一册讲过:PWM 通过调节"通电时间占比"(占空比)来控制亮度/速度。代码里这样写:
python
from machine import Pin, PWM
pwm = PWM(Pin(0)) # 在 GP0 上开启 PWM
pwm.freq(1000) # 频率 1000Hz:每秒闪 1000 次,人眼看不出闪
pwm.duty_u16(32768) # 占空比 50%(范围 0~65535)duty_u16 用 0~65535 表示灭到最亮:0 全灭,65535 最亮,32768 半亮。
第一册 Mind+ 积木里 PWM 值是 0~255,换算关系:
duty_u16 = 积木里的值 × 257。
ADC:读取连续变化的数值
有些传感器(如火焰传感器的 A 口)输出的不是"有电/没电",而是连续变化的电压。ADC 把电压变成数字:
python
from machine import ADC, Pin
adc = ADC(Pin(26)) # GP26 是 ADC0(只有 GP26~GP28 能读模拟量)
value = adc.read_u16() # 读数 0~65535,对应 0~3.3V 电压
print(value)time.sleep():让程序等一等
python
import time
time.sleep(1) # 等 1 秒
time.sleep_ms(500) # 等 500 毫秒(0.5 秒)
time.sleep_us(10) # 等 10 微秒(超声波测距触发要用)常见坑
- 引脚号一律用 GP 编号:
Pin(0)是 GP0,不是物理针脚 1 Pin.OUT的引脚不要去读,Pin.IN的引脚不要去写duty_u16最大值是 65535,不是 255 也不是 100
想一想
Pin、PWM、ADC分别对应传感器的哪类信号?(控制通断 / 控制强弱 / 读取数值)💡 查看答案
Pin:控制通断(输出高/低电平,比如开灯关灯),也能读取"通/断"类的数字信号(比如循迹探头)PWM:控制强弱(亮度、转速、舵机角度)ADC:读取连续变化的数值(比如火焰传感器的模拟电压)
看到
pwm.duty_u16(16384),这盏灯大概是多亮?(提示:16384 大约是 65535 的几分之几?)💡 查看答案
16384 大约是 65535 的 1/4,所以这盏灯大约是 25% 的亮度——明显偏暗,但能看见亮。
