GR-CITRUSのドレミファソラシド♪をイヤホンで聞く方法

[カテゴリを変更しました。2017/02/04]
Arduinoで音を鳴らす(聞く)作例を調べたところ、スピーカを(直結で)使うものは簡単に見付かった
のですが、イヤホンを使うものがなかなか見付からなかったのと、見付かったものの電流制限抵抗の
値を変えた方が良さそうな気がしましたので、自分流(つまり間違ってるかも)で考えてみました。





ベースにしたのは、灯台下暗しというか、GR-KURUMI用の松浦光洋様の回路で、以下のURL(がじぇ
るね)にあったものです。これをtone()関数のモノクロ出力がステレオイヤホンで聞こえるようにしました。

KURUMI WAVプレーヤ 回路図

また、松浦様の回路では電流制限抵抗(と呼んで良いのか自信がありません)が470Ωだったのですが、
以下のようにGR-CITRUSのRX631はGR-KURUMIのRL78/G13よりも出力電流の許容値が小さいですので
変更しました。(以下はハードウェアマニュアルからの引用です。)

RX631


RL78/G13




RL78/G13の場合、松浦様の回路で使われているGR-KURUMIのD3とD5(RL78/G13の端子名ではP16とP15)は
最大許容電流が10mAですので電流制限抵抗は3.3V÷10mA=330Ω以上のものを使えば良い(のだと思う)
のですが、GR-CITRUSで今回使うことにしたD0(RX631の端子名ではIO0/P20/MTIOC1A)は最大許容電流が
2mAですので電流制限抵抗は3.3V÷2mA=1.65KΩ以上のものを使う必要があります(と考えています)。
私は手持ちの空いている部品の都合で3.3KΩを使ったのですが、音が小さいということはありませんでした。
ちなみに、GR-CITRUSのD0を使ったのはWebコンパイラのテンプレートにあったMP3 WAV(ROM)で使われて
いたからです。(というかテンプレートが追加されていたことに昨夜気付いたばかりです。)

音を鳴らすサンプルプログラムは赤川シホロ様の以下のウェブページから拝借させて頂きました。
(赤字の箇所を追加/変更しています。)

はじめての電子工作超入門
第19回 Arduinoでパーツやセンサーを使ってみよう~スピーカー編(その1)

#include <Arduino.h>
//***************************************/
// tone関数で音を鳴らすプログラムその1
//***************************************/
#define BEATTIME 200 //音を出している時間(msec)
#define SPEAKER 0 //スピーカーの出力ピン番号
void setup() {
}
void loop() {
tone(SPEAKER,262,BEATTIME) ; // ド
delay(BEATTIME) ;
tone(SPEAKER,294,BEATTIME) ; // レ
delay(BEATTIME) ;
tone(SPEAKER,330,BEATTIME) ; // ミ
delay(BEATTIME) ;
tone(SPEAKER,349,BEATTIME) ; // ファ
delay(BEATTIME) ;
tone(SPEAKER,392,BEATTIME) ; // ソ
delay(BEATTIME) ;
tone(SPEAKER,440,BEATTIME) ; // ラ
delay(BEATTIME) ;
tone(SPEAKER,494,BEATTIME) ; // シ
delay(BEATTIME) ;
tone(SPEAKER,523,BEATTIME) ; // ド
delay(BEATTIME) ;
}

音を鳴らすというよりは音楽を再生するという場合には、山崎信英様の以下のウェブページのように
ローパスフィルタを構成すると良いようなのですが、部品点数が増えるのと、そもそも私には設計変更
能力がありません、、、

音声合成LSIでイヤホンを鳴らすときの回路(アンプ不要)

  • すっごい細かい事を言うと、スピーカーなりイヤホンなりは直流を嫌うので、コンデンサを1こ直列に挟んでDCカットした方がいいですよー。値は、小さすぎると低音が逃げるのでそこそこ大きい方がいいです。HPFの設計とか乗数計算とかググると自動計算してくれるページもありますので楽しんで下さい^^

    PWM出力を直ドライブするなら確かにLPF組んで折り返し消したほうが良いかもですが、ひと思いにヘッドホンアンプ組んでみるのも面白いと思いますよ。秋月さんのキットでも良いし、バラでオペアンプとかで組んでもいいかと。新日本無線のオペアンプなんかは直接ドライブしても元気な音が鳴ったりしてオススメです。全部SOP部品で組むなら、CITRUSのマイコンの上のスペースだけでも組めますよ(たぶん)。

  • コメント有難う御座います。実は、音が鳴るのは聞いてみたいが、金も手間も掛けたくない、という邪な思いが

    根底にあって、『すっごい細かい事』で『コンデンサ』で『DCカットした方がいい』ということは、無知ゆえの

    天邪鬼な捉え方かも知れませんが、常用しなければ無くても概ね大丈夫そうなので一安心かも、とも思いました。

    (後になってArduinoのtone関数のサンプルを見てみたところ、スピーカ直結で試すような文言になってました。)

    実は、音楽やオーディオは趣味という訳ではありませんで、ローパスフィルタの設計やアンプの自作には(今のところ)

    進みそうにないですが、以前に富田勲さんのシンセサイザミュージックに心惹かれていた時期もありましたので、

    GR-CITRUSでtone出力の合成で和音を鳴らすには?とか、赤川シホロ様のブログの第19回のDDS正弦波ジェネレータとか

    第20回のMozziとかGR-CITRUSでどうすれば出来るかな?とか、そちらが気になりました。(もっとも、今のところ、

    何か始めるほどにはテンションが高くないのですが、何かの拍子にヒートアップするかも知れません、、、)

  • > 常用しなければ無くても概ね大丈夫そうなので一安心かも

    それでいいと思います。Arduinoは手軽に楽しく、多少ぶっ壊れてもキニシナイ!で突き進む楽しさがあると思ってます。でも高価なイヤホンつっこんで燃やしちゃったらアレかなーって事で。

    tone関数の仕様は存じませんが、ちょい前にGR-ADZUKIで和音を鳴らすコードは書きましたよ。ちょっと楽しかった。