冬營營招生中

2019年7月27日 星期六

[python] microit控制RGB LED -七彩霓虹燈


原理說明:


RGB LED 和一般單色LED控制原理相同, 只不過現在有RGB三根腳。為了做出七彩霓虹燈的感覺, 我們可以利用PWM作為輸入, 透過duty cycle的設定,使得R、G、B分別有不同的的程度, 例如,紅可以有256 階紅的程度。



======================

PWM
PWM (Pulse Width Modulation) , 此硬體micro:bit 己內建, 它可以重覆產生週期性的波形, 在每一個週期中可以有著不冋的pulse長度, 而pulse長度和週期的比例就是duty cycle, 例如25% duty cycle, 就是pulse 長度佔了週期25%的時間. 或者說pulse佔了25%而spaces佔了75%。




1.) PWM頻率?
使用PWM會須要設定頻率, 而頻率為週期的倒數,表示數一下(clock tick)的時間.若PWM為10HZ,表示數一個tick要花0.1秒.

2.) 10 bit bit 或12bit PWM ?  
PWM 10bit表示會數1024下作為一個pulse/space週期, 12bitbit表示會數4096下為一個週期(0~4095). 一個10Hz的PWM pulse/space週期時間,就是看你數完一輪的時間, 若是12bit, 就是4096*0.1=409.6秒

3.) duty cycle ?
就是pulse要數幾下,以12bit為例, 若數1024下, 就是佔了4096的四分之一, 也就是duty cycle 25%. 至於duty cycle實際有多久, 就是數一次(clock ticks)的時間乘上pulse數幾下(pulse count)


總結, 同樣都是duty cycle 25%,但pulse時間長度可能是不同的, 因為PWM頻率是不同的.
duty cycle只是描述比例關係, 仍必須對不同硬體給定其所需要的頻率. 因為pulse和space切換時間若太短,有些硬體可能無法工作,因為來不及到High就又被切到Low....

那RGB LED該給的PWM頻率是多少呢? 100HZ~200HZ, 這可以讓RGB LED在不同duty cycle 下可以產生不同的顏色



開發工具:



實驗材料:

  1. micro:bit 
  2. Thunder:bit
  3. microUSB線

成果展示:




https://www.youtube.com/watch?v=oaWK9EmfhPo

範例程式:

沒有留言:

張貼留言