ブログトップ 記事一覧 ログイン 無料ブログ開設

電子ガジェットいろいろ 開発メモ このページをアンテナに追加 RSSフィード Twitter

主に自分用に色々なアプリ開発のメモや電子工作や色々な開発関連のメモを書いてます。
他にもゲームや便利アプリ等の紹介や、iPhoneOS以外の話題も書いていきたいと思います。


ブログランキング・にほんブログ村へ
にほんブログ村

2016-05-27

ArduinoでFM音源シールド作成2 (YM2151)

ArduinoでFM音源シールド作成 (YM2413)に続き、今度はX68000等に搭載されていたYM2151(OPM)でFM音源シールドを作成しました。

f:id:uosoft:20160527002247j:image:w320

今回はYM2151Shield | Web::ooISHooを参考にさせて頂きました。
回路図はここのサイトにあるYM2151ShieldKitManual-0.1.pdf拝借し、arduinoとYM2151とDACのYM3012の回路はそのままです。

アンプ部は面倒だったので、中国から仕入れたデジタルアンプ基板を使いました。
秋月電子通商にあるPAM8403 D級ステレオアンプモジュールや、AmazonにあるEasyWordMall PAM8403 5V 電力 オーディオ アンプ ボード PAM8403 5V 電力 オーディオ アンプ と同じものと思われます。
この基盤はどうもLRのGNDを別にそれぞれのGNDに接続しなければいけないようです。ミニピンジャックは秋月にある変換基板とのセットを使用しているのですが、この基板はLRのGNDが結線されているので、うまく動作しませんでした。いろいろ試行錯誤した結果、LRどちらかのみGNDに接続するだけで問題なく動作するようになりました。

テストとして、今回はArduino UNOを使用しています。YM2151Shield | Web::ooISHooにあるArduinoFileUploaderでMDXファイルを転送し、MDXプレイヤースケッチを動かしてみました。
最新版のarduinoの開発環境ではコンパイルに失敗するので、Arduino - OldSoftwareReleases から1.0系ダウンロードしてコンパイルしました。

2つのFM音源シールド作成を通して、FM音源の扱い方もわかってきたので、SDカードからMDXを読んで演奏できるプレイヤーもそのうち作ってみたいと思います。

【永久保証付き】Arduino Uno

【永久保証付き】Arduino Uno

2016-04-24

結局HP50gを手に入れました。

HP49g+はかなり古く、価格に釣られてt程度が悪いのを購入したせいか、早くもキーの反応が悪くなったり、液晶にライン欠けが生じるようになってしまいました。
AmazonでHP50gの相場を見ていたところ、1万円前後まで価格が下がってたので、今度は新品で買っちゃいました。

今まではRPN計算専用機になってしまってたのですが、これを機にもっと使ってみようと思い、RPL言語でライブラリを作ることをやってみました。
例としておなじみのBMIの計算をするライブラリを作ってみます。

まず、BMIの計算
f:id:uosoft:20140913225757p:image

これをRPNで計算日本人20代男性の平均身長と平均体重の値で計算すると下のようになります。
f:id:uosoft:20160423232807p:image

身長と体重はパラメータとして渡すとすると、ライブラリ部分は下のように定義します。
f:id:uosoft:20160423232808p:image

ライブラリ変数として名前を付けます。(今回の名前は"BMI")
BMI [STO]

ライブラリを実行するときままずパラメータとなる値をスタックに積んでから実行します。
66
1.71
BMI

これで、22.5710475018という計算結果が得られます。

RPLは見た目とっつきにくい感じですが、実際に触ってみたら単純で分かりやすいものでした。
基本的によく使う計算式を追加していけば良い感じだと思います。

hp 50G F2229AA ABA

hp 50G F2229AA ABA

2016-04-23

JavascriptでRPN(逆ポーランド記法ライブラリ

JavascriptRPN(逆ポーランド記法、以下RPN)のライブラリというか、関数を作りました。
RPNのことはWikipediaを参照してください。
逆ポーランド記法(Wikipedia)




ダウンロード

nrpn.zip 直
解凍したnrpn.jsを組み込んでください

使いかた


ファンクション
  nrpn(rpn)
    パラメータ
      prn  RPN文字列
           数字や記号をスペースで区切った文字列
    戻り値
      計算結果
      文字列が空の場合は、0
      エラーがある場合は、 null


<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="nrpn.js"></script>
</head>
<body>
(1+2)*3→
"1 2 + 3 *"=
<script>document.write(nrpn("1 2 + 3 *"));</script>
<br />
1+2+3+4+5+6+7+8+9+10→
"1 2 3 4 5 6 7 8 9 10 + + + + + + + + +"=
<script>document.write(nrpn("1 2 3 4 5 6 7 8 9 10 + + + + + + + + +"));</script>
<br />
√(2*8)*π→
"2 8 * sqrt pi *"=
<script>document.write(nrpn("2 8 * sqrt pi *"));</script>
<br />
</body>
</html>

実行結果

(1+2)*3→ "1 2 + 3 *"= 9 
1+2+3+4+5+6+7+8+9+10→ "1 2 3 4 5 6 7 8 9 10 + + + + + + + + +"= 55 
√(2*8)*π→ "2 8 * sqrt pi *"= 12.566370614359172 


hp 50G F2229AA ABA

hp 50G F2229AA ABA