UP board的腳位功能圖,其中Pin欄是板子的實體針腳編號,UP pinout則是UP板子SoC的腳位編號,Linux GPIO是Raspberry Pi板子的SoC腳位編號。底下範例一律使用Pin欄的編號。
$ sudo apt-get update
$ sudo apt-get install python-rpi.gpio
接下來三個範例,閃爍LED,LED明暗度,開關控制LED亮滅。
範例,閃爍LED,讓LED亮一秒、滅一秒,不斷重複。電路圖如下:
import RPi.GPIO as GPIO
import time
LED_PIN = 16
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
try:
while True:
GPIO.output(LED_PIN, GPIO.HIGH)
time.sleep(1)
GPIO.output(LED_PIN, GPIO.LOW)
time.sleep(1)
except:
GPIO.cleanup()
範例,LED明暗度,以軟體PWM控制LED的亮度,LED會從全暗漸漸到全亮,再漸漸回到全暗。電路圖同前。
程式碼:
import RPi.GPIO as GPIO
import time
LED_PIN = 16
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
p = GPIO.PWM(LED_PIN, 50)
p.start(0)
try:
while True:
for dc in range(0, 101, 5):
p.ChangeDutyCycle(dc)
time.sleep(0.1)
for dc in range(100, -1, -5):
p.ChangeDutyCycle(dc)
time.sleep(0.1)
except:
pass
p.stop()
GPIO.cleanup()
範例,開關控制LED亮滅,不按下開關時LED熄滅,按下時才亮起。電路圖如下:
import RPi.GPIO as GPIO
import time
LED_PIN = 16
BUTTON_PIN = 13
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.setup(BUTTON_PIN, GPIO.IN)
try:
while True:
print(GPIO.input(BUTTON_PIN))
if GPIO.input(BUTTON_PIN):
GPIO.output(LED_PIN, GPIO.HIGH)
else:
GPIO.output(LED_PIN, GPIO.LOW)
except:
GPIO.cleanup()
參考資料:
- RPi.GPIO - UpWiki,基本範例。
- Pinout - UpWiki,腳位功能圖。
No comments:
Post a Comment