BPM

Japaninoでシーケンサーを作ってみよう!とか思ってて、とりあえずBPMの速さで4つのLEDを点灯させてみようと。
「arduino bpm」でググッたらTimer1とか出てきますよね。
それ、なんかコールバック関数とか言う初心者には超理解し難い仕組みとゆうか、そういうのなんだそうです...
はい、delayで点灯させましょう。


#define LED0 13
#define LED1 12
#define LED2 11
#define LED3 10

#define bpm 120
int millisec = 60000 / bpm ;

void setup() {
  pinMode (LED0, OUTPUT);
  pinMode (LED1, OUTPUT);
  pinMode (LED2, OUTPUT);
  pinMode (LED3, OUTPUT);
}

void loop() {
  digitalWrite (LED0, HIGH);
  delay (millisec);
  digitalWrite (LED0, LOW);
  digitalWrite (LED1, HIGH);
  delay (millisec);
  digitalWrite (LED1, LOW);
  digitalWrite (LED2, HIGH);
  delay (millisec);
  digitalWrite (LED2, LOW);
  digitalWrite (LED3, HIGH);
  delay (millisec);
  digitalWrite (LED3, LOW);
}


コード垂れ流し万歳。HTMLで出力してくれるArduinoIDE万歳。
とりあえずこれで結構大切な部分であるムービングライトが完成~

4 コメント:

en129 さんのコメント...

PICしかやってない俺参上
delay使うと待ち時間の間処理がなにもできないという罠
たとえばボタン用意してて押したときに変化させようと思ってもdelayの間押しても反応しないのね
そのためにもTIMER1は理解しておくと後々楽だよ
そのうち俺のソースでもブログに晒すかね・・・

Blian さんのコメント...

ボタンが反応しないのは、ちょっと致命的ですね...

>そのためにもTIMER1は理解しておくと後々楽だよ

やっぱりそうですか。。
とっつきにくい...けどむっちゃシーケンサ作りたいw
むむぅ

アドバイスありがとうございます

nameless911 or Ashtray さんのコメント...

ArduinoIDEのSamples見てみ?多分Timer1使ったのがAruduino 。
あとウェブ上の日本語リファレンスもだ

Blian さんのコメント...

んー、Timer1は後から自分で入れるモジュールなんで多分not arduino...

日本語リファレンスには割り込み的なのがありますね~