micro:bit / PWM / サーボを驅動する / mbed

構文: setServoValue(角度° [, 範囲 μs [, センター μs]])
周期は 20 ms。
角度 0° のときのパルス幅は 500 μs、角度 180° のときのパルス幅は 2500 μs。
範囲のデフォルト値は 2000、センターのデフォルト値は 1500 (MicroBitPin.h に定義してある)。
以上の値はどのサーボでもほぼ共通である。
f:id:ti-nspire:20180528122913p:plain:w300

#include "MicroBit.h"
MicroBit uBit;

int main(void){
    uBit.init();
    int deg = 90; // 角度の初期値
    int inc = 1;  // 角度の増分 (または減分)
    
    while(1){
        uBit.io.P0.setServoValue(deg);
        deg += inc;
        // 角度が 0 ~ 180 の範囲を超えたら増分、減分を反転する。
        if(deg <= 0 || 180 <= deg){inc = -inc;}
        wait_ms(10);
    }

    release_fiber();
    return 0;
}