一定期間更新がないため広告を表示しています
JUGEMテーマ:鉄道模型
今度の鉄道模型市で参考展示予定のC59です。蒸気サウンドをアピールするのがメインと考えていたので、以前作ったDSシールドAUTOスケッチで走行はさせないで(動輪だけフリーにする)自動運転から音だけ出す展示方法にする予定ですが、フジガヤさんがキハ58にSmileDecoder_R6nを3基搭載した(打倒カンダム-ジットストリームアタック仕様⁉)往復自動運転をするみたいですので、往復運転用のレールをお借りしてC59を走行させる自動運転ができないか検討してみました。
◆周回レール上で普通に走らせた動画です。
動画の通り、C59のAUTOスケッチのDEMO版だと往路でも1週半分は走行距離が必要みたいですので、どう考えても会場でレールを敷設できるスペースの中に収まりそうにありません。
とゆうことで、あっさりと元の鞘に収まってサウンド付きディスプレイでいこうと思います。ただ短いレールを敷いただけのショボイ展示ではC59が台無しなので、急ごしらえですが簡易的な展示台を作りました。
◆自動運転サウンド用に作った展示台に59を載せてみました
これでも目の肥えたモデラーの方からするとボーダラインギリギリで危ないクオリティーかと思いますが、短時間かつ少ない予算で制作したので、ご容赦していただきたいと思います。見るに堪えない方は目をつぶって頂いて、MP3デコーダの奏でる蒸気サウンドを耳で確認していただければと思います。
JUGEMテーマ:鉄道
最近、大小サイズのSLサウンドにドップリと漬かっていますが、サウンドを楽しむのに広いコースで豪快にSLを走らせるのが最もベストではあります。ですがウサギ小屋生活のMECYに広大なコースを持つ事などは夢のまた夢で、せいぜいレンタルコース等を拝借して走らせるのが関の山です。しかしここは視点を変え工夫次第で限られたスペースでもサウンドは楽しめるのではないか?と思っていました。そこで今回考えたのは自動運転にして、操作もおろか何も手を触れす、永遠とサウンドと動輪の動きだけを見て聞いて楽しむとゆうちょっとマニアック度が濃い楽しみ方をしてみます。
自動運転なのでDiskTopstainonの自動運転スクリプトを組んでやるのが王道だと思いますが、今回はDSシールドのスケッチの中にDSshieldAUTOとゆう自動運転制御をユーザが書き込めるエリアが用意されているスケッチが公開されているので、Wiikのチュートリアルを参考に半日程唸っておりました。
題材は以前サウンド化したHoゲージのC59です。SLサウンドはフジガヤさんが初版リリースしたベースのMP3V5向けのものに、MECYがあれこれいじりこんで、MP3の音源をスロットルワークで鳴らしまくる仕込みを入れています。これだけでも普通にDCCコントローラで動かす分にはSLサウンドを十分楽しめる感じですが、今回は一度電源をONをしたらあとは一切触らないで見ているだけで楽しめるところまでDSシールドのスケッチを作りこみます。
自動運転のモードは単純です。「発車→加速→しばらく定速→減速→しばらく停車→バックで発車→繰り返し」 までをひたすらループさせるだけです。この一連の運転パターンの中に汽笛を鳴らすタイミングを仕込んだり、お試しとして絶気運転呼ばれる状態を再現させるため停止直前でF3でドラフト音を一旦止めて、機関車が滑走しているかの様なモードも付け加えてみました。
スケッチの掛かり始めでは「な〜に20行くらいの追加で出来きちゃうんじゃないか?」と思いましたが、途中からあれこれ細かい動作の調整や、運転モードの追加などを入れいていって気が付いたら書いたコードが200行位に膨れ上がっていました.
自動運転のスケッチは以下です、長いので前進部分のみの抜粋です。後進も同じ感じです)
/*****************************************************************/
/* User Program Area */
/*****************************************************************/
void user_init(void)
{
pinMode(8, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
digitalWrite(8, HIGH);//内部プルアップON
digitalWrite(11, HIGH);//内部プルアップON
digitalWrite(12, HIGH);//内部プルアップON
//F0 Light ON
CMD_LocFunction(ADDR_DCC + 3, 0, 1);
//SPEED 0
CMD_LocSpeed(ADDR_DCC + 3, 0);
//POWER ON
// CMD_Power(1);
// Serial.println("Power On");
}
void user_program(void)
{
static byte sButtonState = 1;
CMD_Wait(20000);
//ボタンが押されたとき、digitalReadは0を返す。押さないときは1を返す。
if( digitalRead(8) == 0)
{
//POWER ON
CMD_Power(1);
Serial.println("Power On");
}
if( digitalRead(8) == 1)
{
Serial.println("Button 1");
sButtonState = 1;
CMD_Wait(100);
/* 前進 */
//FWD
CMD_LocDirection(ADDR_DCC + 3, 0);
CMD_Wait(2000);
//警笛
CMD_LocFunction(ADDR_DCC + 3, 11, 1);
CMD_Wait(7000);
//CMD_LocFunction(ADDR_DCC + 3, 11, 0);
//CMD_Wait(2000);
//繰り返し。車両のスピードを変える(加速)
for( int i = 0; i < 170; i++)
{
CMD_LocSpeed(ADDR_DCC + 3, i * 4 );
CMD_Wait(100);
}
//急加速
//CMD_LocSpeed(ADDR_DCC + 3, 100);
//定速時間
CMD_Wait(20000); //定速時間20秒
//警笛
CMD_LocFunction(ADDR_DCC + 3, 11, 0);
CMD_Wait(2000);
//定速時間
CMD_Wait(20000); //定速時間20秒
//繰り返し。車両のスピードを変える(減速1)
for( int i = 170; i > 32; i--)
{
CMD_LocSpeed(ADDR_DCC + 3, i * 4 );
CMD_Wait(100);
}
//絶気モード
CMD_LocFunction(ADDR_DCC + 3, 3, 1);
CMD_Wait(2000);
//繰り返し。車両のスピードを変える(減速2)
for( int i = 32; i > 0; i--)
{
CMD_LocSpeed(ADDR_DCC + 3, i * 4 );
CMD_Wait(100);
}
//停車
CMD_LocSpeed(ADDR_DCC + 3, 0);
CMD_Wait(2000);
//絶気モード解除
CMD_LocFunction(ADDR_DCC + 3, 3, 0);
CMD_Wait(2000);
CMD_Wait(40000); //停止時間40秒
/* 後進 */
//REV
CMD_LocDirection(ADDR_DCC + 3, 1);
CMD_Wait(2000);
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
後進処理も同様の繰り返し
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
Wiikチュートリアルのサンプルコードは車両アドレスがMM2に対応させて書かれていましたが、ここをDCC用に置き換えてます。アドレスはデフォルト3にしています。
下記が自動運転の大まかな動きです。基本、前進/後進を交互に繰り返します。
「汽笛→発車(前進)→加速/汽笛→しばらく定速/汽笛(20秒)→減速/汽笛→→絶気→しばらく停車(40秒)
→汽笛→バックで発車→→加速/汽笛→しばらく定速/汽笛(20秒)→減速/汽笛→絶気→しばらく停車(40秒)
・・・繰り返し」
スケッチの冒頭で本当はタクトスイッチ「押す/押さない」で電源をON/OFFにする様にしたかったのですが、上手く切り替わらなかったので、母艦のArduinoのリセットボタンを押してから、直ぐに長押しで20秒位タクトスイッチを押して線路へ電源供給が入る様にしました。また自動運転を止める場合にも母艦のArduinoのリセットボタンを押すと機能が停止する形にしています。これは厳密なOFFの機能ではありません。(線路電源がONに入らないだけで、見かけ上機能は停止してますが、多分自動運転のスケッチの処理は裏で動き続けている状態です)つまり一度、自動運転を始めるとリセットかACアダプターを抜かない限り永遠に動き続ける無限ループで今時はやりのスマートな自動運転とは言い難い、車両かデコーダのどちらかが潰れるまで動き続けるアリ地獄の様なDSシールドのスケッチが出来上がりました。
少し長いですがDSシールド自動運転の動画をご覧ください。(13分弱くらいです)
◇前にも見たことのあるアングルですが、C59のサウンドは少し変えています。
スタートから止めるまで一切手を触れず、放置してお茶なんぞ飲んでましたが、最後まで止まらずに動き続けていました。
DSシールドのAUTOスケッチによる自動運転ですが、PC要らずで単体でシンプルに動かせる点が利点です。プログラムの初心者でも自動運転用に用意された指令コマンドコードを動かしたい順に素直に書いて行けば、直ぐに動かせるコードが出来ると思います。プログラム言語の構文もある程度使える様ですので、慣れている人なら結構複雑な動きも組めるかもしれません。ただデバックがやりずらいので、少し複雑な処理になると机上である程度設計してから掛からないとハマルかもしれません。
簡単なGo/Stop/Goの自動運転ですが、デモ用にnon Stopで動いてくれたので、その点は満足です。
スケッチは有志のページに貼っておきます。
mp3付はファイルサイズが大きいのでこちら
今回も自動運転ネタです。自動運転とはいってもDCCデコーダを搭載していない車両で簡易的に自動運転をしてみました。DCC落ちだと何か片手間な感じはしますが、DiskTopstaionならTom○XのT〇NSなんか必要ない!DCC化していない車両でも自動運転は出来るんだぞ!的な話です。
早速今回のレシピです。用意するものはDCCデコーダを載せていないノーマルな車両とDSシールドとフジガヤさんのSS88Detecterです。DSシールドはAnalogスケッチを書き込んであります。DSシールドがAnalogスケッチということは、これでDCCデコーダなしのノーマルな車両でもDesktopstationからコントロールできます。これにプラスしてフジガヤさんのSS88Detecterの在線検知と自動運転スクリプトを連動させることでアナログ車両でも自動でおまかせ運転ができちゃうんてす。なんと画期的な事でしょう!もうTom○XのT〇NSなんて高級なものを買わなくても、DCC/アナログどんな車両でもDCC電子工作連合のアイテムで全てをまかなえちゃえます。
ちなみに自動運転のレイアウトとスクリプトは前回猫屋線で自動運転を行ったものをそのまま流用しました。変えたところは自動運転スクリプトで車両アドレス指定しますがAnalog車両用にアドレス3に合わせただけです。
◇DCCの自動運転と何ら変わりない動きでした。
DSシールドのAnalogスケッチなら簡易的な自動運転もどきは出来る様になりました。ただDCCではないので、2列車同時制御やサウンドは出ません。やはり本格的な自動運転やギミックを楽しむならばDCCが最適解ではないでしょうか。
JUGEMテーマ:鉄道模型
すでに七草かゆを食べる頃をすぎてしまいましたが、みなさま明けましておめでとうございます。
さて、なごや電鉄さまの「SmileDecoderR6n」が正式にリリースされました。そこで今回はデコーダにMECYのオレ改スケッチでどれくらい音や動作が安定性しているかみてようと思います。メインはディ−ゼルのスケッチですが、電車の吊りかけ音でもやってみました。
◇SmileDecoderR6nのマスプロ版です、アンプパワー調整用の可変抵抗がついています。
正式リリース版は左角に可変抵抗が付いた他は試作版とほとんど差はなさそうです。この可変抵抗が付いたおかげで、アンプパワー抑制のためのスピーカへの抵抗を挟む必要がなくなりました。可変抵抗はなごや電鉄さまが丁度いいころ合いにセットしているのであまり変えない方がよさそうです。反時計回りにまわすとアンプパワーが強くなるみたいですが、音は割れてきます。
またデフォルトのスケッチはEL版が書き込まていますが、MECYで手を入れたディ−ゼルのスケッチに書き換えて動作を確認してみようしたところ、エンジン音のレスポンスを速くする調整でCV52を8からMAXの40にすると改造した部分で音程が不安定になるバグを見つけてしまいました。なんと!エンジン音を速くする設定ではF5キーの中速ディ−ゼル音がバラツキとゆう状態になり、年末にこの対策に半日を費やしてしまいました。
なんとか中速ディ−ゼル音のバラツキを抑えるスケッチはできましたが、疲れてしまいそのままお正月休みになりました。
年が明けて、神社詣出で厄をはらい気を取り直して自動運転の準備にかかりました。連続で動作確認するには自動運転に限ります。一度仕掛けがうまくゆけばそのまま放っておくだけです。ただ仕込みが自分のイメージと違う動きをすると意外とハマリます。特に今回はセンサー1個のみとゆうのセコセコな装備で引き込み線の往復運転をやろうとしたので発想自体に無理があったのかもしれません。始めは1個のセンサーの2度踏みの誤検知の始末が上手くできませんでした。試行錯誤の結果、引き込み線付きの往復自動運転のスクリプトは下記になりました。
--------駅発車→2周→引き返し
DESKTOPSTATION,SCRIPT,2013
LABEL,START1,,0
WAIT,50,,0
WAITIF,FLAG.1==0,,0
FUNCTION,49162,0,1
DIRECTION,49162,1,0
SPEED,49162,250,70
WAIT,80,,0
FUNCTION,49162,5,1
WAIT,80,,0
FUNCTION,49162,6,1
WAIT,150,,0
SETFLAG,1,1,0
SPEED,49162,0,50
WAIT,60,,0
DIRECTION,49162,2,0
FUNCTION,49162,5,0
FUNCTION,49162,6,0
FUNCTION,49162,4,1
SPEED,49162,250,70
WAIT,50,,0
EXIT,,,0
---------駅進入時のフラグセット
DESKTOPSTATION,SCRIPT,2013
SETFLAG,1,2,0
EXIT,,,0
---------駅折り返し処理
DESKTOPSTATION,SCRIPT,2013
WAITIF,FLAG.1==2,,0
SPEED,49162,0,5
WAIT,70,,0
DIRECTION,49162,1,0
SPEED,49162,250,70
FUNCTION,49162,4,0
SETFLAG,1,0,0
JUMPRUN,START1,49162,0
EXIT,,,0
もっとスマートなスクリプトの書き方もあるかと思いますが、取り合えず動いたのでこれで自動運転をしてみました。
車両の動きとしては、引き込み線の駅を発車して2周程走って、また引き込み線の駅に戻ります。ポイントは自動制御はせずに引き込み線側に向けて固定にしてます。2周走る間にF4,F5,F6を叩いて、ディ−ゼル音の抑揚具合を確かめます。
特に苦労したのは駅に進入して折り返しをする際、センサーを2回通過するので、駅進入のタイミングでセンサーフラグを更新し駅折り返し処理の開始トリガーとして、センサーの誤検知を防ぐ様にしてみました。
これで連続動作する様になったので永遠と2h連続程で走らせました。
◇今年から多少ビジュアルにも気を配ってみようと思い、芝生を生やしてみました。(100円ショップのお手軽人口芝です)
自動運転の仕込みに手間取りましたが、スクリプトのシナリオさえ決まれば何時間でも走り続けていけそうな感じでした。「SmileDecoderR6n」熱は多少は持ちますが、動かなくなったり暴走などはおきませんでした。もちろんサウンドも想定した通り、エンジン音のFキーのコントロールはキチンと動いてくれました。
最後のおまけですが、ELスケッチでの吊りかけ音も同様の自動運転で走らせてみました。
「SmileDecoderR6n」の爆音アンプなのでかなりやかましい音になりました。もう少し音を絞った方がよかったかもしれません。
なごや電鉄さまの「SmileDecoderR6n」2時間連続で爆音サウンドを出しつつ走ってもビクともしませんでした。完成度、信頼性は十分ではないかと思います。
-------------------------------
追記 2018/01/08
今回デモで使用したお試し版のディーゼルスケッチです。
ご興味ある方はこちらからダウンロード下さい。
(C) 2024 ブログ JUGEM Some Rights Reserved.