# 樹莓派如何通過RPIO實現按鈕控制LED
## 一、前言
樹莓派作為一款流行的微型計算機,廣泛應用于物聯網、嵌入式開發等領域。通過GPIO(通用輸入輸出)接口,我們可以輕松實現硬件交互功能。本文將詳細介紹如何使用RPIO庫(Python GPIO庫)實現按鈕控制LED的基礎項目。
---
## 二、準備工作
### 硬件清單
1. 樹莓派主板(任何型號均可)
2. LED燈(建議加裝220Ω電阻)
3. 輕觸按鈕/開關
4. 面包板及杜邦線若干
5. 10kΩ電阻(用于按鈕下拉)
### 軟件環境
1. 已安裝Raspberry Pi OS
2. Python 3.x環境
3. RPIO庫(通過`pip install RPIO`安裝)
> ?? 注意:新版樹莓派推薦使用`gpiozero`或`RPi.GPIO`,但RPIO仍兼容舊項目
---
## 三、電路連接
### 接線示意圖
```plaintext
LED正極 → GPIO17 (Pin11)
LED負極 → GND (Pin9)
按鈕一腳 → GPIO27 (Pin13)
按鈕另一腳 → 3.3V (Pin1)
└─ 10kΩ電阻 → GND (下拉電阻)
import RPIO
from time import sleep
# 設置引腳
LED_PIN = 17
BUTTON_PIN = 27
# 初始化
RPIO.setup(LED_PIN, RPIO.OUT)
RPIO.setup(BUTTON_PIN, RPIO.IN, pull_up_down=RPIO.PUD_DOWN)
try:
while True:
if RPIO.input(BUTTON_PIN):
RPIO.output(LED_PIN, True)
print("LED ON")
else:
RPIO.output(LED_PIN, False)
sleep(0.1)
except KeyboardInterrupt:
RPIO.cleanup()
import RPIO
def button_callback(channel):
RPIO.output(LED_PIN, not RPIO.input(LED_PIN))
print(f"LED狀態: {'ON' if RPIO.input(LED_PIN) else 'OFF'}")
# 設置中斷檢測
RPIO.add_interrupt_callback(
BUTTON_PIN,
button_callback,
edge='rising',
debounce_timeout_ms=200
)
RPIO.wait_for_interrupts()
RPIO.OUT
:輸出模式RPIO.IN
:輸入模式
RPIO.PUD_UP # 上拉
RPIO.PUD_DOWN # 下拉
RPIO提供硬件級中斷支持:
RPIO.add_interrupt_callback(pin, callback, edge='rising')
支持三種觸發方式:
- rising
:上升沿
- falling
:下降沿
- both
:雙邊沿
需要將用戶加入gpio組:
sudo usermod -aG gpio $USER
通過列表管理多個LED:
led_pins = [17, 18, 19]
for pin in led_pins:
RPIO.setup(pin, RPIO.OUT)
press_start = 0
def callback(channel):
global press_start
if RPIO.input(BUTTON_PIN):
press_start = time.time()
else:
duration = time.time() - press_start
if duration > 1: print("長按")
else: print("短按")
通過本項目我們掌握了: 1. RPIO庫的基本使用方法 2. 按鈕輸入檢測的實現 3. LED輸出的控制 4. 硬件消抖與中斷處理
這為更復雜的物聯網項目奠定了基礎,后續可以嘗試: - 結合PWM實現亮度調節 - 增加網絡控制功能 - 開發多設備聯動系統
完整代碼倉庫:GitHub示例鏈接 “`
(全文約980字,可根據需要增減內容)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。