音階に合わせてLEDを光らせてみた。
お疲れ様です。高橋です。
主旋律に合わせてLEDを光らせてみる実験を行いました。
今回初めてパソコンの部屋からの録画ではなく、Arduino2号(びんぼうでいいの)に9V電池をDCから供給して持ち運び可能な状態にし、別な部屋で録画してみました。奥さんが、なんかわからない特攻隊のドラマ?を見ていてとても音を鳴らせる状況に無いことと、LEDの光を解りやすく出すには暗い所に行く必要があったからです。色々持ち運べるArduino、便利ですね。
複数のLEDを使うための準備
通常複数のLEDを別々に制御するには、入力側のピンをLED1本につき1本消費し、GNDは共通、というのが一般的かと思いますが、Arduinoが自由に使えるピンの数には限りがあります。ましてやYMZ294やI2C LCD等を一緒に動かしつつとなると、より少なくなってしまいます。
74HC595
そこで74HC595という、シフトレジスタというICを使います。これを使えば、少ないピンで多くのLED等を制御する事が出来ます。下ではLEDを16個挿していますが、ド~シまでの12個しか使っていません。
1つのICは8個のI/Oを制御出来ますが、それを数珠つなぎにする事で、8個ずつ制御出来るLEDが増えていきます。秋月での74HC595のお値段はひとつ40円です。結構人気商品ぽく、しばしば売り切れている時があります。
YMZ294は3和音出せるので、各チャンネル毎にピカピカ光れば面白いかもしれません。色も赤色LED、緑色LED、青色LEDと変えたりして。そのためには74HC595がチャンネル毎に2個ずつ必要になるのでしょうか。
久しぶりにブレッドボード上に部品を組んでみましたが、連なる抵抗を見て、伏見稲荷大社のどこまでも続く鳥居を想起してしまいました。
今回とても参考になったのが「少ない出力ピンで、大量のLEDを制御する(シフトレジスタ使用)」さんのサイトです。
回路図は上記参考サイトをそのまま利用します。
今回の動画で使ったスケッチはこちらです。gramorning_with_i2clcd_74hc595.zip
playSong()の中で実際の演奏がなされますが、そこでコールするset_chの中で
if(ch == CH_A && note != 0) {
int intNote = note % 12;
int intLED = 15 - intNote;
digitalWrite(LATCHPIN, LOW);
MyShiftOut( DATAPIN, CLOCKPIN, 16, 1L << intLED );
digitalWrite(LATCHPIN, HIGH);
}
と、チャンネルAで、かつ、完全無音以外だったら、12で割った余りをLEDの0番目~11番目に割り当てて表示しなさいよ、という箇所。これが音階LEDの表現になっています。
以上、よろしくお願い致します。
関連記事
-
-
音階LED実装 #3 – 秋葉原で買い物
お疲れ様です。高橋です。 先日、お小遣いがチャージされまして、音階LED実装に必 …
-
-
音階LED実装 #2
お疲れ様です。高橋です。 本日も昨日に引き続き半田付け。 今日の進捗 昨日の残り …
-
-
秋月製ESP-WROOM-02が動いた
お疲れ様です。高橋です。 秋月で買ったESP-WROOM-02が動きました。AT …
-
-
ArduinoでPSG音源(YAMAHA YMZ294)を鳴らしてみた。
お疲れ様です。高橋です。 先日秋葉原にて「Arduino」という物を買ってきまし …
-
-
グラディウス2の3面 古代惑星のテーマをArduino+YMZ294で鳴らしてみた。
お疲れ様です。高橋です。 グラディウス2の3面、古代惑星のテーマをArduino …
-
-
上司離着席検知システムの作り方
お疲れ様です。高橋です。 上司離着席検知システムの作り方は下記の通りです。 必要 …
-
-
LPC810をSCC/PSGにする
お疲れ様です。高橋です。 出会い ImpactDrillさんのサイトの「LPC8 …
-
-
aitendoのArduino用生シールド基板を1枚120円で買った。
お疲れ様です。高橋です。 今日もaitendoに行ってきたのですが、120円のシ …
-
-
音階LED表示器の実体配線図を書いてみた。
お疲れ様です。高橋です。 前に「音階に合わせてLEDを光らせてみた。」で実験した …
-
-
FM音源YM2203をArduinoで鳴らしたい #3
お疲れさまです。高橋です。 昨年8月にブレッドボード上で動作したFM音源YM22 …


