学一门新语言时,第一个程序通常是打印一句朴素的 Hello World。对应到树莓派,很多人上手的第一个小项目,就是——点亮一颗小小的 LED 灯,这一篇就从这里开始。

先认识一下 GPIO

在点灯之前,先简单看一眼树莓派上的 GPIO(General-purpose input/output,通用输入/输出) 接口。

以树莓派 3 Model B 为例,它一共有 40 个针脚,大致可以分为几类:

  • 电源针脚:4 个,其中 2 个是 3.3V,2 个是 5V;
  • 接地(GND)针脚:8 个;
  • GPIO 针脚:26 个,可以通过程序控制高低电平(0V 或 3.3V);
  • 保留针脚:还有少数为保留用途。

真正让树莓派“动起来”的,就是这 26 个 GPIO:
你可以让它输出高电平 / 低电平,或者读取外部按键、传感器的状态。点亮一颗 LED,可以看成是和 GPIO “打招呼”的第一步。

提示:树莓派的 GPIO 是 3.3V 逻辑电平,直接接 5V 会有烧板风险,一定要注意电路连接方式。

搭一条简单的点灯电路

先用最经典的方式接一个 LED:

  1. 准备一颗 LED 和一个 220Ω 左右的电阻
  2. 务必让电阻和 LED 串联,电阻的作用是限流,避免电流过大烧坏 GPIO 或 LED;
  3. 将 LED + 电阻一端接到电源,另一端接到某个 GPIO 针脚。

我这里的接法是(更推荐用 3.3V,而不是直接 5V):

  • LED 长脚(正极) + 220Ω 电阻 → 接到 3.3V 电源针脚
  • 电路另一端 → 接到 7 号针脚(BOARD 编号,对应 GPIO 4)

这样一来,当 GPIO 输出低电平时,电流就会从 3.3V → LED + 电阻 → GPIO → 板载地,LED 被点亮;当 GPIO 输出高电平时,LED 熄灭。

这只是最简单的一种接法,用来练手刚刚好。

用 Python 控制 GPIO

在编程这块,树莓派上最常见的选择是 Python。相比 C,Python 的语法更直观,用来写点小脚本非常省心。

会用到一个常见的库:RPi.GPIO,在 Raspbian 系统里,它一般是自带的,如果没有,可以通过下面的命令安装:

sudo apt-get install RPi.GPIO

或者使用 pip

sudo pip install RPi.GPIO

安装完成后,就可以写一个最简单的“闪烁灯”程序了。

Hello LED:让灯闪起来

新建一个名为 LED_blink.py 的文件,写入下面的程序(这里使用的是 Python 2 语法):

import time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)

try:
    while True:
        print "on"
        GPIO.output(7, GPIO.HIGH)
        time.sleep(1)
        print "off"
        GPIO.output(7, GPIO.LOW)
        time.sleep(1)

except KeyboardInterrupt:
    print "\nA keyboard interrupt has been noticed!"

except:
    print "\nAn error or exception has occurred!"

finally:
    GPIO.cleanup()

这段代码做了几件事:

  • GPIO.setmode(GPIO.BOARD): 告诉库我们用的是 物理针脚编号(1–40),而不是 BCM 编号;
  • GPIO.setup(7, GPIO.OUT): 把第 7 号针脚设置为输出模式;
  • while True 循环里,每隔一秒在 高电平 / 低电平 之间切换一次,LED 就会一秒亮、一秒灭;
  • try / except / finally: 用来优雅地处理 Ctrl+C 中断,并在退出时调用 GPIO.cleanup() 释放资源。

如果你使用的是 Python 3,可以把 print "on" 改为 print("on") 这类函数调用,其余逻辑完全一样。

运行你的第一个树莓派“小程序”

确认电路连接无误,终端切换到 LED_blink.py 所在目录,执行:

sudo python LED_blink.py

如果一切顺利,会看到终端里不断打印出 on / off,同时面前那颗小小的 LED,会跟着节奏一闪一灭。

这就是树莓派的第一个“Hello Pi”,之后,可以把更多的传感器、马达、按钮、蜂鸣器都接上来,让这块小板子一步步“活起来”。