很早之前,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