發光二極體

發光二極體(英語:Light-emitting diode,縮寫:LED)是一種能發光的半導體電子元件,透過三價與五價元素所組成的複合光源。此種電子元件早在1962年出現,早期只能夠發出低光度的紅光,被惠普買下專利後當作指示燈利用。及後發展出其他單色光的版本,時至今日,能夠發出的光已經遍及可見光、紅外線及紫外線,光度亦提高到相當高的程度。用途由初時的指示燈及顯示板等;隨著白光發光二極體的出現,近年逐漸發展至被普遍用作照明用途。發光二極體只能夠往一個方向導通(通電),叫作順向偏壓,當電流流過時,電子與電洞在其內重合而發出單色光,這叫電致發光效應,而光線的波長、顏色跟其所採用的半導體物料種類與故意摻入的元素雜質有關。具有效率高、壽命長、不易破損、反應速度快、可靠性高等傳統光源不及的優點。白光LED的發光效率近年有所進步;每千流明成本,也因為大量的資金投入使價格下降,但成本仍遠高於其他的傳統照明。雖然如此,近年仍然越來越多被用在照明用途上。

實驗材料

  1. 樹莓派主機(2或3代B+)
  2. 麵包板 + T型GPIO擴展板(T-Cobbler)
  3. 杜邦線 x 2條
  4. 發光二極體(LED) x 1
  5. 電阻 220 ohm x 1

接線指南

  1. GND(接地)
  2. GPIO18

使用 Python 測試 GPIO

依序輸入以下 python 指令:

$ python

>>> import RPi.GPIO

>>> GPIO.setmode(GPIO.BCM)

>>> GPIO.setup(18, GPIO.OUT)

>>> GPIO.output(18, GPIO.HIGH)

>>> GPIO.output(18, GPIO.LOW)

>>> GPIO.cleanup()

>>> exit()

這些指令會讓 LED 燈亮:

>>> GPIO.output(18, GPIO.HIGH)

>>> GPIO.output(18, True)

>>> GPIO.output(18, 1)

而這些指令會讓 LED 燈熄滅:

>>> GPIO.output(18, GPIO.LOW)

>>> GPIO.output(18, False)

>>> GPIO.output(18, 0)

新增一個 lab101.py 檔案,讓我們開始撰寫 Python 程式吧!

實作練習:控制 LED 閃爍

Python 程式檔名:lab101.py

#!/usr/bin/python

import RPi.GPIO as GPIO
import time

GPIO.setmode (GPIO.BCM)
GPIO.setup(18, GPIO.OUT)

for i in range(1, 10):
    GPIO.output(18, i % 2)
    time.sleep(0.1)

GPIO.cleanup()

實作練習:SOS 求救信號

Python 程式檔名:lab102.py

#!/usr/bin/python

import RPi.GPIO as GPIO
import time

GPIO.setmode (GPIO.BCM)
GPIO.setup(18, GPIO.OUT)

while True:
    for i in range(0, 3):
        GPIO.output(18, GPIO.HIGH)
        time.sleep(0.3)
        GPIO.output(18, GPIO.LOW)
        time.sleep(0.3)
    for i in range(0, 3):
        GPIO.output(18, GPIO.HIGH)
        time.sleep(0.8)
        GPIO.output(18, GPIO.LOW)
        time.sleep(0.3)
    for i in range(0, 3):
        GPIO.output(18, GPIO.HIGH)
        time.sleep(0.3)
        GPIO.output(18, GPIO.LOW)
        time.sleep(0.3)

GPIO.cleanup()

實作練習:呼吸燈

Python 程式檔名:lab103.py

#!/usr/bin/python

import RPi.GPIO as GPIO
import time

GPIO.setmode (GPIO.BCM)
GPIO.setup(18, GPIO.OUT)

led = GPIO.PWM(18, 100)
led.start(100)

while True:
    for i in range(0, 101):
        led.ChangeDutyCycle(i)
        time.sleep(.02)
    for i in range(0, 101):
        led.ChangeDutyCycle(100 - i)
        time.sleep(.02)

GPIO.cleanup()

results matching ""

    No results matching ""