#include "MicroBit.h" MicroBit uBit; //MicroBitPin P0 = uBit.io.pin[0]; MicroBitPin P0 = uBit.io.P0; int main(void){ uBit.init(); // スタートシーケンスを開始する。 P0.setDigitalValue(1);// P0を一旦Hにしてから、 P0.setDigitalValue(0);// P0をLにして、 uBit.sleep(1); // Lの状態を0.8~20ミリ秒間保ってから、 P0.getDigitalValue(); // P0のIOをINに(Hi-Zに)切り替える。バスはプルアップされているのでHになる。 while(P0.getDigitalValue() == 1){} // バスがLになるのを待って、 // スタートビットも含めて全部で41ビットのHパルスの持続時間(ループ回数)を取得する。 int buf[41]; for(int j=0; j<41; j++){ while(P0.getDigitalValue()==0){} // バスがHになるのを待って、 int i; for(i=1; i<256; i++){ if(P0.getDigitalValue()==0){break;} // Hの持続している間のループ回数を数える。 } buf[j] = (i > 11)? 1: 0; // ループ回数から0か1かを判定する。テキストと同じく11を閾値にする。 } for(int j=0;j<41;j++){ printf("%d: %d\n", j, buf[j]); // 確認する。 } }