micro:bit / PWM / LED をぼわーんと光らせる / mbed

ここではトランジスターでドライブしているが直接ドライブしてもよい。
f:id:ti-nspire:20180528103801p:plain:h157

#include "MicroBit.h"
MicroBit uBit;

int main(void){
    uBit.init();
    
    int val = 0; // デューティの初期値
    int inc = 1; // デューティの増分 (または減分)

    uBit.io.P0.setAnalogValue(val); // 必ず先にデューティを設定しておく。
    uBit.io.P0.setAnalogPeriodUs(1000);
    
    while(1){
        uBit.io.P0.setAnalogValue(val);
        val += inc;
        // デューティが 0 ~ 1023 の範囲を超えたら増分、減分を反転する。
        if(val < 0 || 1023 < val){inc = -inc;}
        wait_us(500);
    }
        
    release_fiber();
    return 0;
}