在 PYB Nano 上用LED測光強

很早之前,TI在推廣MSP430時作個一個demo,用普通LED測環境光強,下面咱們在PYB Nano上也來實驗一下。python

使用LED測光強的原理是LED其實也是二極管,它的PN結的結電容會受光強影響,放電或充電速度與光強存在必定的對應關係。先給LED充電/放電,延時幾個毫秒後測量LED上的電壓,在不一樣光強下電壓會有明顯變化。測試

實現這個功能,須要LED的控制GPIO帶有ADC的功能。在PYB Nano上,LED使用了PA0-PA3,它們都支持ADC,均可以進行測試。下面的程序演示了這個功能,輸入程序後,使用test('A0')測試第一個LED,test('A1')測試第二個。code

from pyb import Pin, ADC

def test(pin='A0', count=100):
    pn = Pin(pin, Pin.OUT)
    for i in range(count):
        tmp = 0
        pn(1)

        pn = Pin(pin, Pin.IN, pull=Pin.PULL_NONE)
        pyb.delay(1)

        adc = ADC(Pin(pin))
        for n1 in range(8):
            tmp += adc.read()
        print(tmp)

        pn = Pin(pin, Pin.OUT)
        pn(0)
        pyb.delay(500)

 

分別測試4個LED,紅色的LED效果最差,變化很小,而其它幾個LED變化很顯著,這說明運行效果與LED有很大關係。雖然不能用於精確測量光強,可是在作指示燈的同時,測量簡單的環境光強仍是能夠的,好比用於調節LCD背光、改變LED亮度等。class

下面是LED2/LED3(綠色和黃色)的效果:test

相關文章
相關標籤/搜索