デジタル鉄道模型フォーラムDCC・メルクリン等のデジタル鉄道模型の話題でコミュニケーションできる場です。登録・利用は無料です。
デスクトップステーション(DesktopStation)のページはこちら
・無料の日本型超高品質DCCサウンドデータをWebで配布中!
・鉄道模型をスマホで簡単制御!国産で革新的なコマンドステーション DSair2はこちらから。

2019年02月12日

DSbasic over DSair2 その5

まだまだ続く、DSbasic。私が最初にPCで遊んだ言語なので、DCCと相性がなかなかよろしいということで、ハマってしまった以上、離れられません。

DSbasic_12.png

今日の最新版は、ファームウェアページに掲載済みです(TEST11)。

■変更点

・初期メッセージを出すようにした(何も保存されていない場合のみ)
・MP3サウンド再生リストから、SDカード上のBASファイル(BASICのプログラムをテキストファイルで書き出して、拡張子をBASにしたもの)を読み出せるようにした。

--------------------------------------------

2番目の、BASファイルをリストからロードできるようにしたのが、大きなポイントです。以下のように、MP3ファイルのリストにBASファイルも表示できるようにしました。

DSbasic_10.png

選択すると、Openするかどうか聞いてきます。

DSbasic_11.png

オープンすると選択すると、BASICの画面に自動的に反映されます。フロッピーディスクボタン(古いですね・・・)を押すと、スマホのメモリに保存されて、次に再表示(再読み出し)したときは自動的に、復帰します。

保存については、SDカードに保存か、スマホのメモリに保存か、選択できるように次のバージョンでしたいと思います。
posted by yaasan at 21:48 | Comment(1) | 鉄道模型

2019年02月11日

DSbasic over DSair2 その4

脱線しますが、最近は、BASICも一部で流行ってます。電波新聞社の電子工作マガジンを見るとよく分かると思いますが、Arduino対抗のIchigoJamや、ニンテンドーDS等で動かせるゲーム機向けのSMILE BASICなど、復刻しているところもあります。ラズパイ3で動かせるPi STARTERというBASICもあります。

なんでBASICを取り入れたかと言えば、多くの人に愛されたプログラミング言語だから、と言うのが理由です。私も、プロとして(組み込み)ソフト開発にずっと携わってますが、BASICを仕事に使ったことなど1度もありません。逆に言えば、仕事向けのプログラミング言語(C言語)を、サクッと動かすためのお遊びで使うには、なかなか面倒くさい点も多いです。BASICは、老若男女問わず、サクッといじるには、非常にやりやすいです。デジタル鉄道模型も、サクッとBASICで動かせたら、絶対楽しい!と思った次第です。

たとえば、アドレス3のロコを動かそうとするときは・・・。

spd 3,100 'アドレス3を速度100(1023がMAX)で走行
sleep 1000 '1秒待つ
spd 3,0 'アドレス3を停止

と言う具合に、サクッとプログラミングで書けば、その通りに動きます。これは非常に楽と思います。C言語で書こうと思うと、セミコロン付けないといけないとか、文法的な面倒なルールが多くて、プログラミングに慣れない人は、投げ出すことも多いでしょう。そこが大きな差です。

さて、DSair2のBASIC機能を実装しています。とりあえず、S88の部分はまた後でと言うことで、時間制御で自動運転ソフトを書いてみました。

PCで動かしてますが(ブログやwikiにコピペするのに便利なので)、ブラウザ上で動かしてますので、当然ながらスマホやタブレットでも全く同じく動かせます。USBキーボードをつければ、問題無くプログラムを記述できますし、ソフトキーボードで頑張ってもいいと思います。

DSbasic_5_shuttle2.jpg

操作画面(Chromeの画面):

DSbasic_5_shuttle1.png

動かしているビデオ:


BASICプログラムは以下です。このプログラムは、スマホ上でも問題無く動作します。問題があるのは、スマホ上で、このBASICプログラムをどのようにコピペするかです。ベーマガよろしく、がんばってソフトキーボードで書き写すのも手ですが、BASファイルからのロードなどができないか、UIの設計面で考え中です。

-------------------
screen(7)
print "Start BASIC Shuttle Control"
pwr 1
print "Power on"
fnc 69,0,1
fnc 69,1,1
print "F0,F1 on"

dir 69,1
fnx 69,2

print "Go FWD!"
spd 69,0
sleep 6000
spd 69,100
sleep 8000
print "Run 200/1023"
spd 69,200
sleep 5000
spd 69,100
sleep 5000
spd 69,0
sleep 3000
print "Stop"

dir 69,2
fnx 69,2

print "Go REV!"
spd 69,0
sleep 6000
spd 69,100
sleep 8000
print "Run 200/1023"
spd 69,200
sleep 5000
spd 69,100
sleep 5000
spd 69,0
sleep 3000
print "STOP! Finish!"
-------------------

残りのTodoはまだまだあります・・・。

・BASファイルのロード(SDカードから) →MP3リストからロードする案が有力。
・BASファイルの保存(SDカードへ)
・S88のセンサ状態取得処理(共有メモリへの配置が未)
posted by yaasan at 16:43 | Comment(4) | 鉄道模型

DSair2の動作報告フォームを開設

DSair2は、メーカーサポートが打ち切られてしまった、古すぎるスマートデバイスでは、正常に動かないケースが多いです。

ただし、古くても意外と動いてしまうケース(Google/LGのNexus5, 2013年発売)もあり、こちらとしても情報収集の必要性が高まってきたと感じております。

そこで、DSair Webアプリ動作確認済機種のページを開設しました。ページ内に、収集フォームのリンクも貼っておりますので、皆様の協力、よろしくお願いします。

動かないモノの代表例としては、iPhoneの古いものや、iPad1やiPad2など(非iPad Airのもの, iOS9, Safari9)では、Safariのアップデートが終了してしまっており、DSairのWebアプリが正常に動きません。

なお、Android系のデバイスは、比較的アップデートが継続されており、iOS系と比較してトラブルは少ないように感じます。

なお、1万円程度の爆安Androidタブレットでも、一部のメーカー(RKチップを使ったものは性能が低い場合が多いので要注意)を除き、最近の機種は2010年初頭の当時と比較すると非常に高性能ですので、乗り換えもご検討下さい。ご了承の程、よろしくお願いします。
posted by yaasan at 12:50 | Comment(0) | 鉄道模型

2019年02月10日

DSbasic over DSair2 その3

DSbasicに、ひたすらハマっております。スマホで、自動運転や運転支援機能をBASICで全部実装できるものになるので(私のソフトの実装の手間も省けて一石二鳥!)、がんばって3連休も休み無しでがんばっております。

今日は、以下の機能を実装しました。

・getacc関数を追加。どのポイントが切り替わっているか、アドレスを指定すると教えてくれる関数。
・BASIC関連ボタンをアイコンに変更。位置もTVの下でAlignを真ん中に合わせるように調整
・BASIC画面では、USBスロットル向けのキーボード入力機能を無効化
・自動繰り返し実行ボタン(機能)を追加。

DSbasic_4.png

スケッチ&Webappは以下です。

DSairFirmware_r2j_TEST9.zip

■自動繰り返し実行ボタンの使い方

繰り返し、BASICプログラムを実行します。if文で、条件が合ったとき、DCCのポイントを動かしたり、ファンクションを動かしたり出来ます。BASIC内で、FOR文やWHILE文でやってもいいのですが、繰り返し自動実行する方が実装はしやすいケースも多いです。

ただし変数は全部初期化されてしまうので、static的に使う方法があるのかは今後調べます。wwwbasicは、結構変わった実装(BASICをJavaScriptに変換して実行する何とランタイム変換方式)でして、細かいところがまだ把握できてません。

■getacc関数

引数は、ポイントのアドレス(DCCの場合は1-2044)を指定すると、0か1を返します。0=分岐(div,赤)、1=直進(str,緑)です。
つまり、現状のポイント状態を見て、切り替えるような機能をBASICで実装し、上記の自動繰り返し実行ボタンを有効にすれば、運転しながら、BASICで作ったソフトが状況を見ながら、支援してくれる、ポイント操作をフォローしてくれる、といったことができます。

使い方は、以下の通りです。

・If文と使う
if getacc(1)=1 then
〜やりたい処理〜
end if

・変数に値を入れる
point1=getacc(1)

■残りtodo

・S88状態取得関数の追加
・連続動作すると重くなる?現象の分析と対策
・サンプルの増強
・BASICの記載方法例の拡充
posted by yaasan at 19:58 | Comment(0) | 鉄道模型

kumaさんのC11へのデコーダ組み込みレビュー

先月のRMMにDCCデコーダ搭載記事を執筆されたkumaさんが、天賞堂のプラC11にLokSound microサウンドデコーダを組み込んだ例をまとめられています。

天賞堂のC11をDCCサウンド化する! (kumaさん執筆)

KATOやTOMIXと違って、アメリカ・バックマン製造ということもあってか、きちんと隠せるようにコネクタが搭載されているとは言え、ディテールを維持することは非常に大変な作業です。さらに大容量コンデンサを装着するなどデジタル鉄道模型としての実用性もきちんと兼ね備えた上での搭載の手法を、惜しげも無く公開されることに、心から尊敬します。本当に素晴らしいテクニックの数々です。

なお、オープンサウンドデータで、C11向けの超高品質サウンドが無償で公開されています!LokProgrammerがあれば、簡単に書き込みして、日本型蒸気機関車のサウンドを楽しめるのです。

こんなに素晴らしいディテールと、そして高品質な蒸気サウンド、もうDCCやってて良かった!と思わざるを得ません。
posted by yaasan at 11:13 | Comment(0) | 鉄道模型