最終目的は音を扱うことにあるので、そのために必要そうな技術を試してゆきます。
それとは別にi2cも使えた方がよさそうなので、今回はインターバル割り込みとi2c
楽をしたかったので今回はSTM32nucleoF303を使ってます。
TIのPCF8574というI2C IO Expanderを使ってバイナリカウンター表示します。(要するに手抜き)
/* * Hardware * I2C -> PCF8574 -> LED -> R -> VCC * (Anode common) */ #include "mbed.h" DigitalOut myled(LED1); //for Interval Ticker tick; //Set I2C pins I2C i2c(PB_7,PB_6); char data[1]; char flasher; //Interval function call void sync(){ i2c.write(0x20<<1,data,1,false); flasher ++; data[0] = 0xff^flasher; } int main() { tick.attach_us(&sync, 100000 ); //set Interval 100ms while(1) { myled = !myled; // blink wait(0.3); } }
大したことはしていないのだけど、Arduinoの感覚でやるとハマります。
特にI2Cの扱い方はArduinoの方が特殊なので、まっとうな扱い方のmbedをArduino感覚で扱うと全くi2cデバイスが反応しません。
インターバルはインスタンスを複数つくって複数使うことが出来るようです。
とりあえずはこんなところ。