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

2019年02月16日

DSbasicで運転支援機能

DSair2にS88を付けなくても、DSbasicで色々遊べます!BASICでこんな運転支援機能を付けてみました。

r2j TEST13cが必要です。

・スロット1(メータ画面の4つの機関車アドレスの左上部分のこと)の速度を監視
・速度が512(50%)を超えると、車内メロディが鳴る
・速度が100以下になると、駅アナウンスが鳴る

言い忘れていましたが、DSairのBASIC機能の特徴は以下です。たぶん、これは他のWi-Fiコマンドステーションではあり得ない機能なはずです。

・BASIC機能は並列処理のため、通常の運転操作と同時に動かせます。
・他のスマホで同じタイミングでBASIC処理しても問題無く動作します。

DSbasic_21.png

BASICプログラムは以下の通りです。whileは永久ループにして、速度をずっと監視するようにしました。
プログラムを止めるには、RUNボタンをもう一回押すと強制停止になります。

--------------------------------------------------
screen(7)

print "Announce supporter"
print "Addr:";getslotaddr(0)
print "Speed:";getslotspd(0)

state=0
currentspd = getslotspd(0)

while 1

sleep(1000)
if currentspd<>getslotspd(0) then
print "Current Speed is ";getslotspd(0)
currentspd = getslotspd(0)
end if

if state=0 then
if getslotspd(0)>512 then
state = 1
print "Next Station"
mp3play "JR車内メロディ_03.mp3"
end if
end if

if state=1 then
if getslotspd(0)<100 then
state = 0
print "Stop at Station"
mp3play "47-長谷川浩大 _ 氷川台B線.mp3"
end if
end if
wend
end
--------------------------------------------------

DSair2の奥の手が、このBASIC機能だと思ってます。他のコマンドステーションでは出来ないことの多くが、DSair2でできるようになります。次の正式版で、BASICを前面に出して、いろいろな遊び方を提案していきたいと考えております。ユーザーの作成したBASICのプログラムも、共有できる場をデジタル鉄道模型フォーラムなどで設けたいです。
posted by yaasan at 12:44 | Comment(0) | 鉄道模型

プログラミング学習のためのDCC&DSair2

2020年、小学校でプログラミングに関する授業を行う必要があると言うことで、教育界隈では、非常に大変な状況にあるとお聞きしております。この結論として、私がDCC&DSbasicが最適!と勧めることは断じてありません。私も長年、いろいろと相談に乗ってきて、先生方の苦労もよく理解しているつもりです。また、PCで色々動かす=プログラミング、というわけではないので、小学校のプログラミング授業というテーマは、そんな簡単で単純な話では片付きません。

商業的なプログラミング教育ビジネスを見ると、レゴのマインドストームと、Scratchあたりがメジャーかなと思います。前者は、プログラミングしてプレゼンするという、表現力を重視した内容に見えますし、後者ですと、ゲーム感覚で学べるという点に重きを置いているように思います。

個人的には、あんまりプログラマーという言い方が好きでは無いのですが(IT土方みたいな見方をされるケースもあるので)、ITエンジニアを育成する、という立場で言うと、どっちも、なんだかなーとは思います。表現力を鍛えるという面では方向性としては間違ってないのですが、そもそもの目的(プログラミング的思考をはぐくむ)に合っていないと思うわけです。

プログラミング的思考ってなんだ、と思うに、そもそもプログラミングが目的化してるのがおかしいと思います。プログラミングは、あくまでも表現手段に過ぎません。

・「鉄道模型を自動運転してリアルに動く姿を眺めながら、酒を飲みたい」
・「鉄道模型を運転するときに、アナウンスとかの操作を自動でやってもらいたい。自分は運転に集中したい」

という目的があったときに、「プログラミングして、解決しよう」と思うわけです。
プログラミング自体は、順序処理・分岐・繰り返しの3要素で成り立ってますから(コンピュータの心臓部の演算器の動きを見ればその機能しか無いのは自明ですが)、この3要素を使って、自分の行いたい動きを表現していくわけです。つまりは、プログラミング的思考とは、この3要素を駆使して表現する方法を学ぶ、と言うことになるのだと思います。

小学校のプログラミング授業では、実際のコーディングよりも、この3つのルールを使う、PCやスマートデバイスを使わないものの方が良いんじゃ無いかな、と思ったりもしてます。実際のコーディングは、アルファベットもきちんと習う、中学生以降の方が学びやすいのではないでしょうか。

DSbasicにおいては、大人向けやプログラミング知識のある若年層に向けて設計したものです。
S88デコーダがあれば自動運転、無くても運転状態を読み取って、アナウンスを流したり(まもなく〜駅)とか、停車して1分経つと自動で発車ベルが鳴るなど、運転支援を実現することができます。

さらにDSbasicが動作中でも、運転操作に制約はありません。また他のスマホが繋がっていても構いません。他のスマホがDSbasicを動かしていても構いません。

まだまだ、便利な関数は追加予定ですので、ただの自動運転だけでなく、自分だけのオリジナルの遊び方を自在に表現できる、表現手段として、ご活用頂ければ幸いです。それをSDカードに入れておけば、色々な人が気軽に、触れることが出来ます。

DSbasicは、そんな新しい表現手段を、DCCと鉄道模型というフィールドに提供して参ります。
posted by yaasan at 10:11 | Comment(0) | 鉄道模型

2019年02月15日

DCC同人誌をDesktopStationShopに追加

WebNuckyさんの頒布で、DCC同人誌2019春号を無償頒布されています。

当方でも、DCC同人誌を頒布開始することにしました。Nuckyさんと頒布条件は基本的に同じです。3月末の池袋のイベントのいくつかのブースでも無料で入手できます。Webで無理に入手頂く必要はありません。

2018秋号
2019春号

※DCC同人誌のみの購入は出来ません。何らかの商品(おわかりと思いますが安い商品がありますよね?)とセットでご購入下さい。(DCC同人誌だけを頒布すると送料分では赤字になるため)
※システム上、DCC同人誌のみの購入が可能ですが、強制的にキャンセルさせて頂きます。
※ネットオークション・個人売買サイトでの転売を禁止します。転売を見つけた方は、ご一報下さい。
※海外からの注文には、原則として無条件でDCC同人誌2019をお付けしております。

dcc_dojinshi2.jpg

dcc_dojinshi1.jpg
posted by yaasan at 19:06 | Comment(0) | 鉄道模型

DSair2 ファームウェア r2j TEST13

DSair2 r2j TEST13です。デバッグが完了次第、正式版として、DSair2 r2.1をリリースしたく、よろしくお願いします。

TEST13には、さらに追加のオーバーフローのバグが入っておりました。TEST13b(2/16 AM8:00更新)で修正済みです。

■ダウンロード

DSair2 wiki ファームウェアダウンロードページ

■変更内容

・バッファオーバーランのバグを修正(LEDが最初に光らない原因)

■今後のスケジュール

r2j TEST13のバグを確認して修正次第、r2.1として公開します。
12月リリースのr2hからのメジャーアップデートになります。
posted by yaasan at 08:30 | Comment(2) | 鉄道模型

2019年02月14日

DSbasicのプログラミング

DSair2の新機能であるDSbasicの使い方をご紹介します。
2019年2月14日現在、r2j TEST12で、ご利用頂けます。

DSbasicは、DSair2の裏機能であるS88-Nのコネクタを有効にすることで、絶大な効果を発揮します。
S88-Nは、欧州で標準の線路上の車両を検出するためのシステムで、メルクリンが開発したものがオープン化されて今に至っています。日本と欧州では在線検出システムとしてデファクトスタンダードになっています。日本でも通販でサードパーティーの機器が安価なキットで入手可能です。

DSair2でS88-Nを有効化するには基板に部品を追加する必要があります。基板上のCN7に、秋月電子で売っているRJ45コネクタ(7810-8P8C, C-00159)を別途購入し差し込んで半田付けし、ケースをくり抜くことで使用可能になります。元々、オープンにするつもりはありませんでしたが、私がBASICにハマってしまった以上、使わないわけにはいきませんし、自動運転用には必須のコネクタですので、今回、裏機能として公開させて頂くに至りました。

dsair2_fsmpl_test2.jpg

さて、DSbasicと銘打って開発を進めておりますが、BASICというプログラミング言語には、方言がいくつかあり、私はN88 BASICをよくいじってましたが、マイクロソフトのQuickBasicをいじっている方もいらっしゃったと思いますし、F-BASIC等、マニアックなものもあったと思います。癖がいろいろあり、人によっては、解釈が異なるかも知れません。

DSbasicで採用しているBASICも、JavaScriptに内部で変換処理を行っている都合上、本来のBASICよりもかなり拡張されている部分があります。基本的には、wwwbasicの文法・ルールをそのまま適用して頂きたいですが、参考にする実例やサンプルが無いと分からん、ということですので、基本的なものをここに紹介します。

■参考となるプログラム例

wwwbasicのページに、examplesが紹介されており、基本的には私もここを見ながら、プログラムを入力しています。

■おまじない

プログラムの最初に、
screen(7)
を書くと、文字が大きくなり見やすくなります。

■文字表示

print命令を使います。

print "HelloWorld!"

変数を足したいときは、単純に以下のようにすればOKです。iは数字とします。セミコロン(;)で区切ってもOKです。

print "Number is " + i

■変数

突然、使い始めて問題ありません。

xx=999
print xx

こんな感じで、好きに使えます。

■ for

繰り返しは、以下のようにforとnextで記述します。BASICでは一般的な書き方ですね。

--------------------
FOR i = 1 to 10
PRINT "Counting "; i
NEXT i
--------------------

■ if

ifは、「もし〜〜ならば、end ifまでを実行、という処理です。基本的には、S88センサのチェックや、ポイント状態(getacc)の確認で多用すると思います。

--------------------
if getacc(1)=1 then
if getacc(2)=0 then
print "route=A"
acc 2,1
acc 3,1
end if
end if
--------------------

■ while

whileは他のプログラミング言語で同様ですが、whileのコマンドに指定した式(以下ではs88get(1)=0)が、真(=成り立ってる状況)であれば、whileとwendの間の処理が、永遠に続くという命令です。
もし、s88get(1)=1になったら(つまりS88センサが車両を検出したとき)、この処理は終了し、wendの次の命令が動きます。

--------------------
while s88get(1)=0
print "RUN!"
sleep 1000
wend
--------------------

■goto

プロの世界では「絶対に使ってはいけない」と念を押されるGOTO文。趣味なら困る人も居ないですから、別に構わないですし、そもそも論としてアセンブラなんてGOTOの嵐ですからねえ・・・。
BASICはそれほど高級言語(値段が高い、という意味では無く、機械語に近いか遠いかの意味です)、という立ち位置ではないと個人的には思ってます。

--------------------
Again:
print "XXX"
GOTO Again
--------------------

■整数化

INT関数を使って、浮動小数点変数を整数に変換できます。

xx=INT(10.234)

■算術系

Math関数も、定義されていて使えます。

log, sin,cos,tan,atn,exp,abs,sqr,atan2

■大文字小文字などの変数型の変換処理

大文字へ変換は、ucase$
小文字へ変換は、lcase$
数値型から文字列型へ変換は、str$
文字列型から数値型へ変換は、val

■他にも

実はこのBASIC、何度も書いてますが、実行する際にBASIC→JavaScriptに変換してから実行するので、超高速です。また、JavaScriptの機能をまんま使えるので、かなりリッチなBASICになっています。

・関数を定義してコールできます
・構造体・クラスがBASIC的に使えます。
・配列も使えます
・型も定義できます
・マウス、キーボードの入力もできます(私はまだ理解できてませんが)

つまり、何でも出来てしまう最強BASICということです。これがスマホ上で動かせて、DCC車両も動かし放題、S88で在線検出もできる、ポイントも動かせる、というのがポイントです。
SDカードに作ったソフトをBASファイルで置いておいて、スマホ画面上で読み出して実行すれば、自動運転も、運転操作の自動支援も、一通りのことができます。

イベントスクリプトなんていう、非常に制限された環境から完全に解放されたのです。ぜひともDSair2で、DSbasicを駆使して、自分が納得できる鉄道模型の動かす環境を構築できればと思います。
posted by yaasan at 19:59 | Comment(1) | 鉄道模型