pwmとタイマー割込みについての続き
PWMを使ってみた
arduinoのPWMとタイマー割込みの関係がまだよくわかってない。
とりあえず昨日調べたときの疑問点の「タイマーとPWMが同時に使えないのはわかったが、同じタイマーの2つのPWMを同時に使うことは可能か?」というの実験した結果だ「大丈夫」だった。タイマーとPWMの同時利用はできないが、PWMの同時利用はできるという理由はわからないが、やってればそのうちわかるだろう、きっと。
とりあえず「PWMのピンが足りないかもしれない」という問題は解決したので、設計は見直さずarduino megaで行こうと思う(センサーも含めてI2Cで制御した方がよさそうだけど、I2Cよくわかんないからいいや)。
インターフェイスを作るかも検討課題ではあるが、わざわざボタン何個かくらいのコントローラを作るのも面倒だし、PS4のコントローラを付けれるようにするにはUSBシールドが必要でピン配置を考えないといけないし、スマホから操作するやつを使うにはwifiが必要なので、やっぱり面倒だ。 とりあえず開発用のノートを横に置いてシリアル通信で動かそうと思う。後にラズパイとコントローラまたはテンキーに置き換える予定。
MsTimer2を使ってみた。
サンプルスケッチを試してみた
void flash() { static boolean output = HIGH; digitalWrite(LED_BUILTIN, output);//LEDを13から変更 output = !output; } void setup() { pinMode(LED_BUILTIN, OUTPUT); MsTimer2::set(500, flash); // 500msごとにオンオフ MsTimer2::start(); } void loop() { // loopは空 }
loopが空っぽなのにチカチカ繰り返すから不思議だ。割込み処理はメインのプログラムとは別でMsTimer2::start();からMsTimer2::stop();でとめるまで繰り返す。割込みでやらせたい処理はflash()のように関数にしておかないといけない。やった事ないことばっかりだ。